Partilhar via


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

  1. Crie um serviço para implementar um contrato chamado IMyService e chame-o MyServicede , .

    [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 NetTcpBinding classe e defina a PortSharingEnabled propriedade 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 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

  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>  

Consulte também