Sdílet prostřednictvím


IEndpointBehavior Rozhraní

Definice

Implementuje metody, které lze použít k rozšíření chování za běhu koncového bodu ve službě nebo klientské aplikaci.

public interface class IEndpointBehavior
public interface IEndpointBehavior
type IEndpointBehavior = interface
Public Interface IEndpointBehavior
Odvozené

Příklady

Následující příklad kódu ukazuje implementaci chování koncového bodu, který přidá System.ServiceModel.Dispatcher.IDispatchMessageInspector objekt do aplikace služby. V tomto případě EndpointBehaviorMessageInspector třída implementuje System.ServiceModel.Dispatcher.IDispatchMessageInspector kontrolu příchozí a odchozí zprávy, IEndpointBehavior rozhraní pro vložení třídy inspektoru do systému kontroly pro všechny koncové body, na které se chování vztahuje, a System.ServiceModel.Configuration.BehaviorExtensionElement k povolení chování inspektoru zpráv pomocí konfiguračního souboru aplikace.

Prvním krokem je implementace kontroly zpráv.

// 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.");
}

Další příklad kódu ukazuje použití ApplyDispatchBehavior metody k přidání inspektoru zprávy do DispatchRuntime.MessageInspectors vlastnosti .

// 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;
}

Následující příklad kódu ukazuje implementaci System.ServiceModel.Configuration.BehaviorExtensionElement za účelem povolení použití chování inspektoru zpráv z konfiguračního souboru.

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

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

A nakonec následující konfigurační soubor ukazuje, jak lze z konfigurace použít předchozí příklad.

<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>

Poznámky

Implementujte rozhraní pro úpravu IEndpointBehavior , prozkoumání nebo rozšíření některých aspektů spouštění v rámci celého koncového bodu na úrovni aplikace pro klientské aplikace nebo aplikace služby.

  • AddBindingParameters Pomocí metody předejte vlastní data za běhu, abyste umožnili vazby pro podporu vlastního chování.

  • ApplyClientBehavior Pomocí metody můžete upravit, prozkoumat nebo vložit rozšíření koncového bodu v klientské aplikaci.

  • ApplyDispatchBehavior Pomocí metody můžete upravit, prozkoumat nebo vložit rozšíření spouštění v rámci celého koncového bodu v aplikaci služby.

  • Validate Pomocí metody ověřte, že splňuje ServiceEndpoint konkrétní požadavky. To se dá použít k zajištění, že koncový bod má povolené určité nastavení konfigurace, podporuje konkrétní funkci a další požadavky.

IEndpointBehavior objekty mohou využít některou z těchto metod, ale často je důležitá pouze jedna; v takových případech se nepoužívané metody mohou vrátit a neprovedou žádnou akci.

Poznámka

IEndpointBehavior Všechny metody předávají ServiceEndpoint objekt jako parametr. Tento parametr je určen pouze pro vyšetření; Pokud upravíte ServiceEndpoint objekt, chování při provádění není definováno.

IEndpointBehavior Objekty se obvykle používají pro přístup k různým vlastnostem System.ServiceModel.Dispatcher.DispatchRuntimeobjektů , System.ServiceModel.Dispatcher.DispatchOperation, System.ServiceModel.Dispatcher.EndpointDispatchera System.ServiceModel.Dispatcher.ChannelDispatcher v aplikaci služby a System.ServiceModel.Dispatcher.ClientRuntimeSystem.ServiceModel.Dispatcher.ClientOperation v klientské aplikaci. Kromě toho můžete přistupovat k vlastnostem duplexních klientů a služeb pomocí ClientRuntime.CallbackDispatchRuntime vlastností a DispatchRuntime.CallbackClientRuntime .

Popis různých dostupných vlastností a přizpůsobení najdete v tématu Rozšíření servicehost a vrstvy modelu služby.

Jakmile bylo rozhodnuto o přizpůsobení (a rozhraní pro přizpůsobení bylo implementováno v případě potřeby) a IEndpointBehavior bylo rozhodnuto o vhodném rozsahu přizpůsobení, musí být přizpůsobení vloženo do modulu runtime WCF (Windows Communication Foundation) implementací IEndpointBehavior a přidáním chování koncového bodu do modulu runtime.

Existují dva způsoby, jak přidat chování do modulu runtime:

  • Programově přidá vlastní chování koncového bodu do Behaviors vlastnosti před otevřením hostitele služby (v aplikaci služby) nebo objektu pro vytváření kanálů (v klientské aplikaci).

  • Nakonfigurujte chování pomocí konfiguračního souboru aplikace. Podrobnosti najdete v tématu <behaviorExtensions>.

Aby bylo možné provést úlohu přizpůsobení služby, pro kterou je určena, IEndpointBehavior musí být objekt přidán do ServiceEndpoint.Behaviors vlastnosti před vytvořením modulu runtime služby, ke kterému dochází při ICommunicationObject.Open zavolání metody v System.ServiceModel.ServiceHost. Chcete-li provést úlohu přizpůsobení klienta, IEndpointBehavior musí být objekt přidán do ServiceEndpoint.Behaviors vlastnosti před voláním ChannelFactory<TChannel>.CreateChannel metody nebo metody v ICommunicationObject.Open .ChannelFactory<TChannel>

Metody

AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

Implement pro předávání dat za běhu vazbám pro podporu vlastního chování.

ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Implementuje úpravu nebo rozšíření klienta napříč koncovým bodem.

ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

Implementuje úpravu nebo rozšíření služby v rámci koncového bodu.

Validate(ServiceEndpoint)

Implementujte, abyste potvrdili, že koncový bod splňuje některá zamýšlená kritéria.

Platí pro