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
Créez un service pour implémenter un contrat appelé
IMyService
et appelez-leMyService
.[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
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
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
- 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>