将工作流部署为 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 基本活动库包含 WebServiceInputActivity 和 WebServiceOutputActivity 活动,这些活动允许将工作流用作 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 服务的使用者,即实例不能在未处理的请求-响应操作之间迁移进程。
启用 Cookie 以调用工作流 Web 服务
工作流 Web 服务使用 Cookie 跟踪状态。 如果将工作流发布为 Web 服务,则必须在调用它的客户端代码中启用 Cookie。 例如:
CalculatorWorkflow_WebService service = new CalculatorWorkflow_WebService();
service.CookieContainer = new System.Net.CookieContainer();
这使您可以对“service”对象进行方法调用。
请参见
参考
WebServiceInputActivity
WebServiceOutputActivity
WorkflowWebHostingModule
ManualWorkflowSchedulerService
概念
与其他工作流通信
使用 WebServiceInputActivity 活动
使用 WebServiceOutputActivity 活动
版权所有 (C) 2007 Microsoft Corporation。保留所有权利。