2009-04-23 29 views
2

Windows Workflow Foundation在執行WF實例persistace時存在緩慢的問題。 我打算做一個項目,其商業層將基於WF公開的WCF服務。該項目將每月創建20,000個新的工作流實例,每個實例最多可能需要2個月才能完成。 因爲性能方面的原因,在給定WF的情況下,由於給定的問題,給定的WF速度會變慢。 我有以下問題:WF性能,每月新增20,000個持久化工作流實例

  1. 這是真的嗎?我的表現會因爲這個負載而浪費(給定WF的結構速度限制)
  2. 我該如何解決這個問題?

我們目前有兩種可能的解決方案: 每種新提供商家處理請求(如給我一個新的駕駛執照),將是一個新的WF實例,持久性操作的數量將通過轉發所有的狀態被限制請求操作將數據保存到單獨的數據庫中。 2.在任何給定時間只有少量的工作流實例,沒有任何持久性(只有在系統崩潰等情況下),通過將每個工作流分解爲單獨的工作流以及處理每個業務流程的工作流(例如,我正在提交我的駕駛執照申請表,這是第一步...我們有100個這樣的案例,並且我的第一步工作流程將同時處理每個案例)。

我對這個問題的解決方案非常感興趣。如果你想討論這個問題,請免費發郵件給我[email protected]

回答

2

水合執行wokflows的數量將由環境因素記憶服務器通過放等確定。持續性問題真的只有在你玩的時候纔會起作用在這種情況下,工作流可能並不是最好的解決方案,所以在任何時候都可以加載和卸載工作流程,也就是真正的(ish)時間。

+1

另外,請注意您在事務日誌中記錄的事件級別。您的數據庫可以非常快速地完成。 – Wedge 2009-04-23 07:15:48

2

在我目前的項目中,我們也使用WF和持久性。我們沒有完全相同的數量(可能約爲2000個/月),通常沒有完成的時間(通常在5分鐘內完成,有些情況下是幾天)。我們決定將主要工作流程分爲兩部分,即正常等待狀態。我不能說我注意到系統中有任何性能差異,但是它確實簡化了它,因爲我們的系統有時會遇到將輸入信號與正確的工作流實例相匹配的問題(這是我們代碼中的問題;不是WF)。

我認爲,如果我要開始一個基於WF的新項目,我寧願選擇按順序調用的較小的工作流程,而不是使用大型工作流程來處理整個流程。

1

WF 3.5上有一個性能問題。 WF4沒有 - 每月20000個WF實例不算什麼。如果你每分鐘都在說話,我會擔心的。

+0

更新:我有一個擁有數萬個併發實例的WF 4狀態機,並且沒有任何性能問題。然而,在使用隊列時,你必須注意一些問題 - 例如,如果你向成千上萬的WF實例發送消息,則可能會耗盡默認的ADO.NET連接池設置(100)等等。 – Sentinel 2012-11-27 11:33:17