Configuração de Cliente

Você pode usar a configuração do cliente WCF (Windows Communication Foundation) para especificar o endereço, a ligaçã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 client> tem um <elemento endpoint> cujos atributos são usados para configurar os ABCs de ponto de extremidade. Esses atributos são discutidos na seção Configurando pontos de extremidade .

O elemento endpoint> também contém um <elemento de metadados> que é usado para especificar configurações para importar e exportar metadados, um <elemento headers que contém uma coleção de cabeçalhos> de endereço personalizados e um>< elemento identity que permite a autenticação de um endpoint por outros pontos de extremidade trocando mensagens com ele.< Os cabeçalhos> e< elementos de identidade> fazem parte do 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 extremidade

A configuração do cliente é 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> ligaçõ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 "App.config" porque esse é o nome que o tempo de execução do WCF espera. 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 opcional name identifica exclusivamente um ponto de extremidade para 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 deve ser carregado quando um canal é criado para o serviço. Um nome de configuração de ponto de extremidade curinga ApplyConfiguration "*" está disponível e indica ao método que ele deve carregar qualquer configuração de ponto de extremidade no arquivo, desde que haja precisamente uma disponível, e de outra forma lança uma exceção. Se esse atributo for omitido, o ponto de extremidade correspondente será usado como o ponto de extremidade padrão associado ao tipo de contrato especificado. O valor padrão para o name atributo é uma cadeia de caracteres vazia que é correspondida como qualquer outro nome.

Cada ponto de extremidade deve ter um endereço associado a ele para localizar e identificar o ponto de extremidade. O address atributo 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 uso de um dos AddServiceEndpoint métodos. Para obter mais informações, consulte Endereços. Como a introdução indica, os <cabeçalhos> e <elementos de identidade> fazem parte do EndpointAddress e também são discutidos no tópico Endereços.

O binding atributo indica o tipo de associação que o ponto de extremidade espera usar ao se conectar a um serviço. O tipo deve 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 WSHttpBindingarquivo . Mas pode haver mais de uma ligação de um determinado tipo que o ponto de extremidade pode usar. Cada um deles tem seu próprio <> elemento binding dentro do elemento type (binding). O bindingconfiguration atributo é usado para distinguir entre ligações do mesmo tipo. Seu valor é correspondido com o name<atributo do elemento de ligaçã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 behaviorConfiguration atributo é usado para especificar qual <comportamento> do <endpointBehaviors> o ponto de extremidade deve usar. Seu valor é correspondido com o name<atributo do elemento behavior.> Para obter um exemplo de como usar a configuração para especificar comportamentos de cliente, consulte Configurando comportamentos de cliente.

O contract atributo especifica qual contrato o ponto de extremidade está expondo. Esse valor é mapeado para o ConfigurationName do ServiceContractAttribute. O valor padrão é o nome completo do tipo 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 Estendendo o sistema de metadados.

Consulte também