Partilhar via


OperationDescription Classe

Definição

Representa a descrição de uma operação de contrato 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 a seguir usa o OperationDescription retornado da coleção retornada 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 do Windows Communication Foundation (WCF) é uma coleção de operações que especifica o que o ponto de extremidade 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. Em uma ContractDescriptionoperação de contrato, cada operação de contrato tem um correspondente OperationDescription que descreve aspectos da operação, como se a operação é unidirecional ou 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 em, por exemplo, IsTerminating.

Construtores

Nome Description
OperationDescription(String, ContractDescription)

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

Propriedades

Nome Description
BeginMethod

Obtém ou define o método begin 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

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 compõem a operação.

Name

Obtém ou define o nome da descrição da operação.

OperationBehaviors

Obtém o conjunto de comportamentos da operação.

ProtectionLevel

Obtém ou define o nível de proteção da operação.

SyncMethod

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

TaskMethod

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

Métodos

Nome Description
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 Objectatual.

(Herdado de Object)
ShouldSerializeProtectionLevel()

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

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a