Configuração do cliente

Você pode usar a configuração do cliente WCF (Windows Communication Foundation) para especificar o endereço, a associação, o comportamento e o contrato, as propriedades "ABC" do ponto de extremidade do cliente, que os clientes usam para se conectar aos pontos de extremidade de serviço. O elemento <cliente> tem um elemento de <ponto de extremidade> cujos atributos são usados para configurar os ABCs do ponto de extremidade. Esses atributos são discutidos na seção Configurando pontos de extremidade.

O elemento de <ponto de extremidade> também contém um elemento de <metadados> que é usado para especificar configurações para importar e exportar metadados, um elemento de <cabeçalhos> que contém uma coleção de cabeçalhos de endereço personalizados e um elemento de <identidade> que permite a autenticação de um ponto de extremidade por outros pontos de extremidade trocando mensagens com ele. Os elementos de <cabeçalho> e de <identidade> fazem parte de EndpointAddress e são discutidos no artigo Endereços. Links para tópicos que explicam o uso de extensões de metadados são fornecidos na seção Configurando metadados.

Configurando pontos de extremidades

A configuração do cliente foi projetada para permitir que o cliente especifique um ou mais pontos de extremidade, cada um com seu próprio nome, endereço e contrato, com cada um fazendo referência aos elementos de <associações> e <comportamentos> na configuração do cliente a serem usados para configurar esse ponto de extremidade. O arquivo de configuração do cliente deve ser chamado de "App.config" porque esse é o nome esperado pelo runtime do WCF. O exemplo a seguir mostra um arquivo de configuração do cliente.

<?xml version="1.0" encoding="utf-8"?>  
<configuration>  
  <system.serviceModel>  
        <client>  
          <endpoint  
            name="endpoint1"  
            address="http://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>  

O atributo name opcional identifica exclusivamente um ponto de extremidade de um determinado contrato. Ele é usado pelo ChannelFactory<TChannel> ou pelo ClientBase<TChannel> para especificar qual ponto de extremidade na configuração do cliente está sendo direcionado e precisa ser carregado quando um canal é criado para o serviço. Um nome de configuração de ponto de extremidade curinga "*" está disponível e indica ao método ApplyConfiguration que ele deve carregar qualquer configuração de ponto de extremidade no arquivo, desde que haja precisamente uma disponível e, de outra forma, gere uma exceção. Se esse atributo for omitido, o ponto de extremidade correspondente será usado como o padrão associado ao tipo de contrato especificado. O valor padrão do atributo name é uma cadeia de caracteres vazia que é correspondida como qualquer outro nome.

Cada ponto de extremidade precisa ter um endereço associado para localizar e identificar o ponto de extremidade. O atributo address pode ser usado para especificar a URL que fornece o local do ponto de extremidade. Mas o endereço de um ponto de extremidade de serviço também pode ser especificado no código criando um URI (Uniform Resource Identifier) e é adicionado ao ServiceHost que usa de um dos métodos AddServiceEndpoint. Para obter mais informações, consulte também Endereços. Como a introdução indica, os elementos de <cabeçalhos> e de <identidade> fazem parte do EndpointAddress e também são discutidos no tópico Endereços.

O atributo binding indica o tipo de associação que o ponto de extremidade espera usar ao se conectar a um serviço. O tipo precisa ter uma seção de configuração registrada para ser referenciado. No exemplo anterior, esta é a seção <wsHttpBinding>, que indica que o ponto de extremidade usa um WSHttpBinding. Mas pode haver mais de uma associação de um determinado tipo que o ponto de extremidade pode usar. Cada um deles tem seu próprio elemento de <associação> dentro do elemento de tipo (associação). O atributo bindingconfiguration é usado para distinguir entre associações do mesmo tipo. Seu valor é combinado com o atributo name do elemento de <associação>. Para obter mais informações sobre como configurar uma associação de cliente usando a configuração, consulte Como especificar uma associação de cliente na configuração.

O atributo behaviorConfiguration é usado para especificar qual <comportamento> do ponto do <extremidadeBehaviors>, o ponto de extremidade deve usar. Seu valor é combinado com o atributo name do elemento de <comportamento>. Para obter um exemplo de como usar a configuração para especificar comportamentos do cliente, consulte Configurando comportamentos do cliente.

O atributo contract especifica qual contrato este ponto de extremidade expõe. Esse valor mapeia ao ConfigurationName do ServiceContractAttribute. O valor padrão é o nome de tipo completo da classe que implementa o serviço.

Configurando metadados

O elemento de <metadados> é usado para especificar as configurações usadas para registrar extensões de importação de metadados. Para obter mais informações sobre como estender o sistema de metadados, consulte Estender o sistema de metadados.

Confira também