Udostępnij za pośrednictwem


IEndpointBehavior Interfejs

Definicja

Implementuje metody, które mogą służyć do rozszerzania zachowania czasu wykonywania dla punktu końcowego w usłudze lub aplikacji klienckiej.

public interface class IEndpointBehavior
public interface IEndpointBehavior
type IEndpointBehavior = interface
Public Interface IEndpointBehavior
Pochodne

Przykłady

Poniższy przykład kodu przedstawia implementację zachowania punktu końcowego, które dodaje System.ServiceModel.Dispatcher.IDispatchMessageInspector obiekt w aplikacji usługi. W takim przypadku EndpointBehaviorMessageInspector klasa implementuje System.ServiceModel.Dispatcher.IDispatchMessageInspector inspekcję komunikatu przychodzącego i wychodzącego, IEndpointBehavior interfejs do wstawiania klasy inspektora do systemu inspekcji dla wszystkich punktów końcowych, do których ma zastosowanie zachowanie, oraz do System.ServiceModel.Configuration.BehaviorExtensionElement włączania zachowania inspektora komunikatów przy użyciu pliku konfiguracji aplikacji.

Pierwszym krokiem jest zaimplementowanie inspektora komunikatów.

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

W następnym przykładzie kodu pokazano użycie ApplyDispatchBehavior metody w celu dodania inspektora DispatchRuntime.MessageInspectors komunikatów do właściwości .

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

Poniższy przykład kodu przedstawia implementację System.ServiceModel.Configuration.BehaviorExtensionElement elementu w celu umożliwienia korzystania z zachowania inspektora komunikatów z pliku konfiguracji.

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

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

Na koniec poniższy plik konfiguracji pokazuje, jak można użyć poprzedniego przykładu z konfiguracji.

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

Uwagi

Zaimplementuj interfejs, IEndpointBehavior aby zmodyfikować, zbadać lub rozszerzyć pewien aspekt wykonywania w całym punkcie końcowym na poziomie aplikacji dla aplikacji klienckich lub usług.

  • AddBindingParameters Użyj metody , aby przekazać dane niestandardowe w czasie wykonywania, aby umożliwić tworzenie powiązań w celu obsługi zachowania niestandardowego.

  • ApplyClientBehavior Użyj metody , aby zmodyfikować, zbadać lub wstawić rozszerzenia do punktu końcowego w aplikacji klienckiej.

  • ApplyDispatchBehavior Użyj metody , aby zmodyfikować, zbadać lub wstawić rozszerzenia do wykonywania w całej punkcie końcowym w aplikacji usługi.

  • Validate Użyj metody , aby potwierdzić, że ServiceEndpoint spełnia określone wymagania. Może to służyć do zapewnienia, że punkt końcowy ma włączone określone ustawienie konfiguracji, obsługuje określoną funkcję i inne wymagania.

IEndpointBehavior obiekty mogą korzystać z dowolnej z tych metod, ale często tylko jedna z nich jest ważna; w takich przypadkach nieużywane metody mogą zwracać, nie wykonując żadnej akcji.

Uwaga

IEndpointBehavior Wszystkie metody przekazują ServiceEndpoint obiekt jako parametr. Ten parametr jest przeznaczony tylko do badania; jeśli zmodyfikujesz ServiceEndpoint obiekt, zachowanie wykonywania jest niezdefiniowane.

IEndpointBehavior Obiekty są zwykle używane do uzyskiwania dostępu do różnych właściwości System.ServiceModel.Dispatcher.DispatchRuntimeobiektów , System.ServiceModel.Dispatcher.DispatchOperation, System.ServiceModel.Dispatcher.EndpointDispatcheri System.ServiceModel.Dispatcher.ChannelDispatcher w aplikacji usługi oraz System.ServiceModel.Dispatcher.ClientRuntime System.ServiceModel.Dispatcher.ClientOperation w aplikacji klienckiej. Ponadto można uzyskać dostęp do właściwości klientów i usług dwukierunkowych przy użyciu ClientRuntime.CallbackDispatchRuntime odpowiednio właściwości i DispatchRuntime.CallbackClientRuntime .

Opis różnych dostępnych właściwości i dostosowań można znaleźć w temacie Extending ServiceHost and the Service Model Layer (Rozszerzanie elementu ServiceHost i warstwy modelu usług).

Po podjęciu decyzji o dostosowaniu (i zaimplementowaniu interfejsu dostosowywania w razie potrzeby) i IEndpointBehavior podjęciu decyzji jest odpowiedni zakres dostosowywania, dostosowanie należy wstawić do środowiska uruchomieniowego Windows Communication Foundation (WCF), implementując IEndpointBehavior i dodając zachowanie punktu końcowego do środowiska uruchomieniowego.

Istnieją dwa sposoby dodawania zachowania do środowiska uruchomieniowego:

  • Programowe dodawanie niestandardowego zachowania punktu końcowego do Behaviors właściwości przed otwarciem hosta usługi (w aplikacji usługi) lub fabryki kanałów (w aplikacji klienckiej).

  • Skonfiguruj zachowanie przy użyciu pliku konfiguracji aplikacji. Aby uzyskać szczegółowe informacje, zobacz <behaviorExtensions>.

Aby wykonać zadanie dostosowywania usługi, dla którego jest on przeznaczony, IEndpointBehavior należy dodać obiekt do ServiceEndpoint.Behaviors właściwości przed utworzeniem środowiska uruchomieniowego usługi, co ma miejsce, gdy ICommunicationObject.Open wywoływana jest metoda .System.ServiceModel.ServiceHost Aby wykonać zadanie dostosowywania klienta, IEndpointBehavior przed wywołaniem ChannelFactory<TChannel>.CreateChannel metody lub ICommunicationObject.Open metody w ChannelFactory<TChannel>metodzie należy dodać obiekt do ServiceEndpoint.Behaviors właściwości .

Metody

AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

Zaimplementuj przekazywanie danych w czasie wykonywania do powiązań w celu obsługi zachowania niestandardowego.

ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Implementuje modyfikację lub rozszerzenie klienta w punkcie końcowym.

ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

Implementuje modyfikację lub rozszerzenie usługi w punkcie końcowym.

Validate(ServiceEndpoint)

Zaimplementuj, aby potwierdzić, że punkt końcowy spełnia określone kryteria.

Dotyczy