Condividi tramite


Procedura: configurare un servizio Windows Communication Foundation per l'uso della condivisione delle porte

Il modo più semplice per usare la condivisione delle porte net.tcp:// nell'applicazione Windows Communication Foundation (WCF) consiste nell'esporre un servizio tramite NetTcpBinding.

Questa associazione fornisce una proprietà PortSharingEnabled che controlla se la condivisione delle porte net.tcp:// è attivata per il servizio configurato con questa associazione.

La procedura seguente mostra come utilizzare la classe NetTcpBinding per aprire un endpoint all'URI (Uniform Resource Identifier) net.tcp://localhost/MyService, prima in codice e quindi tramite elementi di configurazione.

Per attivare in codice la condivisione delle porte net.tcp:// in un'associazione NetTcpBinding

  1. Creare un servizio per implementare un contratto denominato IMyService e quindi denominarlo 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. Creare un'istanza della classe NetTcpBinding e impostare la proprietà PortSharingEnabled su true.

    NetTcpBinding portsharingBinding = new NetTcpBinding();
    portsharingBinding.PortSharingEnabled = true;
    
    Dim portsharingBinding As New NetTcpBinding()
    portsharingBinding.PortSharingEnabled = True
    
  3. Creare un host ServiceHost e aggiungervi l'endpoint del servizio MyService che utilizza l'associazione in cui è stata attivata la condivisione delle porte NetTcpBinding e che è in attesa presso l'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

    In questo esempio viene utilizzata la porta TCP predefinita 808 in quanto l'indirizzo URI dell'endpoint non specifica un numero di porta diverso. Poiché la condivisione delle porte è stata attivata in modo esplicito nell'associazione di trasporto, questo servizio può condividere la porta 808 con altri servizi appartenenti ad altri processi. Se invece non si attiva la condivisione delle porte e la porta 808 è già utilizzata da un'altra applicazione, il servizio genera un'eccezione AddressAlreadyInUseException quando viene aperto.

Per attivare in configurazione la condivisione delle porte net.tcp:// in un'associazione NetTcpBinding

  1. Nell'esempio seguente viene illustrato come attivare la condivisione delle porte e aggiungere l'endpoint di servizio tramite elementi di configurazione.
<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>  

Vedi anche