高吞吐量和Windows Workflow Foundation

时间:2009-01-23 09:50:36

标签: workflow workflow-foundation

WWF能否处理高吞吐量情况,其中几十条记录在任何时候都是“主动”并行处理?

我们希望构建一个工作流程,每小时处理几千条记录。每条记录最多需要一分钟才能处理,因为它会进行外部Web服务调用。

我们正在测试Windows Workflow Foundation来执行此操作。但是,当我们使用并行活动在一个工作流实例中同时处理多个记录时,我们的演示程序显示每个记录的处理似乎是按顺序运行。

我们应该使用多个工作流实例还是并行活动?

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

2 个答案:

答案 0 :(得分:1)

我认为常见的模式是每个记录使用一个工作流实例。工作流运行时并行运行多个实例。

一个工作流实例一次运行一个线程。并行活动在此单个线程上顺序调用每个活动的Execute方法。但是,如果活动是异步的,并且大部分时间都在等待外部流程完成其工作,那么您仍然可以从并行活动中获得性能提升。例如。如果活动调用外部Web方法,然后等待回复 - 它从Execute方法返回并且在等待回复时不占用此线程,因此Parallel组中的另一个活动可以开始其工作(例如,也可以调用Web服务)同时。

答案 1 :(得分:1)

您绝对应该为每条记录使用新的工作流程。每个工作流只能运行一个线程,因此即使使用ParallelActivity,它们仍然会按顺序处理。

我不确定Windows Workflow的性能,但据我所知,Tech-Ed上的.NET 4的工作流程组件将比.NET 3.0和3.5的组件快得多。所以如果你真的需要很多性能,也许你应该考虑等待.NET 4.0。

另一种选择可能是考虑BizTalk。但这很贵。