2010-01-06 32 views
4

我喜歡WF的想法,並希望將長時間運行的工作流持久化到SQL數據庫。爲此,持久性數據庫的SQL級別的適當體系結構是什麼?如果持久性表存在於項目的數據庫中,或者是持久性數據表項目agnositc並且只有一個持久性數據庫被創建,那麼就是一個la SSRS的數據庫。多個應用程序能否使用一個持久性數據庫Windows工作流SQL持久體系結構

回答

4

一般來說,我寧願將持久性數據和應用程序數據放在一個數據庫中。反對分裂它們的主要原因是,只要您執行任何慢得多的事務數據庫工作,就立即開始創建分佈式事務。

我從來沒有將不同的持久性數據庫合併爲一個。實際上,每個應用程序的WorkflowRuntime都將進行不同的配置,因此您的工作流程不僅可以選擇要運行的任何主機,還可以綁定到專門配置的工作流程類型。一旦開始使用DelayActivities並且它們到期,您無法控制哪個運行時將嘗試將工作流加載回內存。使用一個持久性數據庫與多個SAME工作流類型的實例進行負載平衡是可能的,但有點挑戰。實際上,在單個應用程序中使用不同配置的WorkflowRuntimes的多個持久性數據庫更爲常見,這種情況恰恰相反。

+0

+1好點re DelayActivities。 – AnthonyWJones 2010-01-08 09:40:49

1

SQL持久性數據庫不耦合到您的應用程序或項目。每個工作流程都是完全原子的,並且由GUID唯一標識。因此應該可以在多個應用程序間共享一個通用的工作流持久性DB。

但是,確實有維護多個持久性DB的情況,每個應用程序都有一個DB。如果多個應用程序的操作依賴於工作流程,則您不希望通過共享一個常見的持久性數據庫來創建潛在的單點故障。

從性能和可伸縮性的角度來看,分離持久性數據庫也是有意義的。否則,您可以在沉重的應用程序影響其他應用程序的性能時創建瓶頸。您也可以決定將一個或多個應用程序的持久性DB更輕鬆地移到不同的服務器。