Конфигурация клиента
Конфигурацию клиента Windows Communication Foundation (WCF) можно использовать для задания адреса, привязки, поведения и контракта — основополагающих свойств конечной точки клиента, которая используется клиентом для подключения к конечным точкам службы. Элемент <client> содержит элемент <endpoint>, атрибуты которого используются для настройки основополагающих свойств конечной точки. Эти атрибуты обсуждаются в подразделе "Настройка конечных точек" данного раздела.
Элемент <endpoint> также содержит элемент <metadata>, который используется для задания параметров импорта и экспорта метаданных, элемент <headers>, содержащий коллекцию пользовательских адресных заголовков, и элемент <identity>, обеспечивающий проверку подлинности конечной точки другими конечными точками, обменивающимися с ней сообщениями. Элементы <headers> и <identity> входят в состав EndpointAddress и обсуждаются в разделе Адреса конечных точек. Ссылки на разделы, в которых рассматривается использование расширений метаданных, приведены в подразделе "Настройка метаданных" данного раздела.
Настройка конечных точек
Конфигурация клиента разрабатывается таким образом, чтобы позволить клиенту задавать одну или несколько конечных точек, каждая со своим именем, адресом и контрактом, ссылающихся на элементы <bindings> и <behaviors> в конфигурации клиента, которые должны использоваться для настройки этих конечных точек. Файл конфигурации клиента должен называться "App.config", так как это имя ожидается средой выполнения WCF. В следующем примере показан файл конфигурации клиента.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<client>
<endpoint
name="endpoint1"
address="https://localhost/ServiceModelSamples/service.svc"
binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IHello"
behaviorConfiguration="IHello_Behavior"
contract="IHello" >
<metadata>
<wsdlImporters>
<extension
type="Microsoft.ServiceModel.Samples.WsdlDocumentationImporter, WsdlDocumentation"/>
</wsdlImporters>
</metadata>
<identity>
<servicePrincipalName value="host/localhost" />
</identity>
</endpoint>
// Add another endpoint by adding another <endpoint> element.
<endpoint
name="endpoint2">
//Configure another endpoint here.
</endpoint>
</client>
//The bindings section references by the bindingConfiguration endpoint attribute.
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IHello"
bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard">
<readerQuotas maxDepth="32"/>
<reliableSession ordered="true"
enabled="false" />
<security mode="Message">
//Security settings go here.
</security>
</binding>
<binding name="Another Binding"
//Configure this binding here.
</binding>
</wsHttpBinding>
</bindings>
//The behavior section references by the behaviorConfiguration endpoint attribute.
<behaviors>
<endpointBehaviors>
<behavior name=" IHello_Behavior ">
<clientVia />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Необязательный атрибут name уникальным образом идентифицирует конечную точку для данного контракта. Он используется методом ChannelFactory или ClientBase для задания целевой конечной точки в конфигурации клиента, которая должна быть загружена при создании канала к службе. Предусмотрено подстановочное имя "*" конечной точки в конфигурации, которое указывает методу ApplyConfiguration, что следует загрузить любую конфигурацию конечной точки из файла, при условии, что имеется ровно одна конфигурация, а в противном случае создать исключение. Если этот атрибут опущен, соответствующая конечная точка используется как конечная точка по умолчанию, связанная с заданным типом контракта. Значением по умолчанию для атрибута name является пустая строка, соответствие для которой проверяется так же, как и для любого другого имени.
С каждой конечной точкой связан адрес, который используется для поиска и идентификации этой конечной точки. Атрибут address может использоваться для указания URL-адреса, задающего расположение конечной точки. Однако адрес для конечной точки службы может также быть задан в коде путем создания универсального кода ресурса (URI), и он добавляется в ServiceHost с помощью одного из методов AddServiceEndpoint. Дополнительные сведения см. в разделе Адреса конечных точек. Как указано во введении, элементы <headers> и <identity> являются частью EndpointAddress и обсуждаются также в разделе Адреса конечных точек.
Атрибут binding задает тип привязки, использование которого ожидается в конечной точке при подключении к службе. Для того чтобы на тип можно было ссылаться, он должен иметь зарегистрированный раздел конфигурации. В предыдущем примере это раздел <wsHttpBinding>, который задает, что конечная точка использует привязку WSHttpBinding. Однако могут существовать несколько привязок указанного типа, которые могут использоваться конечной точкой. Каждая из них имеет собственный элемент <binding> в элементе типа (привязки). Для различения привязок одного типа служит атрибут bindingconfiguration. Его значение соответствует атрибуту name элемента <binding>. Дополнительные сведения порядке настройки привязки клиента с помощью конфигурации см. в разделе Как указывать привязки клиента в конфигурации.
Атрибут behaviorConfiguration служит для задания того, какая привязка <behavior> из <endpointBehaviors> должна использоваться конечной точкой. Его значение соответствует атрибуту name элемента <behavior>. Пример использования конфигурации для задания поведений клиента см. в разделе Настройка поведений клиентов.
Атрибут contract задает контракт, который предоставляет данная конечная точка. Это значение соответствует свойству ConfigurationName атрибута ServiceContractAttribute. Значение по умолчанию — это полное имя типа класса, реализующего службу.
Настройка метаданных
Элемент <metadata> служит для задания параметров, используемых для регистрации расширений импорта метаданных. Дополнительные сведения расширении системы метаданных см. в разделе Расширение системы метаданных.
См. также
Основные понятия
Конечные точки: адреса, привязки и контракты
Настройка поведений клиентов