Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En la ilustración siguiente se muestra un servicio sencillo de Windows Communication Foundation (WCF) desarrollado para proporcionar información sobre una red privada segura a una aplicación WCF. La seguridad no es necesaria porque los datos son de baja importancia, se espera que la red sea intrínsecamente segura o que la seguridad se proporcione mediante una capa debajo de la infraestructura wcF.
Característica | Descripción |
---|---|
Modo de seguridad | Ninguno |
Transporte | TCP |
Enlace | NetTcpBinding |
Interoperabilidad | Solo WCF |
Autenticación | Ninguno |
Integridad | Ninguno |
Confidencialidad | Ninguno |
Servicio
El código y la configuración siguientes están diseñados para ejecutarse de forma independiente. Realice una de las acciones siguientes:
Cree un servicio independiente mediante el código sin ninguna configuración.
Cree un servicio mediante la configuración proporcionada, pero no defina ningún punto de conexión.
Código
En el código siguiente se muestra cómo crear un punto de conexión sin seguridad:
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.
Configuración
El código siguiente establece el mismo extremo utilizando la configuración.
<?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>
Cliente
El código y la configuración siguientes están diseñados para ejecutarse de forma independiente. Realice una de las acciones siguientes:
Cree un cliente independiente mediante el código (y el código de cliente).
Cree un cliente que no defina direcciones de punto de conexión. En su lugar, utilice el constructor de cliente que adopta el nombre de configuración como un argumento. Por ejemplo:
CalculatorClient cc = new CalculatorClient("EndpointConfigurationName");
Dim cc As New CalculatorClient("EndpointConfigurationName")
Código
El código siguiente muestra un cliente WCF básico que accede a un punto de conexión no seguro mediante el protocolo 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()
Configuración
El código de configuración siguiente se aplica al cliente:
<?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>