IEndpointBehavior Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Реализует методы, которые можно использовать для расширения поведения во время выполнения для конечной точки в службе или клиентском приложении.
public interface class IEndpointBehavior
public interface IEndpointBehavior
type IEndpointBehavior = interface
Public Interface IEndpointBehavior
- Производный
Примеры
В следующем примере кода показана реализация поведения конечной точки, которая добавляет System.ServiceModel.Dispatcher.IDispatchMessageInspector объект в приложение службы. В этом случае EndpointBehaviorMessageInspector класс реализует System.ServiceModel.Dispatcher.IDispatchMessageInspector проверку входящего и исходящего сообщения, IEndpointBehavior интерфейс для вставки класса инспектора в систему проверки для всех конечных точек, к которым применяется поведение, и System.ServiceModel.Configuration.BehaviorExtensionElement для включения поведения инспектора сообщений с помощью файла конфигурации приложения.
Первым шагом является реализация инспектора сообщений.
// IDispatchMessageInspector Members
public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel, InstanceContext instanceContext)
{
Console.WriteLine("AfterReceiveRequest called.");
return null;
}
public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
Console.WriteLine("BeforeSendReply called.");
}
В следующем примере кода показано использование ApplyDispatchBehavior метода для добавления инспектора сообщений в DispatchRuntime.MessageInspectors свойство.
// IEndpointBehavior Members
public void AddBindingParameters(ServiceEndpoint serviceEndpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
{
return;
}
public void ApplyClientBehavior(ServiceEndpoint serviceEndpoint, ClientRuntime behavior)
{
behavior.MessageInspectors.Add(new EndpointBehaviorMessageInspector());
}
public void ApplyDispatchBehavior(ServiceEndpoint serviceEndpoint, EndpointDispatcher endpointDispatcher)
{
endpointDispatcher.DispatchRuntime.MessageInspectors.Add(new EndpointBehaviorMessageInspector());
}
public void Validate(ServiceEndpoint serviceEndpoint)
{
return;
}
В следующем примере кода показана реализация System.ServiceModel.Configuration.BehaviorExtensionElement для включения использования поведения инспектора сообщений из файла конфигурации.
// BehaviorExtensionElement members
public override Type BehaviorType
{
get { return typeof(EndpointBehaviorMessageInspector); }
}
protected override object CreateBehavior()
{
return new EndpointBehaviorMessageInspector();
}
Наконец, в следующем файле конфигурации показано, как можно использовать предыдущий пример из конфигурации.
<configuration>
<system.serviceModel>
<services>
<service
name="Microsoft.WCF.Documentation.SampleService"
behaviorConfiguration="metadataSupport"
>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/ServiceMetadata" />
</baseAddresses>
</host>
<endpoint
address="/SampleService"
binding="wsHttpBinding"
behaviorConfiguration="withMessageInspector"
contract="Microsoft.WCF.Documentation.ISampleService"
/>
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"
/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="metadataSupport">
<serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="withMessageInspector">
<endpointMessageInspector />
</behavior>
</endpointBehaviors>
</behaviors>
<extensions>
<behaviorExtensions>
<add
name="endpointMessageInspector"
type="Microsoft.WCF.Documentation.EndpointBehaviorMessageInspector, HostApplication, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
/>
</behaviorExtensions>
</extensions>
</system.serviceModel>
</configuration>
Комментарии
IEndpointBehavior Реализуйте интерфейс для изменения, проверки или расширения некоторых аспектов выполнения на уровне конечной точки для клиентских или служебных приложений.
AddBindingParameters Используйте метод для передачи пользовательских данных во время выполнения, чтобы разрешить привязки для поддержки пользовательского поведения.
ApplyClientBehavior Используйте метод для изменения, проверки или вставки расширений в конечную точку в клиентском приложении.
ApplyDispatchBehavior Используйте метод для изменения, проверки или вставки расширений в выполнение на уровне конечной точки в приложении-службе.
Validate Используйте метод для подтверждения ServiceEndpoint соответствия определенным требованиям. Это можно использовать для обеспечения включения определенного параметра конфигурации конечной точки, поддержки определенной функции и других требований.
IEndpointBehavior объекты могут использовать любой из этих методов, но часто это важно. В таких случаях неиспользуемые методы могут возвращать, не выполняя никаких действий.
Замечание
IEndpointBehavior Все методы передают ServiceEndpoint объект в качестве параметра. Этот параметр предназначен только для проверки; Если изменить объект, ServiceEndpoint поведение выполнения не определено.
IEndpointBehaviorОбъекты обычно используются для доступа к различным свойствам System.ServiceModel.Dispatcher.DispatchRuntime, System.ServiceModel.Dispatcher.EndpointDispatcherSystem.ServiceModel.Dispatcher.DispatchOperationа также объектам в приложении-службе и System.ServiceModel.Dispatcher.ChannelDispatcherSystem.ServiceModel.Dispatcher.ClientRuntimeSystem.ServiceModel.Dispatcher.ClientOperation клиентском приложении. Кроме того, можно получить доступ к свойствам дуплексных клиентов и служб с помощью ClientRuntime.CallbackDispatchRuntime и DispatchRuntime.CallbackClientRuntime свойств соответственно.
Описание различных свойств и настроек, доступных, см. в разделе "Расширение ServiceHost" и уровня модели службы.
После того как настройка будет решена (и интерфейс настройки реализован при необходимости) и IEndpointBehavior решено, является соответствующей областью настройки, настройка должна быть вставлена в среду выполнения Windows Communication Foundation (WCF), реализуя IEndpointBehavior и добавляя поведение конечной точки в среду выполнения.
Существует два способа добавления поведения в среду выполнения:
Программное добавление поведения пользовательской конечной точки в Behaviors свойство до открытия узла службы (в приложении службы) или фабрики каналов (в клиентском приложении).
Настройте поведение с помощью файла конфигурации приложения. Дополнительные сведения см. в разделе< behaviorExtensions>.
Чтобы выполнить задачу настройки службы, для которой она предназначена, IEndpointBehavior объект необходимо добавить в ServiceEndpoint.Behaviors свойство до создания среды выполнения службы, которая возникает при ICommunicationObject.Open вызове System.ServiceModel.ServiceHostметода. Чтобы выполнить задачу настройки клиента, IEndpointBehavior объект необходимо добавить в ServiceEndpoint.Behaviors свойство перед вызовом ChannelFactory<TChannel>.CreateChannel метода или ICommunicationObject.Open метода.ChannelFactory<TChannel>
Методы
| Имя | Описание |
|---|---|
| AddBindingParameters(ServiceEndpoint, BindingParameterCollection) |
Реализуйте для передачи данных во время выполнения привязкам для поддержки пользовательского поведения. |
| ApplyClientBehavior(ServiceEndpoint, ClientRuntime) |
Реализует изменение или расширение клиента в конечной точке. |
| ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) |
Реализует изменение или расширение службы в конечной точке. |
| Validate(ServiceEndpoint) |
Реализуйте, чтобы убедиться, что конечная точка соответствует некоторым заданным критериям. |