Share via


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

  1. Crie um serviço para implementar um contrato chamado IMyService e chame-o de MyService.

    [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
    
  2. 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
    
  3. 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

  1. 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>  

Confira também