Compartir a través de


Cómo: Configurar un servicio de Windows Communication Foundation para utilizar puertos compartidos

La manera más fácil de utilizar la compartición de puertos de net.tcp:// en su aplicación de Windows Communication Foundation (WCF) es exponer un servicio mediante NetTcpBinding.

Este enlace proporciona una propiedad PortSharingEnabled que controla si la compartición de puertos de net.tcp:// está habilitada para el servicio que se está configurando con este enlace.

El siguiente procedimiento muestra cómo utilizar la clase NetTcpBinding para abrir un punto de conexión en el URI net.tcp://localhost/MyService, primero mediante código y, a continuación, mediante los elementos de configuración.

Para habilitar la compartición de puertos de net.tcp:// en un NetTcpBinding mediante código

  1. Cree un servicio para implementar un contrato llamado IMyService y llámelo 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. Cree una instancia de la clase NetTcpBinding y establezca la propiedad PortSharingEnabled en true.

    NetTcpBinding portsharingBinding = new NetTcpBinding();
    portsharingBinding.PortSharingEnabled = true;
    
    Dim portsharingBinding As New NetTcpBinding()
    portsharingBinding.PortSharingEnabled = True
    
  3. Cree un ServiceHost y agregue el punto de conexión de servicio a él para MyService que utiliza el NetTcpBinding con uso compartido de puerto habilitado y que realiza escuchas en el URI de la dirección del punto de conexión "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 ejemplo utiliza el puerto TCP predeterminado 808, porque el URI de dirección de punto de conexión no especifica un número de puerto diferente. Dado que el uso compartido del puerto está habilitado explícitamente en el enlace de transporte, este servicio puede compartir el puerto 808 con otros servicios en otros procesos. Si no se permitiera el uso compartido del puerto y otra aplicación ya estuviese utilizando el puerto 808, este servicio produciría una AddressAlreadyInUseException al abrirse.

Para habilitar el uso compartido de puerto de net.tcp:// en un NetTcpBinding mediante configuración

  1. El ejemplo siguiente muestra cómo habilitar el uso compartido de puerto y agregar el punto de conexión de servicio mediante elementos de configuración.
<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 también