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


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.DispatchOperation, System.ServiceModel.Dispatcher.EndpointDispatcher и System.ServiceModel.Dispatcher.ChannelDispatcher в приложении службы и System.ServiceModel.Dispatcher.ClientRuntime и System.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)

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

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