OperationDescription Classe

Definizione

Rappresenta la descrizione di un'operazione del contratto che fornisce una descrizione dei messaggi che costituiscono l'operazione.

public ref class OperationDescription
public class OperationDescription
type OperationDescription = class
Public Class OperationDescription
Ereditarietà
OperationDescription

Esempio

Nell'esempio seguente viene usato il OperationDescription restituito dall'insieme restituito dalla Operations proprietà della ContractDescription classe . Il codice scorre la raccolta di endpoint e stampa ogni nome di endpoint nonché il nome di ogni operazione nell'endpoint.

private void PrintDescription(ServiceHost sh)
{
    // Declare variables.
    int i, j, k, l, c;
    ServiceDescription servDesc = sh.Description;
    OperationDescription opDesc;
    ContractDescription contractDesc;
    MessageDescription methDesc;
    MessageBodyDescription mBodyDesc;
    MessagePartDescription partDesc;
    IServiceBehavior servBeh;
    ServiceEndpoint servEP;

    // Print the behaviors of the service.
    Console.WriteLine("Behaviors:");
    for (c = 0; c < servDesc.Behaviors.Count; c++)
    {
        servBeh = servDesc.Behaviors[c];
        Console.WriteLine("\t{0}", servBeh.ToString());
    }

    // Print the endpoint descriptions of the service.
    Console.WriteLine("Endpoints");
    for (i = 0; i < servDesc.Endpoints.Count; i++)
    {
        // Print the endpoint names.
        servEP = servDesc.Endpoints[i];
        Console.WriteLine("\tName: {0}", servEP.Name);
        contractDesc = servEP.Contract;

        Console.WriteLine("\tOperations:");
        for (j = 0; j < contractDesc.Operations.Count; j++)
        {
            // Print the operation names.
            opDesc = servEP.Contract.Operations[j];
            Console.WriteLine("\t\t{0}", opDesc.Name);
            Console.WriteLine("\t\tActions:");
            for (k  = 0; k < opDesc.Messages.Count; k++)
            {
                // Print the message action.
                methDesc = opDesc.Messages[k];
                Console.WriteLine("\t\t\tAction:{0}", methDesc.Action);

                // Check for the existence of a body, then the body description.
                mBodyDesc = methDesc.Body;
                if (mBodyDesc.Parts.Count > 0)
                {
                    for (l = 0; l < methDesc.Body.Parts.Count; l++)
                    {
                        partDesc = methDesc.Body.Parts[l];
                        Console.WriteLine("\t\t\t\t{0}",partDesc.Name);
                    }
                }
            }
        }
    }
}
Private Sub PrintDescription(ByVal sh As ServiceHost) 
    ' Declare variables.
    Dim i, j, k, l, c As Integer
    Dim servDesc As ServiceDescription = sh.Description
    Dim opDesc As OperationDescription
    Dim contractDesc As ContractDescription
    Dim methDesc As MessageDescription
    Dim mBodyDesc As MessageBodyDescription
    Dim partDesc As MessagePartDescription
    Dim servBeh As IServiceBehavior
    Dim servEP As ServiceEndpoint
    
    ' Print the behaviors of the service.
    Console.WriteLine("Behaviors:")
    For c = 0 To servDesc.Behaviors.Count-1
        servBeh = servDesc.Behaviors(c)
        Console.WriteLine(vbTab + "{0}", servBeh)
    Next c
    
    ' Print the endpoint descriptions of the service.
    Console.WriteLine("Endpoints")
    For i = 0 To servDesc.Endpoints.Count-1
        ' Print the endpoint names.
        servEP = servDesc.Endpoints(i)
        Console.WriteLine(vbTab + "Name: {0}", servEP.Name)
        contractDesc = servEP.Contract
        
        Console.WriteLine(vbTab + "Operations:")
        For j = 0 To contractDesc.Operations.Count-1
            ' Print operation names.
            opDesc = servEP.Contract.Operations(j)
            Console.WriteLine(vbTab + vbTab + "{0}", opDesc.Name)
            Console.WriteLine(vbTab + vbTab + "Actions:")
            For k = 0 To opDesc.Messages.Count-1
                ' Print the message action. 
                methDesc = opDesc.Messages(k)
                Console.WriteLine(vbTab + vbTab + vbTab + _
                  "Action:{0}", methDesc.Action)
                
                ' Check for the existence of a body, then the body description.
                mBodyDesc = methDesc.Body
                If mBodyDesc.Parts.Count > 0 Then
                    For l = 0 To methDesc.Body.Parts.Count-1
                        partDesc = methDesc.Body.Parts(l)
                        Console.WriteLine(vbTab + vbTab + _
                        vbTab + vbTab + "{0}", partDesc.Name)
                    Next l
                End If
            Next k
        Next j
    Next i

End Sub

Commenti

Un contratto di Windows Communication Foundation (WCF) è una raccolta di operazioni che specifica cosa comunica l'endpoint al mondo esterno. Ogni operazione consiste in uno scambio di messaggi. Ad esempio, un messaggio di richiesta e un messaggio di risposta associato costituiscono un scambio di messaggi di tipo request/reply.

Un oggetto ContractDescription viene utilizzato per descrivere i contratti e le relative operazioni. All'interno di un elemento ContractDescription, ogni operazione del contratto dispone di una classe OperationDescription corrispondente che descrive gli aspetti dell'operazione, ad esempio se si tratta di un'operazione unidirezionale o di tipo request/reply. Ogni classe OperationDescription descrive a sua volta i messaggi che costituiscono l'operazione, utilizzando una raccolta di oggetti MessageDescription. ContractDescription contiene un riferimento a un'interfaccia che definisce il contratto utilizzando il modello di programmazione. Questa interfaccia è contrassegnata con ServiceContractAttribute e i metodi che corrispondono alle operazioni dell'endpoint sono contrassegnati con OperationContractAttribute.

Molte delle proprietà in OperationDescription hanno proprietà corrispondenti nel modello di programmazione WCF in OperationContractAttribute, ad esempio IsTerminating.

Costruttori

OperationDescription(String, ContractDescription)

Inizializza una nuova istanza della classe OperationDescription con un nome e una descrizione del contratto specificati.

Proprietà

BeginMethod

Ottiene o imposta il metodo Begin dell'operazione.

Behaviors

Ottiene o imposta i comportamenti dell'operazione associati all'operazione.

DeclaringContract

Ottiene o imposta il contratto al quale appartiene l'operazione.

EndMethod

Ottiene o imposta il metodo End dell'operazione.

Faults

Ottiene le descrizioni degli errori associati alla descrizione dell'operazione.

HasProtectionLevel

Ottiene un valore che indica se è stato impostato un livello di protezione per l'operazione.

IsInitiating

Ottiene o imposta un valore che indica se il metodo implementa un'operazione in grado di avviare una sessione nel server (se tale sessione esiste).

IsOneWay

Ottiene o imposta un valore che indica se l'operazione restituisce un messaggio di risposta.

IsTerminating

Ottiene o imposta un valore che indica se l'operazione di servizio causa la chiusura della sessione da parte del server dopo l'invio di un eventuale messaggio di risposta.

KnownTypes

Ottiene i tipi conosciuti associati alla descrizione dell'operazione.

Messages

Ottiene o imposta le descrizioni dei messaggi che costituiscono l'operazione.

Name

Ottiene o imposta il nome della descrizione della proprietà.

OperationBehaviors

Ottiene il set di comportamenti per l'operazione.

ProtectionLevel

Ottiene o imposta il livello di protezione per l'operazione.

SyncMethod

Ottiene o imposta il metodo di sincronizzazione del servizio della descrizione della proprietà.

TaskMethod

Ottiene o imposta il metodo utilizzato per l'operazione dell'attività.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ShouldSerializeProtectionLevel()

Restituisce un valore che indica se la proprietà ProtectionLevel è cambiata rispetto al valore predefinito e deve essere serializzata.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a