Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este tema es aplicable a Windows Workflow Foundation 4.
En este ejemplo se muestra cómo integrar colas y transacciones en Windows Workflow Foundation (WF) para crear servicios escalables y fiables. TransactionScope se utiliza en el flujo de trabajo del cliente para enviar el mensaje a una cola en una transacción mediante NetMsmqBinding. TransactedReceiveScope se utiliza en el servidor para recibir mensajes de la cola y actualizar el estado del flujo de trabajo en la misma transacción.
Demostraciones
TransactionScope, TransactedReceiveScope, NetMsmqBinding, Receive y correlación basada en contenidos.
Análisis
Para mostrar las características incluidas en este ejemplo, se crea un servicio de flujo de trabajo RewardsPoints
que realiza un seguimiento de los puntos ganados y se utiliza para una cuenta determinada. El cliente utiliza WorkflowInvoker para simular el envío de varias solicitudes a la cola. Para mandar por correo un mensaje a la cola en una transacción, la actividad Send se puede colocar dentro de la propiedad Body de un objeto TransactionScope. En este ejemplo, el cliente se ejecuta primero, seguido del servidor, para mostrar cómo los mensajes en cola pueden desacoplar las aplicaciones servidor y cliente.
Cuando el cliente se completa, el servicio se configura y se hospeda. En cuanto se abre, comienza el proceso de los mensajes que ya se han colocado en la cola. Cada mensaje se recibe y se procesa bajo la misma transacción del servidor. En este ejemplo, el primer mensaje recibido es una solicitud CreateAccount
que crea la instancia e inicializa la correlación de contenidos en función del nombre de cuenta pasado como parte del mensaje de solicitud. Para modelar el tipo de servicio que se podría esperar en el mundo real, estas dos actividades TransactedReceiveScope que procesan los mensajes UsePoints
y AddPoints
se colocan en bifurcaciones paralelas dentro de un bucle while para que puedan procesar repetidamente estos mensajes en cualquier orden.
Tanto el objeto TransactionScope como TransactedReceiveScope tienen un punto de persistencia implícito al final de sus ámbitos, por lo que el uso de estas actividades en WF combinadas con colas es una manera fiable de mover el flujo de trabajo desde un estado coherente al siguiente y asegurarse al mismo tiempo de que nunca se pierdan los mensajes.
Para configurar, compilar y ejecutar el ejemplo
Instale y configure MSMQ. Vea Instalar Message Queue Server (MSMQ) para obtener más detalles.
Ejecute el comando net start msdtc en una línea de comandos para asegurarse de que MSDTC se está ejecutando.
Compile el proyecto y abra la aplicación ejecutable o el proyecto en Visual Studio 2010 y seleccione una opción de inicio en el menú de depuración. Primero, se crea la cola; a continuación, el cliente se ejecuta y envía mensajes a la cola y, finalmente, el servicio se inicia y se procesan los mensajes. Para salir del programa, presione Entrar.
![]() |
---|
Puede que los ejemplos ya estén instalados en su equipo. Compruebe el siguiente directorio (valor predeterminado) antes de continuar.
<InstallDrive>: \WF_WCF_Samples
Si no existe este directorio, vaya a la página de ejemplos de Windows Communication Foundation (WCF) y Windows Workflow Foundation (WF) Samples para .NET Framework 4 para descargar todos los ejemplos de WF y Windows Communication Foundation (WCF). Este ejemplo se encuentra en el siguiente directorio.
<InstallDrive>:\WF_WCF_Samples\WF\Scenario\Transactions\TransactedQueues
|