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
- ContainsSearchOperator.cs
- SiteIdentityPermission.cs
- OleServicesContext.cs
- Ppl.cs
- WebPartConnectVerb.cs
- Bezier.cs
- FatalException.cs
- MasterPageParser.cs
- ContentPresenter.cs
- Variant.cs
- Dump.cs
- NullRuntimeConfig.cs
- PerformanceCountersBase.cs
- VBIdentifierNameEditor.cs
- BaseServiceProvider.cs
- TextBoxAutoCompleteSourceConverter.cs
- ProtocolsSection.cs
- SqlUserDefinedTypeAttribute.cs
- ClientEndpointLoader.cs
- RestHandler.cs
- ThreadInterruptedException.cs
- StateInitialization.cs
- DateTime.cs
- CroppedBitmap.cs
- DynamicObjectAccessor.cs
- DataGridViewCellStyle.cs
- XmlQualifiedNameTest.cs
- XamlRtfConverter.cs
- ScriptingJsonSerializationSection.cs
- ParseNumbers.cs
- PhysicalAddress.cs
- AnnotationResource.cs
- OleDbMetaDataFactory.cs
- ImageUrlEditor.cs
- StorageAssociationSetMapping.cs
- ReadOnlyCollection.cs
- Function.cs
- TypeDelegator.cs
- OleDbSchemaGuid.cs
- TableItemPattern.cs
- MimeObjectFactory.cs
- ExpressionVisitor.cs
- RegexInterpreter.cs
- EditCommandColumn.cs
- InputChannelBinder.cs
- WebPartConnectVerb.cs
- _AuthenticationState.cs
- SafeNativeMethods.cs
- Bold.cs
- UriSectionData.cs
- SettingsPropertyValue.cs
- AnimationStorage.cs
- GridViewColumnHeader.cs
- GenericUriParser.cs
- SecurityException.cs
- DBCSCodePageEncoding.cs
- ScrollItemPattern.cs
- PlaceHolder.cs
- BaseParaClient.cs
- HMACRIPEMD160.cs
- XmlSchemaGroupRef.cs
- Rect3D.cs
- Parser.cs
- ActivationWorker.cs
- SizeKeyFrameCollection.cs
- StyleModeStack.cs
- HtmlInputPassword.cs
- QilReference.cs
- StylusCollection.cs
- TextProviderWrapper.cs
- AutoGeneratedField.cs
- GenericPrincipal.cs
- FlowPosition.cs
- KeyedCollection.cs
- ConfigurationStrings.cs
- FrugalMap.cs
- TableLayoutPanelCellPosition.cs
- ObjectCloneHelper.cs
- PropertyGeneratedEventArgs.cs
- ProtocolsSection.cs
- XsltSettings.cs
- ServiceCredentials.cs
- ToolStripItem.cs
- SByte.cs
- TypeForwardedToAttribute.cs
- XmlReturnWriter.cs
- TitleStyle.cs
- XmlDataSource.cs
- SingleAnimationBase.cs
- TextServicesCompartment.cs
- ContainerFilterService.cs
- DefaultHttpHandler.cs
- ComponentDispatcherThread.cs
- PeerInputChannel.cs
- VisualStyleRenderer.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- SplineQuaternionKeyFrame.cs
- PixelFormat.cs
- DataBindingList.cs
- StylusButton.cs