是否可以使用标准(Activity模板)工作流活动模板创建 WCF 工作流?而且,如果是这样,我在哪里可以找到一些不使用标准 WCF 服务模板(WCF Workflow Service 模板)的示例?
说明:我正在尝试在运行时发现、加载和运行工作流,包括具有 WCF 活动的工作流。标准工作流被编译成类型(这使得它们很容易发现),但是“WCF 工作流服务”模板是一个 xamlx 文件,它作为内容添加并在运行时作为清单流加载。这使得运行时的发现变得困难。
我认为不需要使用此模板来创建服务,因为 WorkflowServiceHost 可以在其构造函数中获取 Activity。
我试图尽可能简化开发新的 WCF 服务的任务,以便在运行时发现、加载和“执行”(即加载和侦听)。
从昨天开始我一直在试图找出同样的问题,现在我偶然发现了一个解决方法。添加新项目时,VS 2010 中没有简单工作流程(xaml)的模板。如果您创建 WCF WF 应用程序,您将获得 xamlx。我创建了一个 Workflow Console 应用程序,它给了我一个 xaml 文件,我将其复制到我的工作项目中。完成此操作后,使用 WorkflowServiceHost 进行托管就变得很简单。
string uri = "http://localhost:8008/MyService";
WorkflowServiceHost wsh = new WorkflowServiceHost(new Workflow1(), new Uri(uri));
ServiceMetadataBehavior metadataBehavior = new ServiceMetadataBehavior();
metadataBehavior.HttpGetEnabled = true;
wsh.Description.Behaviors.Add(metadataBehavior);
wsh.AddServiceEndpoint("IService", new BasicHttpBinding(), uri);
wsh.Open();
是的。
这篇博文介绍了如何使用 SVC 扩展而不是 XAMLX,并使用编译工作流程来执行此操作。注释还添加了一些如何删除 SVC 文件的详细信息。您需要使用 WorkflowServiceHostFactory 作为工厂来连接事物。您也可以在自托管时执行类似的操作。
实际上我刚刚发现添加新项目中的“活动”模板是xaml,因此无需创建“工作流控制台应用程序”来获取xaml文件。