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
- CompositeControl.cs
- wmiprovider.cs
- FtpRequestCacheValidator.cs
- UnaryExpression.cs
- SecureConversationServiceCredential.cs
- DataServiceExpressionVisitor.cs
- ContentElementCollection.cs
- StrokeRenderer.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- isolationinterop.cs
- ImageDrawing.cs
- KeyManager.cs
- RadialGradientBrush.cs
- EncryptedReference.cs
- WmlCalendarAdapter.cs
- OdbcDataReader.cs
- ParameterBuilder.cs
- AutomationAttributeInfo.cs
- ExcludePathInfo.cs
- ComPlusTraceRecord.cs
- DashStyle.cs
- AnonymousIdentificationModule.cs
- SrgsSubset.cs
- ClockController.cs
- SqlBulkCopyColumnMapping.cs
- CuspData.cs
- SecurityManager.cs
- Event.cs
- PaperSize.cs
- AttributeUsageAttribute.cs
- TextTreeNode.cs
- BypassElement.cs
- CornerRadius.cs
- RootBuilder.cs
- XmlNodeComparer.cs
- NonSerializedAttribute.cs
- TripleDESCryptoServiceProvider.cs
- AnimationClock.cs
- SubpageParagraph.cs
- WindowsListViewSubItem.cs
- DesignerAutoFormatStyle.cs
- PersonalizableAttribute.cs
- DBConnectionString.cs
- SecurityImpersonationBehavior.cs
- LabelEditEvent.cs
- HtmlElementErrorEventArgs.cs
- EditorPart.cs
- TraceSwitch.cs
- VisualBrush.cs
- OutputCacheSettingsSection.cs
- DriveInfo.cs
- WebServiceErrorEvent.cs
- DataGridViewComboBoxEditingControl.cs
- TextTreeObjectNode.cs
- ObjectTag.cs
- FunctionMappingTranslator.cs
- XmlSchemaInfo.cs
- UnitySerializationHolder.cs
- CollaborationHelperFunctions.cs
- WpfGeneratedKnownTypes.cs
- MetafileHeader.cs
- regiisutil.cs
- PriorityItem.cs
- DefaultProxySection.cs
- UmAlQuraCalendar.cs
- EditingCoordinator.cs
- UnaryOperationBinder.cs
- StoragePropertyMapping.cs
- SmiRecordBuffer.cs
- CookieParameter.cs
- SafeFileHandle.cs
- XhtmlBasicImageAdapter.cs
- NGCUIElementCollectionSerializerAsync.cs
- httpapplicationstate.cs
- WorkflowInstance.cs
- MsmqProcessProtocolHandler.cs
- GridViewRowCollection.cs
- PointCollection.cs
- EventHandlersStore.cs
- CompositeTypefaceMetrics.cs
- XNodeNavigator.cs
- ControlPropertyNameConverter.cs
- BitmapEffectRenderDataResource.cs
- RegexMatch.cs
- SchemaImporterExtension.cs
- ParentQuery.cs
- ClientSettingsProvider.cs
- WindowsImpersonationContext.cs
- QilGenerator.cs
- HandleCollector.cs
- TextTreeDeleteContentUndoUnit.cs
- SolidColorBrush.cs
- MouseButton.cs
- XmlChoiceIdentifierAttribute.cs
- WindowsTokenRoleProvider.cs
- CheckBox.cs
- XmlSchemaSimpleTypeRestriction.cs
- FilterableAttribute.cs
- PriorityItem.cs
- DataGridViewCellConverter.cs