IOperationBehavior 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 işlem için çalışma zamanı davranışını genişletmek için kullanılabilecek yöntemler uygular.
public interface class IOperationBehavior
public interface IOperationBehavior
type IOperationBehavior = interface
Public Interface IOperationBehavior
- Türetilmiş
Örnekler
Aşağıdaki kod örneği, bir System.ServiceModel.Dispatcher.IParameterInspector işlemde denetçi çağrıldığında konsola yazan uygulamasını gösterir. Bu özelleştirme yalnızca veya System.ServiceModel.Dispatcher.ClientOperation öğesine System.ServiceModel.Dispatcher.DispatchOperation eklenebilir ve bu nedenle genellikle bir işlem davranışı tarafından eklenir.
#region IParameterInspector Members
public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
{
Console.WriteLine(
"IParameterInspector.AfterCall called for {0} with return value {1}.",
operationName,
returnValue.ToString()
);
}
public object BeforeCall(string operationName, object[] inputs)
{
Console.WriteLine("IParameterInspector.BeforeCall called for {0}.", operationName);
return null;
}
#Region "IParameterInspector Members"
Public Sub AfterCall(ByVal operationName As String, ByVal outputs() As Object, ByVal returnValue As Object, _
ByVal correlationState As Object) Implements IParameterInspector.AfterCall
Console.WriteLine("IParameterInspector.AfterCall called for {0} with return value {1}.", _
operationName, returnValue.ToString())
End Sub
Public Function BeforeCall(ByVal operationName As String, ByVal inputs() As Object) As Object Implements _
IParameterInspector.BeforeCall
Console.WriteLine("IParameterInspector.BeforeCall called for {0}.", operationName)
Return Nothing
End Function
Aşağıdaki kod örneği, işlem davranışının parametre denetçisini çalışma zamanına nasıl ekleyişini gösterir.
#region IOperationBehavior Members
public void AddBindingParameters(
OperationDescription operationDescription, BindingParameterCollection bindingParameters
)
{ return; }
public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation)
{
clientOperation.ParameterInspectors.Add(new Inspector());
}
public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
{
dispatchOperation.ParameterInspectors.Add(new Inspector());
}
public void Validate(OperationDescription operationDescription){ return; }
#Region "IOperationBehavior Members"
Public Sub AddBindingParameters(ByVal operationDescription As OperationDescription, _
ByVal bindingParameters As BindingParameterCollection) Implements _
IOperationBehavior.AddBindingParameters
Return
End Sub
Public Sub ApplyClientBehavior(ByVal operationDescription As OperationDescription, ByVal _
clientOperation As ClientOperation) Implements IOperationBehavior.ApplyClientBehavior
clientOperation.ParameterInspectors.Add(New Inspector())
End Sub
Public Sub ApplyDispatchBehavior(ByVal operationDescription As OperationDescription, ByVal dispatchOperation As _
DispatchOperation) Implements IOperationBehavior.ApplyDispatchBehavior
dispatchOperation.ParameterInspectors.Add(New Inspector())
End Sub
Public Sub Validate(ByVal operationDescription As OperationDescription) Implements IOperationBehavior.Validate
Return
End Sub
Açıklamalar
IOperationBehavior İstemci veya hizmet uygulamaları için uygulama düzeyinde işlem genelinde yürütmenin bazı yönlerini 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.
bir istemci uygulamasındaki ApplyClientBehavior istemci dağıtıcısına uzantılar değiştirmek, incelemek veya eklemek için yöntemini kullanın.
ApplyDispatchBehavior Bir hizmet uygulamasında işlem genelinde yürütmeye yönelik uzantıları değiştirmek, incelemek veya eklemek için yöntemini kullanın.
Validate yöntemini kullanarak belirli OperationDescription gereksinimleri karşıladığını onaylayın. Bu, bir işlemin 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.
IOperationBehavior 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
IOperationBehavior Tüm yöntemler bir OperationDescription nesneyi parametre olarak geçirir. Bu parametre yalnızca inceleme içindir; nesnesini değiştirirseniz OperationDescription yürütme davranışı tanımlanmamış olur.
IOperationBehavior nesneleri genellikle bir hizmet uygulamasındaki nesnenin System.ServiceModel.Dispatcher.DispatchOperation ve istemci uygulamasındaki nesnenin çeşitli özelliklerine System.ServiceModel.Dispatcher.ClientOperation erişmek için kullanılır.
Genellikle geliştirici, uygulama senaryosuna hangi özelleştirme seçeneğinin uygun olduğunu belirlemek için önce genişletilebilirlik noktalarını inceler ve ardından özelleştirmeyi uygun kapsamda uygular. Örneğin, System.ServiceModel.Description.IServiceBehavior nesneler tüm hizmetteki tüm iletiler için özelleştirmeler ekleyebilir ve System.ServiceModel.Description.IContractBehavior nesneler belirli bir sözleşmedeki tüm iletiler için özelleştirmeler ekleyebilir ve bu şekilde devam edebilir. 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 uygulanan özelleştirme arabirimi) ve IOperationBehavior uygun özelleştirme kapsamı olduğunda, işlem davranışı uygulanıp IOperationBehavior çalışma zamanına eklenerek özelleştirmenin Windows Communication Foundation (WCF) çalışma zamanına eklenmesi gerekir.
çalışma zamanına öğesini eklemenin IOperationBehavior iki yolu vardır:
Hizmet konağı (bir hizmet uygulamasında) veya kanal fabrikasının (istemci uygulamasında) açılmasından önce özel işlem davranışını OperationDescription.Behaviors program aracılığıyla özelliğine ekleyin.
Özel bir öznitelik kullanarak davranışı ekleyin.
Hedeflendiği hizmet özelleştirme görevini gerçekleştirmek için, nesneninIOperationBehavior, ü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 OperationDescription.Behaviors gerekir. İstemci özelleştirme görevini gerçekleştirmek için, IOperationBehavior üzerinde yöntemini veya yöntemini ChannelFactory<TChannel>çağırmadan önce nesnesinin ChannelFactory<TChannel>.CreateChannel özelliğine ICommunicationObject.Open eklenmesi OperationDescription.Behaviors gerekir.
İşlem davranışı tek bir işlem kapsamında çalışma zamanına kolay erişim için tasarlanmış olsa da, üst çalışma zamanı nesnesine erişerek çalışma zamanına daha büyük bir kapsamda erişebilirsiniz.
Yöntemler
AddBindingParameters(OperationDescription, BindingParameterCollection) |
Özel davranışı desteklemek için çalışma zamanında bağlamalara veri geçirmek için uygulayın. |
ApplyClientBehavior(OperationDescription, ClientOperation) |
bir işlemde istemcinin bir değişikliğini veya uzantısını uygular. |
ApplyDispatchBehavior(OperationDescription, DispatchOperation) |
Bir işlemde hizmetin değiştirilmesini veya uzantısını uygular. |
Validate(OperationDescription) |
İşlemin hedeflenen bazı ölçütleri karşıladığını onaylamak için uygulayın. |