OperationDescription Classe

Definição

Representa a descrição de uma operação contratual que fornece uma descrição das mensagens que compõem a operação.

public ref class OperationDescription
public class OperationDescription
type OperationDescription = class
Public Class OperationDescription
Herança
OperationDescription

Exemplos

O exemplo seguinte utiliza o retorno OperationDescription da coleção devolvido pela Operations propriedade da ContractDescription classe. O código itera pela coleção de endpoints e imprime o nome de cada endpoint, bem como o nome de cada operação no 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

Observações

Um contrato da Windows Communication Foundation (WCF) é um conjunto de operações que especifica o que o endpoint comunica ao mundo exterior. Cada operação é uma troca de mensagens. Por exemplo, uma mensagem de pedido e uma mensagem de resposta associada formando uma troca de mensagens de pedido/resposta.

Um ContractDescription objeto é usado para descrever contratos e as suas operações. Dentro de um ContractDescription, cada operação contratual tem um correspondente OperationDescription que descreve aspetos da operação, como se a operação é unidirecional ou de pedido/resposta. Cada uma OperationDescription também descreve as mensagens que compõem a operação usando uma coleção de MessageDescription objetos. ContractDescription contém uma referência a uma interface que define o contrato usando o modelo de programação. Esta interface é marcada com ServiceContractAttribute, e os seus métodos que correspondem às operações de endpoint são marcados com OperationContractAttribute.

Muitas das propriedades em OperationDescription têm propriedades correspondentes no modelo de programação WCF em OperationContractAttribute, por exemplo, IsTerminating.

Construtores

Name Description
OperationDescription(String, ContractDescription)

Inicializa uma nova instância da OperationDescription classe com um nome e descrição do contrato especificados.

Propriedades

Name Description
BeginMethod

Obtém ou define o método de início da operação.

Behaviors

Obtém ou define os comportamentos de operação associados à operação.

DeclaringContract

Obtém ou define o contrato ao qual a operação pertence.

EndMethod

Obtém ou define o método final da operação.

Faults

Obtém as descrições das falhas associadas à descrição da operação.

HasProtectionLevel

Obtém um valor que indica se a operação teve um nível de proteção definido.

IsInitiating

Recebe ou define um valor que indica se o método implementa uma operação que pode iniciar uma sessão no servidor (caso tal sessão exista).

IsOneWay

Obtém ou define um valor que indica se uma operação retorna uma mensagem de resposta.

IsTerminating

Obtém ou define um valor que indica se a operação de serviço faz com que o servidor feche a sessão após o envio da mensagem de resposta, se houver.

KnownTypes

Obtém os tipos conhecidos associados à descrição da operação.

Messages

Obtém ou define as descrições das mensagens que compõem a operação.

Name

Recebe ou define o nome da descrição da operação.

OperationBehaviors

Obtém o conjunto de comportamentos para a operação.

ProtectionLevel

Obtém ou definem o nível de proteção para a operação.

SyncMethod

Obtém ou define o método de sincronização de serviços da descrição da operação.

TaskMethod

Obtém ou define o método usado para a operação da tarefa.

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ShouldSerializeProtectionLevel()

Devolve um valor que indica se a ProtectionLevel propriedade mudou em relação ao seu valor padrão e deve ser serializada.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a