Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’illustration suivante illustre un service Windows Communication Foundation (WCF) simple développé pour fournir des informations sur un réseau privé sécurisé à une application WCF. La sécurité n’est pas nécessaire, car les données sont de faible importance, le réseau est censé être intrinsèquement sécurisé, ou la sécurité est fournie par une couche inférieure à l’infrastructure WCF.
Caractéristique | Descriptif |
---|---|
Mode de sécurité | Aucun |
Transport | TCP |
Reliure | NetTcpBinding |
Interopérabilité | WCF uniquement |
Authentification | Aucun |
Intégrité | Aucun |
Confidentialité | Aucun |
Service
Le code et la configuration suivants sont destinés à s’exécuter indépendamment. Effectuez l’une des opérations suivantes :
Créez un service autonome à l’aide du code sans configuration.
Créez un service à l’aide de la configuration fournie, mais ne définissez aucun point de terminaison.
Code
Le code suivant montre comment créer un point de terminaison sans sécurité :
Uri tcpUri = new Uri("net.tcp://localhost:8008/Calculator");
// Create the ServiceHost.
ServiceHost sh = new ServiceHost(typeof(Calculator), tcpUri);
// Create a binding that uses TCP and set the security mode to none.
NetTcpBinding b = new NetTcpBinding();
b.Security.Mode = SecurityMode.None;
// Add an endpoint to the service.
sh.AddServiceEndpoint(typeof(ICalculator), b, "");
// Open the service and wait for calls.
sh.Open();
string listenUri = sh.Description.Endpoints[0].ListenUri.AbsoluteUri;
Console.WriteLine($"Listening on: {listenUri}");
Console.Write("Press Enter to end the service");
Console.ReadLine();
// Close the service when a key is pressed.
Dim tcpUri As New Uri("net.tcp://localhost:8008/Calculator")
' Create the ServiceHost.
Dim sh As New ServiceHost(GetType(Calculator), tcpUri)
' Create a binding that uses TCP and set the security mode to none.
Dim b As New NetTcpBinding()
b.Security.Mode = SecurityMode.None
' Add an endpoint to the service.
sh.AddServiceEndpoint(GetType(ICalculator), b, "")
' Open the service and wait for calls.
sh.Open()
Dim listenUri As String = sh.Description.Endpoints(0).ListenUri.AbsoluteUri
Console.WriteLine("Listening on: {0}", listenUri)
Console.Write("Press Enter to end the service")
Console.ReadLine()
' Close the service when a key is pressed.
Paramétrage
Le code ci-dessous configure le même point de terminaison en utilisant la configuration :
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<behaviors />
<services>
<service behaviorConfiguration=""
name="ServiceModel.Calculator">
<endpoint address="net.tcp://localhost:8008/Calculator"
binding="netTcpBinding"
bindingConfiguration="tcp_Unsecured"
name="netTcp_ICalculator"
contract="ServiceModel.ICalculator" />
</service>
</services>
<bindings>
<netTcpBinding>
<binding name="tcp_Unsecured">
<security mode="None" />
</binding>
</netTcpBinding>
</bindings>
<client />
</system.serviceModel>
</configuration>
Client
Le code et la configuration suivants sont destinés à s’exécuter indépendamment. Effectuez l’une des opérations suivantes :
Créez un client autonome à l’aide du code (et du code client).
Créez un client qui ne définit aucune adresse de point de terminaison. Utilisez plutôt le constructeur client qui prend le nom de configuration comme argument. Par exemple:
CalculatorClient cc = new CalculatorClient("EndpointConfigurationName");
Dim cc As New CalculatorClient("EndpointConfigurationName")
Code
Le code suivant montre un client WCF de base qui accède à un point de terminaison non sécurisé à l’aide du protocole TCP.
// Create an instance of the NetTcpBinding and set the
// security mode to none.
NetTcpBinding myBinding = new NetTcpBinding();
myBinding.Security.Mode = SecurityMode.None;
// Create the address string, or get it from configuration.
string tcpUri = "net.tcp://machineName:8008/Calculator";
// Create an endpoint address with the address.
EndpointAddress myEndpointAddress = new EndpointAddress(tcpUri);
// Create an instance of the WCF client. The client
// code was generated using the Svcutil.exe tool.
CalculatorClient cc = new CalculatorClient(myBinding, myEndpointAddress);
try
{
cc.Open();
' Create an instance of the NetTcpBinding and set the
' security mode to none.
Dim myBinding As New NetTcpBinding()
myBinding.Security.Mode = SecurityMode.None
' Create the address string, or get it from configuration.
Dim tcpUri As String = "net.tcp://machineName:8008/Calculator"
' Create an endpoint address with the address.
Dim myEndpointAddress As New EndpointAddress(tcpUri)
' Create an instance of the WCF client. The client
' code was generated using the Svcutil.exe tool.
Dim cc As New CalculatorClient(myBinding, myEndpointAddress)
Try
cc.Open()
Paramétrage
Le code de configuration suivant s’applique au client :
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="NetTcpBinding_ICalculator" >
<security mode="None">
</security>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://machineName:8008/Calculator "
binding="netTcpBinding"
bindingConfiguration="NetTcpBinding_ICalculator"
contract="ICalculator"
name="NetTcpBinding_ICalculator" />
</client>
</system.serviceModel>
</configuration>