IEndpointBehavior Arabirim

Tanım

Hizmet veya istemci uygulamasındaki bir uç noktanın çalışma zamanı davranışını genişletmek için kullanılabilecek yöntemler uygular.

public interface class IEndpointBehavior
public interface IEndpointBehavior
type IEndpointBehavior = interface
Public Interface IEndpointBehavior
Türetilmiş

Örnekler

Aşağıdaki kod örneği, bir hizmet uygulamasına nesne ekleyen bir System.ServiceModel.Dispatcher.IDispatchMessageInspector uç nokta davranışının uygulanmasını gösterir. Bu durumda, EndpointBehaviorMessageInspector sınıfı gelen ve giden iletiyiIEndpointBehavior, davranışın geçerli olduğu tüm uç noktalar için denetim sistemine denetçi sınıfını ekleme arabirimini ve System.ServiceModel.Configuration.BehaviorExtensionElement bir uygulama yapılandırma dosyası kullanarak ileti denetçisi davranışını etkinleştirmek için arabirimini uygularSystem.ServiceModel.Dispatcher.IDispatchMessageInspector.

İlk adım, ileti denetçisini uygulamaktır.

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

Sonraki kod örneği, ileti denetçisini ApplyDispatchBehavior özelliğine eklemek için yönteminin DispatchRuntime.MessageInspectors kullanımını gösterir.

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

Aşağıdaki kod örneği, bir yapılandırma dosyasından ileti denetçi davranışının kullanımını etkinleştirmek için uygulamasını System.ServiceModel.Configuration.BehaviorExtensionElement gösterir.

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

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

Son olarak, aşağıdaki yapılandırma dosyası önceki örneğin yapılandırmadan nasıl kullanılabileceğini gösterir.

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

Açıklamalar

IEndpointBehavior İstemci veya hizmet uygulamaları için uç nokta genelinde yürütmenin bazı yönlerini uygulama düzeyinde değiştirmek, incelemek veya genişletmek için arabirimini uygulayın.

  • Bağlamaların AddBindingParameters özel davranışı desteklemesini sağlamak için çalışma zamanında özel verileri geçirmek için yöntemini kullanın.

  • İstemci uygulamasındaki ApplyClientBehavior bir uç noktaya uzantılar değiştirmek, incelemek veya eklemek için yöntemini kullanın.

  • ApplyDispatchBehavior Bir hizmet uygulamasında uç nokta genelinde yürütmeye uzantılar değiştirmek, incelemek veya eklemek için yöntemini kullanın.

  • Validate yöntemini kullanarak belirli ServiceEndpoint gereksinimleri karşıladığını onaylayın. Bu, bir uç noktanın belirli bir yapılandırma ayarının etkinleştirildiğinden, belirli bir özelliği ve diğer gereksinimleri desteklediğinde emin olmak için kullanılabilir.

IEndpointBehavior nesneler bu yöntemlerden herhangi birini kullanabilir, ancak genellikle yalnızca biri önemlidir; bu gibi durumlarda, kullanılmayan yöntemler herhangi bir eylem gerçekleştirmeden döndürebilir.

Not

IEndpointBehavior Tüm yöntemler bir ServiceEndpoint nesneyi parametre olarak geçirir. Bu parametre yalnızca inceleme içindir; nesnesini değiştirirseniz ServiceEndpoint yürütme davranışı tanımlanmamış olur.

IEndpointBehaviornesneleri genellikle bir hizmet uygulamasında ve istemci uygulamasındaki , , ve nesnelerinin çeşitli özelliklerine System.ServiceModel.Dispatcher.DispatchRuntimeSystem.ServiceModel.Dispatcher.ClientOperationSystem.ServiceModel.Dispatcher.ClientRuntime erişmek için kullanılır.System.ServiceModel.Dispatcher.ChannelDispatcherSystem.ServiceModel.Dispatcher.EndpointDispatcherSystem.ServiceModel.Dispatcher.DispatchOperation Ayrıca, sırasıyla ve DispatchRuntime.CallbackClientRuntime özelliklerini kullanarak çift yönlü istemcilerin ve hizmetlerin özelliklerine ClientRuntime.CallbackDispatchRuntime erişebilirsiniz.

Kullanılabilen çeşitli özelliklerin ve özelleştirmelerin açıklaması için bkz. ServiceHost'u ve Hizmet Modeli Katmanını Genişletme.

Bir özelleştirmeye karar verildikten (ve gerekirse özelleştirme arabirimi uygulandıysa) ve IEndpointBehavior uygun özelleştirme kapsamına karar verildikten sonra, uç nokta davranışını uygulayıp IEndpointBehavior çalışma zamanına ekleyerek özelleştirmenin Windows Communication Foundation (WCF) çalışma zamanına eklenmesi gerekir.

Çalışma zamanına davranışı eklemenin iki yolu vardır:

  • Hizmet konağı (bir hizmet uygulamasında) veya kanal fabrikasının (istemci uygulamasında) açılmasından önce özel uç nokta davranışını Behaviors program aracılığıyla özelliğine ekleyin.

  • Bir uygulama yapılandırma dosyası kullanarak davranışı yapılandırın. Ayrıntılar için bkz <. behaviorExtensions>.

Hedeflendiği hizmet özelleştirme görevini gerçekleştirmek için, nesneninIEndpointBehavior, üzerinde yöntem çağrıldığında ICommunicationObject.Open oluşan hizmet çalışma zamanının oluşturulmasından önce özelliğine System.ServiceModel.ServiceHosteklenmesi ServiceEndpoint.Behaviors gerekir. İstemci özelleştirme görevini gerçekleştirmek için, IEndpointBehavior üzerinde yöntemini veya yöntemini ChannelFactory<TChannel>çağırmadan önce nesnesinin ChannelFactory<TChannel>.CreateChannel özelliğine ICommunicationObject.Open eklenmesi ServiceEndpoint.Behaviors gerekir.

Yöntemler

AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

Özel davranışı desteklemek için çalışma zamanında bağlamalara veri geçirmek için uygulayın.

ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Uç nokta genelinde istemcinin bir değişikliğini veya uzantısını uygular.

ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

Bir uç nokta genelinde hizmetin bir değişikliğini veya uzantısını uygular.

Validate(ServiceEndpoint)

Uç noktanın hedeflenen bazı ölçütleri karşıladığını onaylamak için uygulayın.

Şunlara uygulanır