Como configurar um serviço do Windows Communication Foundation para utilizar o compartilhamento de porta
A maneira mais fácil de usar o compartilhamento de porta net.tcp:// no aplicativo WCF (Windows Communication Foundation) é expor um serviço usando o NetTcpBinding.
Essa associação fornece uma propriedade PortSharingEnabled que controla se o compartilhamento de porta net.tcp:// está habilitado para o serviço que está sendo configurado com a associação.
O procedimento a seguir mostra como usar a classe NetTcpBinding para abrir um ponto de extremidade no URI (Uniform Resource Identifier) net.tcp://localhost/MyService, primeiro no código e, depois, usando elementos de configuração.
Habilitar o compartilhamento de porta net.tcp:// em um NetTcpBinding no código
Crie um serviço para implementar um contrato chamado
IMyService
e chame-o deMyService
.[ServiceContract] interface IMyService { //Define the contract operations. } class MyService : IMyService { //Implement the IMyService operations. }
<ServiceContract()> _ Friend Interface IMyService 'Define the contract operations. End Interface Friend Class MyService Implements IMyService 'Implement the IMyService operations. End Class
Crie uma instância da classe NetTcpBinding e defina a propriedade PortSharingEnabled como
true
.NetTcpBinding portsharingBinding = new NetTcpBinding(); portsharingBinding.PortSharingEnabled = true;
Dim portsharingBinding As New NetTcpBinding() portsharingBinding.PortSharingEnabled = True
Crie um ServiceHost e adicione o ponto de extremidade de serviço a ele para o
MyService
que usa o NetTcpBinding habilitado para compartilhamento de porta e que escuta no URI de endereço do ponto de extremidade "net.tcp://localhost/MyService".ServiceHost host = new ServiceHost( typeof( MyService ) ); host.AddServiceEndpoint( typeof( IMyService ), portsharingBinding,"net.tcp://localhost/MyService" );
Dim host As New ServiceHost(GetType(MyService)) host.AddServiceEndpoint(GetType(IMyService), portsharingBinding, "net.tcp://localhost/MyService")
Observação
Este exemplo usa a porta TCP padrão de 808 porque o URI do endereço do ponto de extremidade não especifica um número de porta diferente. Como o compartilhamento de porta está explicitamente habilitado na associação de transporte, esse serviço pode compartilhar a porta 808 com outros serviços em outros processos. Se o compartilhamento de porta não estiver permitido e outro aplicativo já estiver usando a porta 808, esse serviço lançará um AddressAlreadyInUseException quando for aberto.
Habilitar o compartilhamento de porta net.tcp:// em um NetTcpBinding na configuração
- O exemplo a seguir mostra como habilitar o compartilhamento de porta e adicionar o ponto de extremidade de serviço usando elementos de configuração.
<system.serviceModel>
<bindings>
<netTcpBinding name="portSharingBinding"
portSharingEnabled="true" />
</bindings>
<services>
<service name="MyService">
<endpoint address="net.tcp://localhost/MyService"
binding="netTcpBinding"
contract="IMyService"
bindingConfiguration="portSharingBinding" />
</service>
</services>
</system.serviceModel>