繁体   English   中英

是否可以将单个Windows Workflow实例配置为使用多个数据库?

[英]Can a single Windows Workflow instance be configured to use multiple databases?

我们将Windows Workflow引擎用于基于.NET 4.5的ASP.Net应用程序。 Windows Workflow应用程序被部署为IIS应用程序,并使用web.config文件中指定的连接信息进行了SQL持久性配置。 现在,我们希望将此应用程序(以及工作流引擎)移至云中。

关于此云迁移,我们对为ASP.Net(非Windows Workflow)应用程序做出的以下决定有些信心:

  • 每个客户都有一个单独的数据库
  • 单个Web应用程序将为多个客户提供服务

但是,我们不确定如何将Windows Workflow应用程序迁移到云中。 据我了解,我们有以下选择:

  1. 使用单个实例/单个数据库方法。 通过这种方法,我们将有一个工作流实例和一个工作流数据库架构服务于多个客户。
  2. 使用多实例/多数据库方法。 通过这种方法,我们将为每个客户提供一个单独的IIS应用程序以及一个单独的数据库架构。
  3. 使用单实例/多数据库方法。 在这种方法中,我们将拥有一个工作流实例,该实例将能够与多个工作流持久性数据库进行对话(每个客户一个)。

在#1中,我们主要关注性能,因为此单个数据库上的负载增加。 对于#2,关注的是Web应用程序的可伸缩性,因为为1000个客户提供1000个Web应用程序似乎并不正确。

这给我们留下了选择#3,我们认为这是正确的选择。 但是,我们不确定是否可以在Windows Workflow中完成此操作。

因此,问题是,是否可以以某种方式对Windows Workflow Web应用程序的单个实例进行配置或编程,使其与多个SQL持久性数据库对话? 如果是,我们如何实现?

谢谢!

我从来没有自己做过,但是我认为您可以通过实现自己的PersistenceService来实现。 为此,请从WorkflowPersistenceService抽象类派生,该抽象类具有诸如SaveWorkflowInstanceState / LoadWorkflowInstanceState类的方法。

在这种方法中,您可以访问WorkflowInstanceId属性。 我认为您可以使用此属性来确定将特定工作流实例存储在何处。 为了能够从适当的数据库加载(还原)工作流,您将需要实现一些映射,如下所示: WorkflowInstanceIdDatabaseId

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM