Незащищенные интернет-клиент и служба
В следующей иллюстрации показан пример открытых незащищенных клиента и службы Windows Communication Foundation (WCF).
Характеристика | Описание |
---|---|
Режим безопасности |
Нет |
Транспорт |
HTTP |
Привязка |
BasicHttpBinding в коде или элемент <basicHttpBinding>в конфигурации. |
Взаимодействие |
С существующими службами и клиентами веб-служб |
Проверка подлинности |
Нет |
Целостность |
Нет |
Конфиденциальность |
Нет |
Служба
Предполагается, что представленные ниже код и конфигурация выполняются независимо. Выполните одно из следующих действий.
Создайте автономную службу, используя код без конфигурации.
Создайте службу, используя предоставленную конфигурацию, но не определяйте конечные точки.
Код
В следующем коде показано создание конечной точки без безопасности. По умолчанию режим безопасности BasicHttpBinding задан режим None.
Dim httpUri As New Uri("https://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()
Uri httpUri = new Uri("https://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();
Конфигурация службы
В следующем коде настраивается та же конечная точка с использованием конфигурации.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<behaviors />
<services>
<service behaviorConfiguration="" name="ServiceModel.Calculator">
<endpoint address="https://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>
Клиент
Предполагается, что представленные ниже код и конфигурация выполняются независимо. Выполните одно из следующих действий.
Создайте автономный клиент, используя код (и код клиента).
Создайте клиент, который не определяет никаких адресов конечных точек. Вместо этого используйте конструктор клиента, который принимает в качестве аргумента имя конфигурации. Пример:
Dim cc As New CalculatorClient("EndpointConfigurationName")
CalculatorClient cc = new CalculatorClient("EndpointConfigurationName");
Код
Приведенный ниже код демонстрирует основной клиент WCF, который имеет доступ к незащищенной конечной точке.
' 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 = "https://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
// 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 = "https://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();
}
Конфигурация клиента
Следующий код служит для настройки клиента.
<?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="https://localhost/Calculator/Unsecured"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_ICalculator"
contract="ICalculator"
name="BasicHttpBinding_ICalculator" />
</client>
</system.serviceModel>
</configuration>
См. также
Основные понятия
Другие ресурсы
Типовые сценарии безопасности
Модель безопасности для Windows Server App Fabric