Desarrollo de servicio de flujo de trabajo de contrato primero

A partir de .NET Framework 4.5, Windows Workflow Foundation (WF) cuenta con una mejor integración entre los servicios web y los flujos de trabajo en forma de desarrollo de flujo de trabajo de contrato primero. La herramienta de desarrollo de flujo de trabajo de contrato primero permite diseñar el contrato en Code First. La herramienta después genera automáticamente una plantilla de actividad en el cuadro de herramientas para las operaciones del contrato. Este tema proporciona información general sobre cómo se asignan las actividades y las propiedades de un servicio de flujo de trabajo a los atributos de un contrato de servicio. Para ver un ejemplo paso a paso de cómo crear un servicio de flujo de trabajo de contrato primero, consulte Procedimiento para crear un servicio de flujo de trabajo que consuma un contrato de servicio existente.

En este tema

Asignar atributos de contrato de servicio a atributos de flujo de trabajo

En las tablas de las siguientes secciones se especifican los diferentes atributos y propiedades de WCF, así como el modo en que se asignan a las actividades y a las propiedades de mensajería en un flujo de trabajo de contrato primero.

Atributos de contrato de servicio

Nombre de la propiedad Compatible Descripción Validación WF
CallbackContract No Obtiene o establece el tipo de contrato de devolución de llamada cuando el contrato es un contrato dúplex. (No disponible)
ConfigurationName No Obtiene o establece el nombre utilizado para buscar el servicio en un archivo de configuración de la aplicación. (No disponible)
HasProtectionLevel Obtiene un valor que indica si el miembro tiene un nivel de protección asignado. Receive.ProtectionLevel no debe ser NULL.
Nombre Obtiene o establece el nombre para <portType> con el lenguaje de descripción de servicios Web (WSDL). Receive.ServiceContractName.LocalName debe coincidir.
Espacio de nombres Yes Obtiene o establece el espacio de nombres para <portType> con el lenguaje de descripción de servicios Web (WSDL). Receive.ServiceContractName.NameSpace debe coincidir.
ProtectionLevel Especifica si el enlace para el contrato debe admitir el valor de la propiedad ProtectionLevel. Receive.ProtectionLevel debe coincidir.
SessionMode No Obtiene o establece si se permiten sesiones, si no se permiten o si son necesarias. (No disponible)
TypeId No Cuando se implementa en una clase derivada, obtiene un identificador único para este atributo. (Heredado del atributo) (No disponible)

Inserte aquí el cuerpo de la subsección.

Atributos de contrato de operación

Nombre de la propiedad Compatible Descripción Validación WF
Acción Obtiene o establece la acción WS-Addressing del mensaje de solicitud. Receive.Action debe coincidir.
AsyncPattern No Indica que una operación se implementa utilizando de forma asincrónica un par de métodos Begin<nombreDelMétodo> y End<nombreDelMétodo> en un contrato de servicio. (No disponible)
HasProtectionLevel Obtiene un valor que indica si los mensajes para esta operación deben cifrarse, firmarse o ambos. Receive.ProtectionLevel no debe ser NULL.
IsInitiating No 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). (No disponible)
IsOneWay Obtiene o establece un valor que indica si una operación devuelve un mensaje de respuesta. (Ningún SendReply para este Receive o ningún ReceiveReply para este envío).
IsTerminating No 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. (No disponible)
Nombre Obtiene o establece el nombre de la operación. Receive.OperationName debe coincidir.
ProtectionLevel Yes Obtiene o establece un valor que especifica si los mensajes de una operación deben cifrarse, firmarse o ambos. Receive.ProtectionLevel debe coincidir.
ReplyAction Yes Obtiene o establece el valor de la acción SOAP para el mensaje de respuesta de la operación. SendReply.Action debe coincidir.
TypeId No Cuando se implementa en una clase derivada, obtiene un identificador único para este atributo. (Heredado del atributo) (No disponible)

Atributos de contrato de mensaje

Nombre de la propiedad Compatible Descripción Validación WF
HasProtectionLevel Obtiene un valor que indica si el mensaje tiene un nivel de protección. Ninguna validación (Receive.Content y SendReply.Content deben coincidir con el tipo de contrato de mensaje).
IsWrapped Yes Obtiene o establece un valor que especifica si el cuerpo del mensaje tiene un elemento contenedor. Ninguna validación (Receive.Content y Sendreply.Content deben coincidir con el tipo de contrato de mensaje).
ProtectionLevel No Obtiene o establece un valor que especifica si los mensajes deben cifrarse, firmarse o las dos cosas. (No disponible)
TypeId Cuando se implementa en una clase derivada, obtiene un identificador único para este atributo. (Heredado del atributo) Ninguna validación (Receive.Content y SendReply.Content deben coincidir con el tipo de contrato de mensaje).
WrapperName Obtiene o establece el nombre del elemento contenedor del cuerpo del mensaje. Ninguna validación (Receive.Content y SendReply.Content deben coincidir con el tipo de contrato de mensaje).
WrapperNamespace No Obtiene o establece el espacio de nombres del elemento contenedor del cuerpo del mensaje. (No disponible)

Atributos de contrato de datos

Nombre de la propiedad Compatible Descripción Validación WF
IsReference No Obtiene o establece un valor que indica si conservar los datos de referencia al objeto. (No disponible)
Nombre Obtiene o establece el nombre del contrato de datos para el tipo. Ninguna validación (Receive.Content y SendReply.Content deben coincidir con el tipo de contrato de mensaje).
Espacio de nombres Yes Obtiene o establece el espacio de nombres del contrato de datos para el tipo. Ninguna validación (Receive.Content y SendReply.Content deben coincidir con el tipo de contrato de mensaje).
TypeId No Cuando se implementa en una clase derivada, obtiene un identificador único para este atributo. (Heredado del atributo) (No disponible)

Atributos de contrato de error

Nombre de la propiedad Compatible Descripción Validación WF
Acción Obtiene o establece la acción del mensaje de error de SOAP que se especifica como parte del contrato de la operación. SendReply.Action debe coincidir.
DetailType Yes Obtiene el tipo de un objeto serializable que contiene información de error. SendReply.Content debe coincidir con el tipo
HasProtectionLevel No Obtiene un valor que indica si el mensaje de error de SOAP tiene un nivel de protección asignado. (No disponible)
Nombre No Obtiene o establece el nombre del mensaje de error en el Lenguaje de descripción de servicios Web (WSDL). (No disponible)
Espacio de nombres No Obtiene o establece el espacio de nombres del error de SOAP. (No disponible)
ProtectionLevel No Especifica el nivel de protección que el error de SOAP requiere del enlace. (No disponible)
TypeId No Cuando se implementa en una clase derivada, obtiene un identificador único para este atributo. (Heredado del atributo) (No disponible)

Información adicional sobre compatibilidad e implementación

Características no admitidas de contrato de servicio

  • No se admite el uso de tareas TPL (biblioteca de tareas en paralelo) en contratos.

  • No se admite la herencia en contratos de servicio.

Generación de actividades de mensajería configuradas

Dos métodos static públicos se agregan a las actividades Receive y SendReply para admitir la creación de actividades de mensaje preconfiguradas al usar servicios de flujo de trabajo de contrato primero.

La actividad generada por estos métodos debe pasar la validación del contrato y, por consiguiente, estos métodos se usan internamente como parte de la lógica de validación para Receive y SendReply. OperationName, ServiceContractName, Action, SerializerOption, ProtectionLevel y KnownTypes están preconfigurados para coincidir con el contrato importado. En la página de propiedades de contenido para las actividades del Diseñador de flujo de trabajo, las secciones Mensaje o Parámetros también están preconfiguradas para coincidir con el contrato.

Los contratos de error de WCF también se controlan con la devolución de un conjunto aparte de actividades SendReply configuradas para cada uno de los errores que aparecen en FaultsFaultDescriptionCollection.

Para otras partes de OperationDescription que los servicios WF no admiten actualmente (por ejemplo, los comportamientos WebGet y WebInvoke, o comportamientos de operación personalizados), la API omite esos valores en la generación y la configuración. No se producirán excepciones.