Поделиться через


Конфигурация клиента

Конфигурацию клиента 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> служит для задания параметров, используемых для регистрации расширений импорта метаданных. Дополнительные сведения расширении системы метаданных см. в разделе Расширение системы метаданных.

См. также

Основные понятия

Конечные точки: адреса, привязки и контракты
Настройка поведений клиентов