我们正在为基于.NET 4.5的ASP.Net应用程序使用Windows Workflow引擎。 Windows Workflow应用程序部署为IIS应用程序,并使用web.config文件中指定的连接信息配置为SQL持久性。我们现在想将此应用程序(以及工作流引擎)移动到云端。
关于此云迁移,我们对我们为ASP.Net(非Windows Workflow)应用程序做出的以下决定有点信心:
但是,我们不太清楚如何将Windows Workflow应用程序迁移到云。据我了解,我们有以下选择:
对于#1,我们主要关注这个单一数据库上的负载增加时的性能。对于#2,关注的是Web应用程序的可伸缩性,因为1000个客户拥有1000个Web应用程序似乎并不正确。
这给我们留下了选项#3,我们认为这是正确的选择。但是,我们不确定是否可以在Windows Workflow中完成此操作。
所以问题是,是否可以以某种方式配置或编程单个Windows Workflow Web应用程序实例与多个SQL持久性数据库进行通信?如果是的话,我们怎样才能做到这一点?
谢谢!
答案 0 :(得分:0)
我自己从不这样做,但我认为您可以通过实施自己的PersistenceService
来实现这一目标。为此,请从WorkflowPersistenceService
抽象类派生,该类具有SaveWorkflowInstanceState
/ LoadWorkflowInstanceState
等方法。
在此方法中,您可以访问工作流程的WorkflowInstanceId
属性。我认为您可以使用此属性来决定存储此特定工作流实例的位置。为了能够从适当的数据库加载(恢复)工作流,您需要实现这样的映射:WorkflowInstanceId
:DatabaseId
。