IEndpointBehavior IEndpointBehavior IEndpointBehavior IEndpointBehavior Interface

Определение

Реализует методы, которые могут использоваться для расширения поведения времени выполнения для конечной точки службы или клиентского приложения.Implements methods that can be used to extend run-time behavior for an endpoint in either a service or client application.

public interface class IEndpointBehavior
public interface IEndpointBehavior
type IEndpointBehavior = interface
Public Interface IEndpointBehavior
Производный

Примеры

В следующем примере кода показана реализация поведения конечной точки, которая добавляет объект System.ServiceModel.Dispatcher.IDispatchMessageInspector в приложение службы.The following code example shows the implementation of an endpoint behavior that adds an System.ServiceModel.Dispatcher.IDispatchMessageInspector object in a service application. В данном случае класс EndpointBehaviorMessageInspector реализует System.ServiceModel.Dispatcher.IDispatchMessageInspector, чтобы проверить входящие и исходящие сообщения, интерфейсIEndpointBehavior для вставки класса инспектора в систему проверки всех конечных точек, к которым применимы поведения, а также System.ServiceModel.Configuration.BehaviorExtensionElement, чтобы включить поддержку поведений инспектора сообщений, используя файл конфигурации приложения.In this case, the EndpointBehaviorMessageInspector class implements System.ServiceModel.Dispatcher.IDispatchMessageInspector to inspect the inbound and outbound message, the IEndpointBehavior interface to insert the inspector class into the inspection system for all endpoints to which the behavior applies, and the System.ServiceModel.Configuration.BehaviorExtensionElement to enable the message inspector behavior using an application configuration file.

Сначала необходимо реализовать инспектор сообщений.The first step is to implement the message inspector.

// 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.The next code example shows the use of the ApplyDispatchBehavior method to add the message inspector to the DispatchRuntime.MessageInspectors property.

// 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, чтобы разрешить использование поведения инспектора сообщений из файла конфигурации.The following code example shows the implementation of System.ServiceModel.Configuration.BehaviorExtensionElement in order to enable use of the message inspector behavior from a configuration file.

// BehaviorExtensionElement members
public override Type BehaviorType
{
  get { return typeof(EndpointBehaviorMessageInspector); }
}

protected override object CreateBehavior()
{
  return new EndpointBehaviorMessageInspector();
}

Наконец, в следующем файле конфигурации показано, как можно использовать предыдущий пример из конфигурации.Finally, the following configuration file shows how the preceding example can be used from configuration.

<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 для изменения, проверки или расширения некоторого аспекта выполнения для всей конечной точки на уровне клиентских приложений или приложений службы.Implement the IEndpointBehavior interface to modify, examine, or extend some aspect of endpoint-wide execution at the application level for either client or service applications.

  • Метод AddBindingParameters используется для предоставления элементов привязки с пользовательскими данными в среде выполнения для разрешения привязок для поддержки настраиваемых поведений.Use the AddBindingParameters method to pass custom data at runtime to enable bindings to support custom behavior.

  • Метод ApplyClientBehavior используется для изменения, проверки или вставки оснасток расширения в конечную точку в клиентском приложении.Use the ApplyClientBehavior method to modify, examine, or insert extensions to an endpoint in a client application.

  • Метод ApplyDispatchBehavior используется для изменения, проверки или вставки оснасток расширения в выполнение всей конечной точки в приложении службы.Use the ApplyDispatchBehavior method to modify, examine, or insert extensions to endpoint-wide execution in a service application.

  • Можно использовать метод Validate, чтобы подтвердить соответствие ServiceEndpoint конкретным требованиям.Use the Validate method to confirm that a ServiceEndpoint meets specific requirements. Метод может использоваться для проверки включения определенных настроек конфигурации конечной точки, поддержки конкретных функциональных возможностей и соответствия другим требованиям.This can be used to ensure that an endpoint has a certain configuration setting enabled, supports a particular feature and other requirements.

Объекты IEndpointBehavior могут использовать любые из этих методов, но часто важен только один; в таких случаях неиспользуемые методы могут возвращаться, не выполняя никаких действий.IEndpointBehavior objects can make use of any of these methods, but often only one is important; in such cases, the unused methods can return, performing no action.

Примечание

Все методы IEndpointBehavior передают объект ServiceEndpoint как параметр.All of the IEndpointBehavior methods pass a ServiceEndpoint object as a parameter. Данный параметр используется только для изучения; при изменении объекта ServiceEndpoint поведение выполнения не определено.This parameter is for examination only; if you modify the ServiceEndpoint object the execution behavior is undefined.

Объекты 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 в клиентском приложении.IEndpointBehavior objects are typically used to access the various properties of the System.ServiceModel.Dispatcher.DispatchRuntime, System.ServiceModel.Dispatcher.DispatchOperation, System.ServiceModel.Dispatcher.EndpointDispatcher, and System.ServiceModel.Dispatcher.ChannelDispatcher objects in a service application and the System.ServiceModel.Dispatcher.ClientRuntime and System.ServiceModel.Dispatcher.ClientOperation in a client application. Кроме того, можно получить доступ к свойствам дуплексных клиентов и служб с помощью свойств ClientRuntime.CallbackDispatchRuntime и DispatchRuntime.CallbackClientRuntime соответственно.In addition, you can access the properties of duplex clients and services using the ClientRuntime.CallbackDispatchRuntime and DispatchRuntime.CallbackClientRuntime properties, respectively.

Описание различных доступных свойств и настроек см. в разделе Расширение ServiceHost и уровня модели службы.For a description of the various properties and customizations available, see Extending ServiceHost and the Service Model Layer.

После принятия решения по настройке (и интерфейса настройки, реализованного при необходимости) и IEndpointBehavior является соответствующей областью настройки, настройка должна быть вставлена в Windows Communication Foundation (WCF). среда выполнения путем реализации IEndpointBehavior и добавления поведения конечной точки в среду выполнения.Once a customization has been decided upon (and the customization interface implemented if necessary) and the IEndpointBehavior has been decided is the appropriate scope of customization, the customization must be inserted into the Windows Communication Foundation (WCF) runtime by implementing IEndpointBehavior and adding the endpoint behavior to the runtime.

Существует два способа добавления поведений в среду выполнения:There are two ways to add the behavior to the runtime:

  • Программно добавить настраиваемые поведения конечной точки в свойство Behaviors перед открытием узла службы (в приложении службы) или заводской настройки канала (в клиентском приложении).Programmatically add the custom endpoint behavior to the Behaviors property prior to the opening of the service host (in a service application) or the channel factory (in a client application).

  • Настроить поведение с помощью файла конфигурации приложения.Configure the behavior using an application configuration file. Дополнительные сведения см. в разделе <behaviorExtensions @ no__t-2.For details, see <behaviorExtensions>.

Чтобы выполнить задачу настройки службы, для которой она предназначена, необходимо добавить объект IEndpointBehavior в свойство ServiceEndpoint.Behaviors перед построением службы среды выполнения, что происходит, когда метод ICommunicationObject.Open вызывается на объекте System.ServiceModel.ServiceHost.To perform the service customization task for which it is intended, the IEndpointBehavior object must be added to the ServiceEndpoint.Behaviors property prior to the construction of the service runtime, which occurs when ICommunicationObject.Open method is called on System.ServiceModel.ServiceHost. Чтобы выполнить задачу настройки клиента, следует добавить объект IEndpointBehavior в свойство ServiceEndpoint.Behaviors перед вызовом метода ChannelFactory<TChannel>.CreateChannel или метода ICommunicationObject.Open на ChannelFactory<TChannel>.To perform a client customization task, the IEndpointBehavior object must be added to the ServiceEndpoint.Behaviors property before calling the ChannelFactory<TChannel>.CreateChannel method or the ICommunicationObject.Open method on ChannelFactory<TChannel>.

Методы

AddBindingParameters(ServiceEndpoint, BindingParameterCollection) AddBindingParameters(ServiceEndpoint, BindingParameterCollection) AddBindingParameters(ServiceEndpoint, BindingParameterCollection) AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

Реализуйте для передачи данных привязкам во время выполнения в целях поддержки пользовательских режимов.Implement to pass data at runtime to bindings to support custom behavior.

ApplyClientBehavior(ServiceEndpoint, ClientRuntime) ApplyClientBehavior(ServiceEndpoint, ClientRuntime) ApplyClientBehavior(ServiceEndpoint, ClientRuntime) ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Реализует изменение или расширение клиента по всей конечной точке.Implements a modification or extension of the client across an endpoint.

ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

Реализует изменение или расширение службы по всей конечной точке.Implements a modification or extension of the service across an endpoint.

Validate(ServiceEndpoint) Validate(ServiceEndpoint) Validate(ServiceEndpoint) Validate(ServiceEndpoint)

Реализуйте для подтверждения соответствия конечной точки намеченным критериям.Implement to confirm that the endpoint meets some intended criteria.

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