将工作流部署为 Web 服务

Windows Workflow Foundation 框架支持 Web 服务互操作性。 该框架能够将工作流作为 Web 服务公开给 ASP.NET 客户端和其他工作流。 Windows Workflow Foundation 支持将工作流作为 ASP.NET Web 服务发布到在 Internet 信息服务 (IIS) 6.0 上运行 ASP.NET 的 Web 服务器或服务器场。 因为 Windows Workflow Foundation Web 服务支持以 ASP.NET 2.0 为基础,所以它继承了标准 ASP.NET Web 服务的大部分功能。

Windows Workflow Foundation 基本活动库包含 WebServiceInputActivityWebServiceOutputActivity 活动,这些活动允许将工作流用作 Web 服务终结点。 有关使用这些 Web 服务活动的信息,请参见使用 WebServiceInputActivity 活动使用 WebServiceOutputActivity 活动

工作流 Web 承载

用于工作流 Web 承载的主要类包括:

WorkflowWebHostingModule

WorkflowWebHostingModule 类是默认的路由机制,用于通过使用 ASP.NET Cookie 将 Web 服务请求路由到相应的工作流。 当然,发出这些请求的客户端必须支持 Cookie。

虽然 Windows Workflow Foundation 提供此默认路由机制,但您可以实现自己的自定义路由机制。 例如,当不能在客户端中启用 Cookie 时,可以配置客户端创建具有特定 Id 的工作流实例,并在每个 Web 服务请求中传递该 Id。 可以使用 SOAP 或 HTTP 处理程序配置请求管线以截获调用,从标头信息中检索工作流实例 Id,然后将 HttpContext.Current.Items.Add("__WorkflowInstanceId__", workflowInstanceId) 设置为传入的 Id。

ManualWorkflowSchedulerService

ManualWorkflowSchedulerService 类是 WorkflowSchedulerService 的一个专用实现,它通过重用一个线程(该线程发出 ASP.NET Web 请求以运行工作流实例),对 ASP.NET 进程中生成的线程数进行控制。 这确保了工作流运行时中的活动线程数在任意时候都等于 ASP.NET 进程中的活动 Web 请求数。

公开为 Web 服务的工作流的限制

实例路由在 ASP.NET 会话的基础上工作。 作为 Web 服务的使用者,它需要支持 ASP.NET Cookie。

即使可以将“接收请求-发送响应”建模为工作流中的异步操作,ASP.NET 的常规限制仍适用于 Web 服务的使用者,即实例不能在未处理的请求-响应操作之间迁移进程。

工作流 Web 服务使用 Cookie 跟踪状态。 如果将工作流发布为 Web 服务,则必须在调用它的客户端代码中启用 Cookie。 例如:

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

这使您可以对“service”对象进行方法调用。

请参见

参考

WebServiceInputActivity
WebServiceOutputActivity
WorkflowWebHostingModule
ManualWorkflowSchedulerService

概念

与其他工作流通信
使用 WebServiceInputActivity 活动
使用 WebServiceOutputActivity 活动

Footer image

版权所有 (C) 2007 Microsoft Corporation。保留所有权利。