Niezabezpieczony klient internetowy i usługa
Poniższa ilustracja przedstawia przykład publicznego, niezabezpieczonego klienta i usługi Windows Communication Foundation (WCF):
Characteristic | opis |
---|---|
Tryb zabezpieczeń | Brak |
Transport | HTTP |
Wiązanie | BasicHttpBinding w kodzie lub <element basicHttpBinding> w konfiguracji. |
Współdziałanie | Z istniejącymi klientami i usługami usługi sieci Web |
Uwierzytelnianie | Brak |
Integralność | Brak |
Poufność | Brak |
Usługa
Poniższy kod i konfiguracja mają być uruchamiane niezależnie. Wykonaj jedną z następujących czynności:
Utwórz autonomiczną usługę przy użyciu kodu bez konfiguracji.
Utwórz usługę przy użyciu podanej konfiguracji, ale nie zdefiniuj żadnych punktów końcowych.
Kod
Poniższy kod pokazuje, jak utworzyć punkt końcowy bez zabezpieczeń. Domyślnie parametr BasicHttpBinding ma tryb zabezpieczeń ustawiony na Nonewartość .
Uri httpUri = new Uri("http://localhost/Calculator");
// Create the ServiceHost.
ServiceHost myServiceHost = new ServiceHost(typeof(Calculator), httpUri);
// Create a binding that uses HTTP. By default,
// this binding has no security.
BasicHttpBinding b = new BasicHttpBinding();
// Add an endpoint to the service.
myServiceHost.AddServiceEndpoint(typeof(ICalculator), b, "");
// Open the service and wait for calls.
AddMexEndpoint(ref myServiceHost);
myServiceHost.Open();
Console.Write("Listening....");
Console.ReadLine();
// Close the service when a key is pressed.
myServiceHost.Close();
Dim httpUri As New Uri("http://localhost/Calculator")
' Create the ServiceHost.
Dim myServiceHost As New ServiceHost(GetType(Calculator), httpUri)
' Create a binding that uses HTTP. By default,
' this binding has no security.
Dim b As New BasicHttpBinding()
' Add an endpoint to the service.
myServiceHost.AddServiceEndpoint(GetType(ICalculator), b, "")
' Open the service and wait for calls.
AddMexEndpoint(myServiceHost)
myServiceHost.Open()
Console.Write("Listening....")
Console.ReadLine()
' Close the service when a key is pressed.
myServiceHost.Close()
Konfiguracja usługi
Poniższy kod konfiguruje ten sam punkt końcowy przy użyciu konfiguracji.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<behaviors />
<services>
<service behaviorConfiguration="" name="ServiceModel.Calculator">
<endpoint address="http://localhost/Calculator"
binding="basicHttpBinding"
bindingConfiguration="Basic_Unsecured"
name="BasicHttp_ICalculator"
contract="ServiceModel.ICalculator" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="Basic_Unsecured" />
</basicHttpBinding>
</bindings>
<client />
</system.serviceModel>
</configuration>
Klient
Poniższy kod i konfiguracja mają być uruchamiane niezależnie. Wykonaj jedną z następujących czynności:
Utwórz klienta autonomicznego przy użyciu kodu (i kodu klienta).
Utwórz klienta, który nie definiuje żadnych adresów punktów końcowych. Zamiast tego użyj konstruktora klienta, który przyjmuje nazwę konfiguracji jako argument. Na przykład:
CalculatorClient cc = new CalculatorClient("EndpointConfigurationName");
Dim cc As New CalculatorClient("EndpointConfigurationName")
Kod
Poniższy kod przedstawia podstawowego klienta WCF, który uzyskuje dostęp do niezabezpieczonego punktu końcowego.
// Create an instance of the BasicHttpBinding.
// By default, there is no security.
BasicHttpBinding myBinding = new BasicHttpBinding();
// Create the address string, or get it from configuration.
string httpUri = "http://localhost/Calculator";
// Create an endpoint address with the address.
EndpointAddress myEndpoint = new EndpointAddress(httpUri);
// Create an instance of the WCF client. The client
// code was generated using the Svcutil.exe tool.
CalculatorClient cc = new CalculatorClient(myBinding, myEndpoint);
try
{
cc.Open();
// Begin using the calculator.
Console.WriteLine(cc.Divide(100, 2));
// Close the client.
cc.Close();
}
catch (TimeoutException tex)
{
Console.WriteLine(tex.Message);
cc.Abort();
}
catch (CommunicationException cex)
{
Console.WriteLine(cex.Message);
cc.Abort();
}
finally
{
Console.WriteLine("Closed the client");
Console.ReadLine();
}
' Create an instance of the BasicHttpBinding.
' By default, there is no security.
Dim myBinding As New BasicHttpBinding()
' Create the address string, or get it from configuration.
Dim httpUri As String = "http://localhost/Calculator"
' Create an endpoint address with the address.
Dim myEndpoint As New EndpointAddress(httpUri)
' Create an instance of the WCF client. The client
' code was generated using the Svcutil.exe tool.
Dim cc As New CalculatorClient(myBinding, myEndpoint)
Try
cc.Open()
' Begin using the calculator.
Console.WriteLine(cc.Divide(100, 2))
' Close the client.
cc.Close()
Catch tex As TimeoutException
Console.WriteLine(tex.Message)
cc.Abort()
Catch cex As CommunicationException
Console.WriteLine(cex.Message)
cc.Abort()
Finally
Console.WriteLine("Closed the client")
Console.ReadLine()
End Try
Konfiguracja klienta
Poniższy kod konfiguruje klienta.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ICalculator" >
<security mode="None">
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost/Calculator/Unsecured"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_ICalculator"
contract="ICalculator"
name="BasicHttpBinding_ICalculator" />
</client>
</system.serviceModel>
</configuration>