3

WWF 能否处理在任何时候并行处理数十条记录的高吞吐量场景?

我们想建立一个每小时处理几千条记录的工作流程。每条记录最多需要一分钟来处理,因为它会调用外部 Web 服务。

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

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

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

4

2 回答 2

1

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

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

于 2009-01-25T22:03:28.890 回答
1

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

我不确定 Windows Workflow 的性能,但从我在 Tech-Ed 上听到的关于 .NET 4 的消息来看,它的 Workflow 组件将比 .NET 3.0 和 3.5 中的组件快得多。所以如果你真的需要很多性能,也许你应该考虑等待.NET 4.0。

另一种选择可能是考虑 BizTalk。但它相当昂贵。

于 2009-03-06T00:51:07.370 回答