Compartir a través de


Implementación de un flujo de trabajo como un servicio web

El marco de Windows Workflow Foundation admite la interoperabilidad con servicios web. Esto incluye la capacidad de exponer un flujo de trabajo como un servicio web a clientes de ASP.NET y otros flujos de trabajo. Windows Workflow Foundation admite la publicación de un flujo de trabajo como servicio web de ASP.NET en un servidor web, o en una batería de servidores que ejecutan ASP.NET en Internet Information Services (IIS) 6.0. Dado que la compatibilidad de un servicio web con Windows Workflow Foundation está basada en ASP.NET 2.0, hereda la mayoría de las características de un servicio web estándar de ASP.NET.

La biblioteca de actividades base de Windows Workflow Foundation contiene las actividades WebServiceInputActivity y WebServiceOutputActivity, que permiten utilizar un flujo de trabajo como puntos finales del servicio web. Para obtener más información acerca de la utilización de estas actividades de servicio web, vea Uso de la actividad WebServiceInputActivity y Uso de la actividad WebServiceOutputActivity.

Hospedaje web del flujo de trabajo

Las clases primarias utilizadas para el hospedaje web de flujos de trabajo son:

WorkflowWebHostingModule

La clase WorkflowWebHostingModule es el mecanismo de enrutamiento predeterminado para enrutar una solicitud de servicio web hasta una instancia de flujo de trabajo adecuada mediante las cookies de ASP.NET. Por supuesto, es necesario que los clientes que realizan estas solicitudes admitan las cookies.

Aunque Windows Workflow Foundation proporciona este mecanismo de enrutamiento predeterminado, puede implementar su propio enrutamiento personalizado. Por ejemplo, en casos en los que no existe la opción de habilitar las cookies en el cliente, éste puede configurarse de modo que cree la instancia de flujo de trabajo con un id. específico y lo pase en cada solicitud de servicio web. La canalización de solicitudes puede configurarse con controladores SOAP o HTTP que intercepten la llamada, recuperen el id. de instancia de flujo de trabajo de la información de encabezado y, a continuación, establezcan HttpContext.Current.Items.Add("__WorkflowInstanceId__", workflowInstanceId) en el id. entrante.

ManualWorkflowSchedulerService

La clase ManualWorkflowSchedulerService es una implementación especializada de WorkflowSchedulerService que controla el número de subprocesos generado en un proceso de ASP.NET mediante la reutilización del subproceso que realizó la solicitud web de ASP.NET para ejecutar la instancia de flujo de trabajo. De este modo se asegura de que en cualquier momento, el número de subprocesos activos en el tiempo de ejecución del flujo de trabajo es igual que el número de solicitudes web activas en el proceso de ASP.NET.

Limitaciones de los flujos de trabajo expuestos como servicios web

El enrutamiento de instancias funciona en base a una sesión de ASP.NET. Como consumidor de un servicio web necesita admitir una cookie de ASP.NET.

Aunque la operación recepción de solicitud-envío de respuesta puede modelarse como asincrónica en un flujo de trabajo, la limitación general de ASP.NET se aplica al consumidor de un servicio web, es decir, una instancia no puede migrar los procesos de una operación de solicitud-respuesta pendiente.

Para habilitar las cookies e invocar un servicio web de flujo de trabajo.

Un servicio web de flujo de trabajo utiliza cookies para realizar un seguimiento del estado. Si publica un flujo de trabajo como servicio web, debe habilitar las cookies que lo invocan en el código de cliente. Por ejemplo:

CalculatorWorkflow_WebService service = new CalculatorWorkflow_WebService();
service.CookieContainer = new System.Net.CookieContainer();

Esto permite realizar las llamadas al método en el objeto del “servicio”.

Consulte también

Referencia

WebServiceInputActivity
WebServiceOutputActivity
WorkflowWebHostingModule
ManualWorkflowSchedulerService

Conceptos

Comunicación con otros flujos de trabajo
Uso de la actividad WebServiceInputActivity
Uso de la actividad WebServiceOutputActivity

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.