IEndpointBehavior Arabirim
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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ın 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çisi 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, 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 geri dönebilir ve hiçbir işlem gerçekleştiremez.
Uyarı
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 ve Hizmet Modeli Katmanını Genişletme.
Özelleştirmeye karar verildikten (ve gerekirse uygulanan özelleştirme arabirimi) ve IEndpointBehavior uygun özelleştirme kapsamına karar verildikten sonra, uç nokta davranışı uygulanıp IEndpointBehavior çalışma zamanına eklenerek özelleştirmenin Windows Communication Foundation (WCF) çalışma zamanına eklenmesi gerekir.
Çalışma zamanına davranışı eklemenin iki yolu vardır:
Hizmet konağı (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, IEndpointBehavior yöntemi üzerinde System.ServiceModel.ServiceHostçağrıldığında ICommunicationObject.Open oluşan hizmet çalışma zamanının oluşturulmasından önce nesnenin özelliğine eklenmesi ServiceEndpoint.Behaviors gerekir. İstemci özelleştirme görevi gerçekleştirmek için, nesnesinin IEndpointBehaviorServiceEndpoint.Behaviors üzerinde yöntemini veya yöntemini ChannelFactory<TChannel>çağırmadan ChannelFactory<TChannel>.CreateChannel önce özelliğine ICommunicationObject.Open eklenmesi gerekir.
Yöntemler
| Name | Description |
|---|---|
| AddBindingParameters(ServiceEndpoint, BindingParameterCollection) |
Özel davranışı desteklemek için bağlamalara çalışma zamanında veri geçirmek için uygulayın. |
| ApplyClientBehavior(ServiceEndpoint, ClientRuntime) |
İstemcinin bir uç nokta üzerinde değişiklik 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. |