与this question相关。
我了解如何使用WorkflowApplication
实现工作流的版本控制。如果您保留旧版本工作流的原始XAML定义,则可以使用正确的WorkflowApplication
构造函数加载它们。
如果要在IIS中托管工作流,如何确保WorkflowServiceHost
使用正确的工作流定义?
您可以使用WorkflowServiceHost
构造函数来加载工作流定义,但是当您通过XAMLX文件在IIS中进行托管时,您不会自己调用WorkflowServiceHost
,这是通过某种方式处理的IIS。那么如何确保为我的工作流程的正确版本加载正确的工作流程定义?
答案 0 :(得分:8)
使用WorkflowServiceHost的方法并不是使用WorkflowApplication的不同形式。保持各种XAML(X)版本的基础仍然适用。因此,对于WorkflowServiceHost,您需要创建多个WorkflowServiceHost,每个WorkflowServiceHost都托管不同版本的XAMLX。每个都有不同的端点。所以基本上一个en端点都解决了工作流服务及其版本。
那么如何从客户端获取消息到正确的WorkflowServiceHost?这里的WCF路由服务是你的朋友。他们不使客户端直接与WorkflowServiceHost通信,而是使用中间WCF路由服务。这反过来检查消息并将它们路由到托管相应XAMLX文件的WorkflowServiceHost。那怎么知道呢。有几种方法可以做到这一点。例如,使用消息相关标识符进行数据库查找,对新工作流的请求始终转到最后一个版本。最简单的方法是让工作流服务返回版本号作为初始请求的一部分,并使其成为每个后续请求的必需部分。通过这种方式,WCF路由服务可以仅使用消息数据发送来完成所有工作。
这方面的一个例子是:
检查these截屏视频,了解有关WCF路由服务的更多信息。