2009-01-23 47 views
3

WWF是否可以處理高吞吐量的情況,在這種情況下,任何時候都可以並行處理幾十條記錄?高吞吐量和Windows工作流基金會

我們要建立一個工作流程,其每小時處理幾千個記錄。每個記錄最多需要一分鐘才能處理,因爲它會調用外部Web服務。

我們正在測試Windows工作流基礎來做到這一點。但是,當我們使用並行活動在一個工作流實例中同時處理多個記錄時,我們的演示程序顯示每條記錄的處理似乎按順序並行運行。

我們應該使用多個工作流實例還是並行活動?

是否有高性能WWF處理任何已知的模式?

回答

1

您應該明確地使用每個記錄的新工作流程。每個工作流程只能獲得一個線程運行,因此即使使用ParallelActivity,它們仍然會按順序處理。

我不知道有關Windows工作流的性能,但是從我所聽到的有關.NET 4的技術 - 埃德是其工作流組件將顯着快於從.NET 3.0和3.5的人。所以如果你真的需要很多的性能,也許你應該考慮等待.NET 4.0。

另一種選擇可能是要考慮的BizTalk。但它非常昂貴。

1

我認爲常用模式是每個記錄使用一個工作流實例。工作流運行時並行運行多個實例。

一個工作流實例一次運行一個線程。並行活動在這個單線程上依次調用每個活動的Execute方法。但是,如果活動是異步的,並且大部分時間等待外部進程完成其工作,您仍然可以從並行活動中獲得性能改進。例如。如果活動調用外部Web方法,然後等待答覆 - 它將從Execute方法返回,並且不會在等待答覆時佔用此線程,因此Parallel組中的另一個活動可以開始其作業(例如,也可以調用Web服務)。

+0

該解決方案看起來像您聲明的那樣,爲每條記錄使用正在運行的工作流實例。 我們正在測試負載下的這種方法,看看我們是否可行。 我也應該注意到,我們需要連續處理24 x 7,所以我們需要不斷創建或重用實例。 – somtimz 2009-02-07 11:43:04