Compartilhar via


OperationDescription Classe

Definição

Representa a descrição de uma operação do contrato que fornece uma descrição das mensagens que formam a operação.

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

Exemplos

O exemplo a seguir usa o OperationDescription retornado da coleção retornado pela Operations propriedade da ContractDescription classe. O código itera por meio da coleção de pontos de extremidade e imprime cada nome de ponto de extremidade, bem como o nome de cada operação no ponto de extremidade.

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

Comentários

Um contrato da WCF (Windows Communication Foundation) é uma coleção de operações que especifica o que o ponto de extremidade se comunica com o mundo exterior. Cada operação é uma troca de mensagens. Por exemplo, uma mensagem de solicitação e uma mensagem de resposta associada formando uma troca de mensagens de solicitação/resposta.

Um ContractDescription objeto é usado para descrever contratos e suas operações. Dentro de uma ContractDescription, cada operação de contrato tem um correspondente OperationDescription que descreve aspectos da operação, como se a operação é unidirecional ou de solicitação/resposta. Cada OperationDescription um 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. Essa interface é marcada com ServiceContractAttribute, e seus métodos que correspondem às operações de ponto de extremidade são marcados com OperationContractAttribute.

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

Construtores

OperationDescription(String, ContractDescription)

Inicializa uma nova instância da classe OperationDescription com uma descrição de nome e uma descrição de contrato especificadas.

Propriedades

BeginMethod

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

Behaviors

Obtém ou define os comportamentos da 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 de término 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 tem um nível de proteção definido.

IsInitiating

Obtém ou define um valor que indica se o método implementa uma operação que pode iniciar uma sessão no servidor (se essa sessão existir).

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 o servidor fechar a sessão depois que a mensagem de resposta, se houver, for enviada.

KnownTypes

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

Messages

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

Name

Obtém 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 define o nível de proteção para a operação.

SyncMethod

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

TaskMethod

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

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ShouldSerializeProtectionLevel()

Retorna um valor que indica se a propriedade ProtectionLevel foi alterada do valor padrão e se deve ser serializada.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a