Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase OperationContractAttribute

 

Publicado: octubre de 2016

Indica que un método define una operación que forma parte de un contrato de servicio en una aplicación Windows Communication Foundation (WCF).

Espacio de nombres:   System.ServiceModel
Ensamblado:  System.ServiceModel (en System.ServiceModel.dll)

System.Object
  System.Attribute
    System.ServiceModel.OperationContractAttribute

[AttributeUsageAttribute(AttributeTargets.Method)]
public sealed class OperationContractAttribute : Attribute

NombreDescripción
System_CAPS_pubmethodOperationContractAttribute()

Inicializa una nueva instancia de la clase OperationContractAttribute.

NombreDescripción
System_CAPS_pubpropertyAction

Obtiene o establece la acción WS-Addressing del mensaje de solicitud.

System_CAPS_pubpropertyAsyncPattern

Indica que una operación se implementa de forma asincrónica utilizando un Begin<methodName> y End<methodName> par de métodos en un contrato de servicio.

System_CAPS_pubpropertyHasProtectionLevel

Obtiene un valor que indica si los mensajes para esta operación deben cifrarse, firmarse o ambos.

System_CAPS_pubpropertyIsInitiating

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 tal sesión existe).

System_CAPS_pubpropertyIsOneWay

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

System_CAPS_pubpropertyIsTerminating

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.

System_CAPS_pubpropertyName

Obtiene o establece el nombre de la operación.

System_CAPS_pubpropertyProtectionLevel

Obtiene o establece un valor que especifica si los mensajes de una operación deben cifrarse, firmarse o ambos.

System_CAPS_pubpropertyReplyAction

Obtiene o establece el valor de la acción SOAP para el mensaje de respuesta de la operación.

System_CAPS_pubpropertyTypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.(Heredado de Attribute).

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Esta API admite la infraestructura producto y no está diseñada para usarse directamente desde el código. Devuelve un valor que indica si esta instancia equivale al objeto especificado. (Heredado de Attribute).

System_CAPS_pubmethodGetHashCode()

Devuelve el código hash de esta instancia.(Heredado de Attribute).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodIsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.(Heredado de Attribute).

System_CAPS_pubmethodMatch(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual al objeto especificado. (Heredado de Attribute).

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

NombreDescripción
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.(Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información del tipo de un objeto, que puede utilizarse para obtener la información del tipo de una interfaz. (Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de tipo de información que suministra un objeto (0 ó 1)

(Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.(Heredado de Attribute).

Aplique OperationContractAttribute a un método para indicar que el método implementa una operación de servicio como parte de un contrato de servicio (especificado por un atributo ServiceContractAttribute).

Use las propiedades OperationContractAttribute para controlar la estructura de la operación y los valores expresados en metadatos:

  • La propiedad Action especifica la acción que identifica de forma unívoca esta operación.WCF envía los mensajes de solicitud a los métodos basados en su acción.

  • La propiedad AsyncPattern indica que la operación se implementa o se puede llamar de forma asincrónica utilizando un par de métodos Begin/End.

  • La propiedad HasProtectionLevel indica si se ha definido de forma explícita la propiedad ProtectionLevel.

  • La propiedad IsOneWay indica que la operación solo consiste en un mensaje de entrada. La operación no tiene ningún mensaje de salida asociado.

  • La propiedad IsInitiating especifica si esta operación puede ser la operación inicial en una sesión.

  • La propiedad IsTerminating especifica si WCF intenta finalizar la sesión actual después de que la operación haya terminado.

  • La propiedad ProtectionLevel especifica la seguridad del nivel de mensaje que una operación necesita en el tiempo de ejecución.

  • La propiedad ReplyAction especifica la acción del mensaje de respuesta para la operación.

El atributo OperationContractAttribute declara que un método es una operación en un contrato de servicio. Solo los métodos atribuidos a OperationContractAttribute se exponen como operaciones de servicio. Un contrato de servicio sin métodos marcado con OperationContractAttribute no expone ninguna operación.

El AsyncPattern propiedad indica que un par de Begin<methodName> y End<methodName> métodos forman una operación única implementada de forma asincrónica (en el cliente o el servicio). La capacidad de un servicio de implementar operaciones de forma asincrónica es un detalle de implementación de servicio y no está expuesto en metadatos (como el Lenguaje de descripción de servicios Web [WSDL]).

De igual forma, los clientes pueden decidir invocar de forma asincrónica las operaciones independientemente de cómo se implemente el método de servicio. Se recomienda llamar a las operaciones de servicio asincrónicas en el cliente cuando un método de servicio tarda algo de tiempo pero debe devolver la información directamente al cliente. Para obtener información detallada, vea AsyncPattern.

La propiedad IsOneWay indica que un método no devuelve ningún valor en absoluto, incluido un mensaje de respuesta subyacente vacío. Este tipo de método es útil para notificaciones o comunicaciones con estilo de eventos. Los métodos de este tipo no pueden devolver un mensaje de respuesta de manera que la declaración del método debe devolver el valor void.

System_CAPS_importantImportante

Cuando se recuperan mediante programación la información almacenada en este atributo, utilice la ContractDescription clase en lugar de reflexión.

System_CAPS_noteNota

Si la propiedad IsOneWay está establecida en false (el valor predeterminado), incluso los métodos que devuelven el valor void son métodos bidireccionales en el nivel de mensaje subyacente. En este caso, la infraestructura crea y envía un mensaje vacío para indicar al autor de la llamada que se ha devuelto el método. Utilizar este enfoque permite a la aplicación y a la infraestructura devolver información de error (como error de SOAP) al cliente. Establecer IsOneWay en true es la única manera de evitar la creación y distribución de un mensaje de respuesta. Para obtener más información, consulta Servicios unidireccionales.

Se pueden usar las propiedades Action y ReplyAction no solo para modificar la acción predeterminada de mensajes SOAP sino también para crear controladores para mensajes desconocidos o deshabilitar la adición de acciones para la programación directa del mensaje. Utilice la propiedad IsInitiating para evitar que los clientes llamen a una operación de servicio determinada antes de otras operaciones. Utilice la propiedad IsTerminating para que WCF cierre el canal después de que los clientes llamen a una operación de servicio determinada. Para obtener más información, consulta Uso de sesiones.

La propiedad ProtectionLevel le permite especificar en el contrato de la operación si los mensajes de la operación están firmados, cifrados, o firmados y cifrados. Si un enlace no puede proporcionar el nivel de seguridad exigido por el contrato, se producirá una excepción en el tiempo de ejecución. Para obtener más información, consulte ProtectionLevel y Descripción de los niveles de protección.

El ejemplo de código siguiente muestra un contrato de servicio simple con una operación.

using System;
using System.Collections.Generic;
using System.Net.Security;
using System.ServiceModel;
using System.Text;

namespace Microsoft.WCF.Documentation
{
  [ServiceContract(Namespace="Microsoft.WCF.Documentation")]
  public interface ISampleService{
    // This operation specifies an explicit protection level requirement.
    [OperationContract(ProtectionLevel=ProtectionLevel.EncryptAndSign)]
    string SampleMethod(string msg);
  }

  class SampleService : ISampleService
  {
  #region ISampleService Members

  public string  SampleMethod(string msg)
  {
    Console.WriteLine("Called with: {0}", msg);
 	  return "The service greets you: " + msg;
  }

  #endregion
  }
}

El ejemplo siguiente es un servicio que implementa un contrato de servicio implícito que especifica tres operaciones. Dos de las operaciones son bidireccionales, que devuelven mensajes de respuesta subyacentes al autor de la llamada sin tener en cuenta el valor devuelto. La tercera operación recibe una llamada, un mensaje entrante subyacente, pero no devuelve ningún mensaje de respuesta subyacente.

[ServiceContractAttribute]
public class OneAndTwoWay
{
  // The client waits until a response message appears.
  [OperationContractAttribute]
  public int MethodOne (int x, out int y)
  {
    y = 34;
    return 0;
  }

  // The client waits until an empty response message appears.
  [OperationContractAttribute]
  public void MethodTwo (int x)
  {
    return;
  }

  // The client returns as soon as an outbound message
  // is dispatched to the service; no response
  // message is generated or sent from the service.
  [OperationContractAttribute(IsOneWay=true)]
  public void MethodThree (int x)
  {
    return;
  }
}

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 3.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: