OperationDescription Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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) |