OperationDescription Clase

Definición

Representa la descripción de una operación de contrato que proporciona una descripción de los mensajes que constituyen la operación.

public ref class OperationDescription
public class OperationDescription
type OperationDescription = class
Public Class OperationDescription
Herencia
OperationDescription

Ejemplos

En el ejemplo siguiente se usa el OperationDescription devuelto de la colección devuelta por la Operations propiedad de la ContractDescription clase . El código ejecuta una iteración en la colección de extremos e imprime cada nombre de extremo, así como el nombre de cada una de las operaciones del mismo.

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

Comentarios

Un contrato de Windows Communication Foundation (WCF) es una colección de operaciones que especifica lo que el punto de conexión se comunica con el mundo exterior. Cada operación es un intercambio de mensajes. Por ejemplo, un mensaje de solicitud y un mensaje de respuesta asociado forman un intercambio de mensajes solicitud/respuesta.

Se utiliza un objeto ContractDescription para describir los contratos y sus operaciones. Dentro de una ContractDescription, a cada operación de contrato le corresponde una OperationDescription que describe aspectos de la operación, por ejemplo, si la operación es unidireccional o solicitud/respuesta. Cada OperationDescription también describe los mensajes que constituyen la operación mediante una colección de objetos MessageDescription. ContractDescription contiene una referencia a una interfaz que define el contrato mediante el modelo de programación. Esta interfaz se marca con ServiceContractAttribute, y aquellos métodos que se correspondan con las operaciones del punto de conexión se marcan con OperationContractAttribute.

Muchas de las propiedades de OperationDescription tienen propiedades correspondientes en el modelo de programación WCF en OperationContractAttribute, por ejemplo, IsTerminating.

Constructores

OperationDescription(String, ContractDescription)

Inicializa una nueva instancia de la clase OperationDescription con un nombre y descripción de contrato especificados.

Propiedades

BeginMethod

Obtiene o establece el método de inicio de la operación.

Behaviors

Obtiene o establece los comportamientos de la operación asociados a la operación.

DeclaringContract

Obtiene o establece el contrato al que pertenece la operación.

EndMethod

Obtiene o establece el método de finalización de la operación.

Faults

Obtiene las descripciones de los errores asociados a la descripción de la operación.

HasProtectionLevel

Obtiene un valor que indica si se ha establecido un nivel de protección para la operación.

IsInitiating

Obtiene o establece un valor que indica si el método implementa una operación que puede iniciar una sesión en el servidor (si este tipo de sesión existe).

IsOneWay

Obtiene o establece un valor que indica si una operación devuelve un mensaje de respuesta.

IsTerminating

Obtiene o establece un valor que indica si la operación de servicio hace que el servidor cierre la sesión después de enviar el mensaje de respuesta, si lo hubiera.

KnownTypes

Obtiene los tipos conocidos asociados a la descripción de la operación.

Messages

Obtiene o establece las descripciones de los mensajes que constituyen la operación.

Name

Obtiene o establece el nombre de la descripción de la operación.

OperationBehaviors

Obtiene el conjunto de comportamientos de la operación.

ProtectionLevel

Obtiene o establece el nivel de protección de la operación.

SyncMethod

Obtiene o establece el método de sincronización de servicio de la descripción de la operación.

TaskMethod

Obtiene o establece el método utilizado para la operación de tarea.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ShouldSerializeProtectionLevel()

Devuelve un valor que indica si la propiedad ProtectionLevel ha cambiado respecto de su valor predeterminado y se debe serializar.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a