Поделиться через


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)

Реализуйте, чтобы убедиться, что конечная точка соответствует некоторым заданным критериям.

Применяется к