Nezabezpečený intranetový klient a služba
Následující obrázek znázorňuje jednoduchou službu WCF (Windows Communication Foundation) vyvinutou tak, aby poskytovala informace o zabezpečené privátní síti pro aplikaci WCF. Zabezpečení není nutné, protože data mají nízkou důležitost, očekává se, že síť bude ze své podstaty zabezpečená nebo že je zabezpečení poskytováno vrstvou pod infrastrukturou WCF.
Charakteristika | Popis |
---|---|
Režim zabezpečení | Nic |
Přeprava | TCP |
Vazba | NetTcpBinding |
Vzájemná funkční spolupráce | Pouze WCF |
Ověřování | Nic |
Integrita | Nic |
Důvěrnost | Nic |
Služba
Následující kód a konfigurace se mají spouštět nezávisle. Proveďte některou z následujících akcí:
Vytvořte samostatnou službu pomocí kódu bez konfigurace.
Vytvořte službu pomocí zadané konfigurace, ale nedefinujte žádné koncové body.
Kód
Následující kód ukazuje, jak vytvořit koncový bod bez zabezpečení:
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: {0}", 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.
Konfigurace
Následující kód nastaví stejný koncový bod pomocí konfigurace:
<?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>
Klient
Následující kód a konfigurace se mají spouštět nezávisle. Proveďte některou z následujících akcí:
Vytvořte samostatného klienta pomocí kódu (a klientského kódu).
Vytvořte klienta, který nedefinuje žádné adresy koncových bodů. Místo toho použijte konstruktor klienta, který přebírá název konfigurace jako argument. Příklad:
CalculatorClient cc = new CalculatorClient("EndpointConfigurationName");
Dim cc As New CalculatorClient("EndpointConfigurationName")
Kód
Následující kód ukazuje základního klienta WCF, který přistupuje k nezabezpečeným koncovým bodům pomocí protokolu 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()
Konfigurace
Následující konfigurační kód se vztahuje na klienta:
<?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>