ConfigurationName


O WCF permite a configuração de um serviço de forma declarativa e imperativa, assim como já falei aqui. Quando optamos pela forma declarativa, todas as configurações do serviço/cliente serão feitas em um arquivo de configuração (App.config/Web.config), e com isso, sempre temos que referenciar o serviço e o contrato com o seu nome completo, ou seja, incluindo o namespace até eles.

Para facilitar isso, temos a propriedade ConfigurationName, exposta através dos atributos ServiceBehaviorAttribute e ServiceContractAttribute, onde podemos definir um “alias” para o serviço e o contrato, respectivamente. Com isso, evitamos especificar o nome completo até os tipos. O código abaixo ilustra a utilização dessa propriedade nos dois atributos:

[ServiceContract(ConfigurationName = “MeuContrato”)]
public interface IContrato
{
    //…
}

[ServiceBehavior(ConfigurationName = “MeuServico”)]
public class Servico : IContrato
{
    //…
}

E, se repararmos no arquivo de configuração agora, teremos:

<services>
  <service name=”MeuServico”>
    <host>
      <baseAddresses>
        <add baseAddress=”http://localhost:9383″/&gt;
      </baseAddresses>
    </host>
    <endpoint address=”srv” binding=”basicHttpBinding” contract=”MeuContrato” />
  </service>
</services>

É importante dizer que isso não interfere no nome do serviço e do contrato que será exposto através do documento WSDL. Essas configurações são apenas características locais dos arquivos de configuração do serviço ou do cliente.

Deixe uma resposta