簡體   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