本主题适用于 Windows Workflow Foundation 4。
工作流服务在承载后才能对传入消息做出响应。工作流服务使用的是 WCF 消息传递基础结构,因此承载的方式也类似。工作流服务与 WCF 服务类似,可以承载于任何托管应用程序、Internet 信息服务 (IIS) 或 Windows 进程激活服务 (WAS)。有关承载 WCF 服务的不同方式的更多信息,请参见Hosting Services。
在托管应用程序中承载
若要在托管应用程序中承载工作流服务,请使用 WorkflowServiceHost 类。WorkflowServiceHost 构造函数可用于指定单一工作流服务实例、工作流服务定义或使用工作流消息传递活动的活动。调用 Open 将导致服务开始侦听传入消息。
在 IIS 或 WAS 下承载
在 IIS 或 WAS 下承载工作流服务时,涉及到创建虚拟目录以及将定义服务及其行为的文件放在该虚拟目录中。此时可能出现以下几种情况:
将定义工作流服务的 .xamlx 文件放在 IIS/WAS 虚拟目录中,同时放入指定服务行为、终结点和其他配置元素的 Web.config 文件。
将定义工作流服务的 .xamlx 文件放在 IIS/WAS 虚拟目录中。.xamlx 文件指定要公开的终结点。终结点将在
WorkflowService.Endpoints
元素中指定,如下面的示例所示。<WorkflowService xmlns="https://schemas.microsoft.com/netfx/2009/xaml/servicemodel" xmlns:p1="https://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"> <WorkflowService.Endpoints> <Endpoint ServiceContractName="IWorkFlowEchoService" AddressUri=""> <Endpoint.Binding> <BasicHttpBinding /> </Endpoint.Binding> </Endpoint> </WorkflowService.Endpoints> <!-- ... --> </WorkflowService>
注意:
不能在 .xamlx 文件中指定行为,因此,如果需要指定行为设置,则必须使用 Web.config。 将定义工作流服务的 .xamlx 文件放在一个 IIS/WAS 虚拟目录中。另外,将一个 .svc 文件放在该虚拟目录中。使用 .svc 文件可以指定自定义 Web 服务主机工厂、应用自定义行为或者从自定义位置加载配置。
将一个程序集放在 IIS/WAS 虚拟目录中,该程序集包含一个使用 WCF 消息传递活动的活动。
定义工作流服务的 .xamlx 文件必须包含 <Service> 根元素或包含派生自 Activity 的任何类型的根元素。使用 Visual Studio 2010 活动模板时将创建 .xamlx 文件,使用 WCF 工作流服务模板时将创建 .xamlx 文件。
引用自定义活动
必须将对自定义活动的引用添加到 <Assemblies> 节中的 <System.Web.Compilation> 下面,以便将这些引用加载到应用程序域,并且 XAML 反序列化程序能够找到各类型。可以在应用程序级别进行这些设置;如果要将这些设置应用于计算机上的所有应用程序,则可在根 Web.config 中进行这些设置。
部署
系统中已经创建 Web 部署工具,以方便部署作业。通过使用该工具,可以在 IIS 6.0 和 IIS 7.0 之间迁移应用程序,同步服务器场,并打包、存档和部署 Web 应用程序。有关更多信息,请参见 MS 部署工具