Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Description / ConfigWriter.cs / 1 / ConfigWriter.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Description { using System; using System.ServiceModel.Channels; using System.Configuration; using System.Collections.Generic; using System.ServiceModel; using System.ServiceModel.Configuration; using System.ServiceModel.Diagnostics; internal class ConfigWriter { readonly DictionarybindingTable; readonly BindingsSection bindingsSection; readonly ChannelEndpointElementCollection channels; readonly Configuration config; internal ConfigWriter(Configuration configuration) { this.bindingTable = new Dictionary (); this.bindingsSection = BindingsSection.GetSection(configuration); ServiceModelSectionGroup serviceModelSectionGroup = ServiceModelSectionGroup.GetSectionGroup(configuration); this.channels = serviceModelSectionGroup.Client.Endpoints; this.config = configuration; } internal ChannelEndpointElement WriteChannelDescription(ServiceEndpoint endpoint, string typeName) { ChannelEndpointElement channelElement = null; // Create Binding BindingDictionaryValue bindingDV = CreateBindingConfig(endpoint.Binding); channelElement = new ChannelEndpointElement(endpoint.Address, typeName); // [....]: review: Use decoded form to preserve the user-given friendly name, however, beacuse our Encoding algorithm // does not touch ASCII names, a name that looks like encoded name will not roundtrip(Example: "_x002C_" will turned into ",") channelElement.Name = NamingHelper.GetUniqueName(NamingHelper.CodeName(endpoint.Name), this.CheckIfChannelNameInUse, null); channelElement.BindingConfiguration = bindingDV.BindingName; channelElement.Binding = bindingDV.BindingSectionName; channels.Add(channelElement); return channelElement; } internal void WriteBinding(Binding binding, out string bindingSectionName, out string configurationName) { BindingDictionaryValue result = CreateBindingConfig(binding); configurationName = result.BindingName; bindingSectionName = result.BindingSectionName; } BindingDictionaryValue CreateBindingConfig(Binding binding) { BindingDictionaryValue bindingDV; if (!bindingTable.TryGetValue(binding, out bindingDV)) { // [....]: review: Use decoded form to preserve the user-given friendly name, however, beacuse our Encoding algorithm // does not touch ASCII names, a name that looks like encoded name will not roundtrip(Example: "_x002C_" will turned into ",") string bindingName = NamingHelper.GetUniqueName(NamingHelper.CodeName(binding.Name), this.CheckIfBindingNameInUse, null); string bindingSectionName; if (!BindingsSection.TryAdd(bindingName, binding, config, out bindingSectionName)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.ConfigBindingCannotBeConfigured), "endpoint.Binding")); bindingDV = new BindingDictionaryValue(bindingName, bindingSectionName); bindingTable.Add(binding, bindingDV); } return bindingDV; } bool CheckIfBindingNameInUse(string name, object nameCollection) { foreach (BindingCollectionElement bindingCollectionElement in this.bindingsSection.BindingCollections) if (bindingCollectionElement.ContainsKey(name)) return true; return false; } bool CheckIfChannelNameInUse(string name, object namingCollection) { foreach (ChannelEndpointElement element in this.channels) if (element.Name == name) return true; return false; } sealed class BindingDictionaryValue { public readonly string BindingName; public readonly string BindingSectionName; public BindingDictionaryValue(string bindingName, string bindingSectionName) { this.BindingName = bindingName; this.BindingSectionName = bindingSectionName; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Win32.cs
- ParentQuery.cs
- ObjectManager.cs
- FileStream.cs
- OleDbPropertySetGuid.cs
- HandleRef.cs
- AccessibleObject.cs
- IItemContainerGenerator.cs
- MediaContextNotificationWindow.cs
- SqlProvider.cs
- TemplateInstanceAttribute.cs
- CaseInsensitiveHashCodeProvider.cs
- FormsIdentity.cs
- GroupedContextMenuStrip.cs
- BamlBinaryWriter.cs
- ExportOptions.cs
- CodeDirectoryCompiler.cs
- MessageUtil.cs
- ArgIterator.cs
- DbDataRecord.cs
- EventLogConfiguration.cs
- SafeHandles.cs
- LicenseContext.cs
- OracleParameter.cs
- UrlAuthFailedErrorFormatter.cs
- OutputCacheProfileCollection.cs
- TypeKeyValue.cs
- TextElementAutomationPeer.cs
- BoundsDrawingContextWalker.cs
- ScaleTransform3D.cs
- TaskExceptionHolder.cs
- BitmapEffect.cs
- CodeGen.cs
- CompilerParameters.cs
- IssuanceLicense.cs
- StylusPointPropertyInfo.cs
- ZipPackagePart.cs
- DataSourceCache.cs
- DrawingGroup.cs
- Maps.cs
- ServiceEndpoint.cs
- ExpressionEditorAttribute.cs
- TransactionFilter.cs
- SymDocumentType.cs
- SingleSelectRootGridEntry.cs
- ServiceDescriptionSerializer.cs
- CodeVariableReferenceExpression.cs
- ArrayList.cs
- DesignerVerbCollection.cs
- Debug.cs
- CompoundFileReference.cs
- MessageBox.cs
- ValidationSummary.cs
- SinglePageViewer.cs
- ColumnTypeConverter.cs
- FlowPosition.cs
- While.cs
- DataServiceResponse.cs
- TypeViewSchema.cs
- SerializationException.cs
- TextBoxView.cs
- SoundPlayer.cs
- DoubleMinMaxAggregationOperator.cs
- RuntimeHelpers.cs
- DesignerAttribute.cs
- PolyQuadraticBezierSegment.cs
- CharKeyFrameCollection.cs
- DependentList.cs
- PublishLicense.cs
- MsmqIntegrationReceiveParameters.cs
- ComponentChangingEvent.cs
- BrowserTree.cs
- HostedElements.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- HebrewCalendar.cs
- InsufficientMemoryException.cs
- NamespaceListProperty.cs
- BitmapImage.cs
- hebrewshape.cs
- EventWaitHandleSecurity.cs
- AssemblyHelper.cs
- UIHelper.cs
- MulticastIPAddressInformationCollection.cs
- BitmapEffectGroup.cs
- ResourceDictionaryCollection.cs
- OneToOneMappingSerializer.cs
- ApplicationSettingsBase.cs
- RegistrySecurity.cs
- SystemFonts.cs
- ExtensionWindow.cs
- CustomExpressionEventArgs.cs
- TypeForwardedFromAttribute.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- AlphabetConverter.cs
- OleDbConnectionInternal.cs
- ConfigXmlAttribute.cs
- SecurityRuntime.cs
- MulticastOption.cs
- DrawingImage.cs
- Expression.cs