Comment : configurer un service Windows Communication Foundation pour utiliser le partage de ports

Le moyen le plus simple d’utiliser le partage de port net.tcp:// dans votre application Windows Communication Foundation (WCF) consiste à exposer un service à l’aide de NetTcpBinding.

Cette liaison fournit une propriété PortSharingEnabled qui contrôle si le partage de ports net.tcp:// est activé pour le service configuré avec cette liaison.

La procédure suivante montre comment utiliser la classe NetTcpBinding pour ouvrir un point de terminaison à l'URI net.tcp://localhost/MyService, d'abord dans du code puis en utilisant des éléments de configuration.

Pour activer le partage de ports net.tcp:// sur une liaison NetTcpBinding dans du code

  1. Créez un service pour implémenter un contrat appelé IMyService et appelez-le 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. Créez une instance de la classe NetTcpBinding, puis affectez à la propriété PortSharingEnabled la valeur true.

    NetTcpBinding portsharingBinding = new NetTcpBinding();
    portsharingBinding.PortSharingEnabled = true;
    
    Dim portsharingBinding As New NetTcpBinding()
    portsharingBinding.PortSharingEnabled = True
    
  3. Créez un ServiceHost et ajoutez-lui le point de terminaison de service pour MyService qui utilise la liaison NetTcpBinding avec partage de ports activé par partage et qui écoute l'URI de l'adresse du point de terminaison « 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")
    

    Notes

    Cet exemple utilise le port TCP par défaut 808 parce que l'URI de l'adresse du point de terminaison ne spécifie pas de numéro de port différent. Vu que le partage de ports est activé explicitement sur la liaison de transport, ce service peut partager le port 808 avec d’autres services dans d’autres processus. Si le partage de ports n'a pas été autorisé et si une autre application utilise déjà le port 808, ce service lève une AddressAlreadyInUseException lorsqu'il est ouvert.

Pour activer le partage de ports net.tcp:// sur une liaison NetTcpBinding dans la configuration

  1. L'exemple suivant montre comment activer le partage de ports et ajouter le point de terminaison de service à l'aide d'éléments de configuration.
<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>  

Voir aussi