Como configurar um serviço Windows Communication Foundation para usar o compartilhamento de porta
A maneira mais fácil de usar o compartilhamento de porta net.tcp:// em seu aplicativo Windows Communication Foundation (WCF) é expor um serviço usando o NetTcpBinding.
Essa associação fornece uma PortSharingEnabled propriedade que controla se o compartilhamento de porta net.tcp:// está habilitado para o serviço que está sendo configurado com essa ligação.
O procedimento a seguir mostra como usar a NetTcpBinding classe 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.
Para 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-oMyService
de , .[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 NetTcpBinding classe e defina a PortSharingEnabled propriedade 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
MyService
que use a porta habilitada NetTcpBinding para compartilhamento e que ouça no endereço do ponto de extremidade URI "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")
Nota
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 fosse permitido e outro aplicativo já estivesse usando a porta 808, esse serviço lançaria um AddressAlreadyInUseException quando fosse aberto.
Para 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>