IEndpointBehavior Rozhraní

Definice

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

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 v aplikaci 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 kontrolního systému pro všechny koncové body, na které se chování vztahuje, a System.ServiceModel.Configuration.BehaviorExtensionElement 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.");
}

Následující příklad kódu ukazuje použití ApplyDispatchBehavior metody k přidání inspektoru zpráv 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 , aby bylo možné povolit 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();
}

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

<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

IEndpointBehavior Implementujte rozhraní pro úpravy, zkoumání nebo rozšíření určitého aspektu provádění na úrovni aplikace na úrovni aplikace pro klientské aplikace nebo aplikace služeb.

  • AddBindingParameters Pomocí metody můžete předat vlastní data za běhu, aby bylo možné povolit vazby pro podporu vlastního chování.

  • ApplyClientBehavior Tato metoda slouží k úpravě, prozkoumání nebo vložení rozšíření do koncového bodu v klientské aplikaci.

  • Tuto metodu ApplyDispatchBehavior použijte k úpravě, prozkoumání nebo vložení rozšíření pro provádění v aplikaci služby pro celý koncový bod.

  • Použijte metodu ValidateServiceEndpoint k potvrzení, že splňuje 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žívat některou z těchto metod, ale často je jen jedna důležitá; v takových případech se nepoužívané metody můžou vrátit a neprovedou žádnou akci.

Note

IEndpointBehavior Všechny metody předávají ServiceEndpoint objekt jako parametr. Tento parametr je určen pouze ke zkoumání; pokud upravíte ServiceEndpoint objekt chování provádění je nedefinováno.

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

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

Jakmile se rozhodnete o přizpůsobení (a v případě potřeby implementované rozhraní pro přizpůsobení) a IEndpointBehavior bylo rozhodnuto, že se jedná o odpovídající rozsah přizpůsobení, je nutné přizpůsobení vložit do modulu runtime WCF (Windows Communication Foundation) implementací IEndpointBehavior a přidáním chování koncového bodu do modulu runtime.

Chování modulu runtime můžete přidat dvěma způsoby:

  • Programové přidání vlastního 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>.

Chcete-li 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, který nastane při ICommunicationObject.Open zavolání System.ServiceModel.ServiceHostmetody . 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 ICommunicationObject.Open metody on ChannelFactory<TChannel>.

Metody

Name Description
AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

Implementujte předávání dat za běhu do vazeb pro podporu vlastního chování.

ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

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

ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

Implementuje změnu 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