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.