IOperationBehavior Interfaccia
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Implementa metodi che possono essere usati per estendere il comportamento di runtime per un'operazione in un servizio o in un'applicazione client.
public interface class IOperationBehavior
public interface IOperationBehavior
type IOperationBehavior = interface
Public Interface IOperationBehavior
- Derivato
Esempio
Nell'esempio di codice seguente viene illustrata un'implementazione di System.ServiceModel.Dispatcher.IParameterInspector che scrive nella console quando il controllo viene richiamato su un'operazione. Questa personalizzazione può essere associata solo all'oggetto System.ServiceModel.Dispatcher.DispatchOperation o System.ServiceModel.Dispatcher.ClientOperation e pertanto viene in genere inserita da un comportamento dell'operazione.
#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
Nell'esempio di codice seguente viene illustrato come il comportamento dell'operazione collega il controllo dei parametri al runtime.
#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
Commenti
Implementare l'interfaccia IOperationBehavior per modificare, esaminare o estendere alcuni aspetti dell'esecuzione a livello di operazione a livello di applicazione per le applicazioni client o di servizio.
Usare il AddBindingParameters metodo per passare dati personalizzati in fase di esecuzione per abilitare le associazioni per supportare il comportamento personalizzato.
Usare il ApplyClientBehavior metodo per modificare, esaminare o inserire estensioni a un dispatcher client in un'applicazione client.
Utilizzare il ApplyDispatchBehavior metodo per modificare, esaminare o inserire estensioni per l'esecuzione a livello di operazione in un'applicazione di servizio.
Usare il Validate metodo per verificare che un OperationDescription oggetto soddisfi requisiti specifici. Questa opzione può essere usata per assicurarsi che un'operazione abbia una determinata impostazione di configurazione abilitata, supporti una particolare funzionalità e altri requisiti.
IOperationBehavior gli oggetti possono utilizzare uno di questi metodi, ma spesso solo uno è importante; in questi casi, i metodi inutilizzati possono restituire, senza eseguire alcuna azione.
Annotazioni
Tutti i IOperationBehavior metodi passano un OperationDescription oggetto come parametro. Questo parametro è solo per l'esame; se si modifica l'oggetto il OperationDescription comportamento di esecuzione non è definito.
IOperationBehavior gli oggetti vengono in genere utilizzati per accedere alle varie proprietà dell'oggetto System.ServiceModel.Dispatcher.DispatchOperation in un'applicazione di servizio e all'oggetto System.ServiceModel.Dispatcher.ClientOperation in un'applicazione client.
In genere, lo sviluppatore esamina prima i punti di estendibilità per determinare quale opzione di personalizzazione si adatta allo scenario dell'applicazione e quindi implementa la personalizzazione nell'ambito appropriato. Ad esempio, System.ServiceModel.Description.IServiceBehavior gli oggetti possono inserire personalizzazioni per tutti i messaggi in un intero servizio e System.ServiceModel.Description.IContractBehavior gli oggetti possono inserire personalizzazioni per tutti i messaggi in un contratto specifico e così via. Per una descrizione delle varie proprietà e personalizzazioni disponibili, vedere Estensione di ServiceHost e del livello del modello di servizio.
Dopo aver deciso una personalizzazione (e l'interfaccia di personalizzazione implementata, se necessario) e l'ambito IOperationBehavior appropriato della personalizzazione, la personalizzazione deve essere inserita nel runtime di Windows Communication Foundation (WCF) implementando IOperationBehavior e aggiungendo il comportamento dell'operazione al runtime.
Esistono due modi per aggiungere l'oggetto IOperationBehavior al runtime:
Aggiungere a livello di codice il comportamento dell'operazione personalizzata alla OperationDescription.Behaviors proprietà prima dell'apertura dell'host del servizio (in un'applicazione di servizio) o della channel factory (in un'applicazione client).
Aggiungere il comportamento usando un attributo personalizzato.
Per eseguire l'attività di personalizzazione del servizio per cui è prevista, l'oggetto IOperationBehavior deve essere aggiunto alla OperationDescription.Behaviors proprietà prima della costruzione del runtime del servizio, che si verifica quando ICommunicationObject.Open viene chiamato il metodo su System.ServiceModel.ServiceHost. Per eseguire un'attività di personalizzazione client, è necessario aggiungere l'oggetto IOperationBehavior alla OperationDescription.Behaviors proprietà prima di chiamare il ChannelFactory<TChannel>.CreateChannel metodo o il ICommunicationObject.Open metodo in ChannelFactory<TChannel>.
Anche se il comportamento dell'operazione è progettato per semplificare l'accesso al runtime nell'ambito di una singola operazione, è possibile accedere al runtime in un ambito più ampio accedendo all'oggetto runtime padre.
Metodi
| Nome | Descrizione |
|---|---|
| AddBindingParameters(OperationDescription, BindingParameterCollection) |
Implementare per passare i dati in fase di esecuzione alle associazioni per supportare il comportamento personalizzato. |
| ApplyClientBehavior(OperationDescription, ClientOperation) |
Implementa una modifica o un'estensione del client in un'operazione. |
| ApplyDispatchBehavior(OperationDescription, DispatchOperation) |
Implementa una modifica o un'estensione del servizio in un'operazione. |
| Validate(OperationDescription) |
Implementare per verificare che l'operazione soddisfi alcuni criteri previsti. |