WWF能否处理高吞吐量的场景,在任何时候都会有几十条记录被“主动”并行处理?
我们想要建立一个每小时处理几千条记录的工作流流程。每条记录都需要长达一分钟的时间来处理,因为它会进行外部web服务调用。
我们正在测试Windows Workflow Foundation来实现这一点。但我们的演示程序显示,当我们使用并行活动在一个工作流实例中同时处理多个记录时,每个记录的处理似乎是按顺序运行的,而不是并行运行的。
我们应该使用多个工作流实例还是并行活动?
是否有任何已知的高性能WWF处理模式?
发布于 2009-03-06 00:51:07
你绝对应该为每条记录使用一个新的工作流。每个工作流只有一个线程可以在其中运行,所以即使使用ParallelActivity,它们仍然会按顺序进行处理。
我不确定Windows Workflow的性能,但我在Tech-Ed上听到的关于.NET 4的消息是,它的工作流组件将比.NET 3.0和3.5中的组件快得多。因此,如果你真的需要更高的性能,也许你应该考虑等待.NET 4.0。
另一种选择是考虑BizTalk。但是它很贵。
发布于 2009-01-25 22:03:29
我认为常见的模式是每条记录使用一个工作流实例。工作流运行时并行运行多个实例。
一个工作流实例一次运行一个线程。并行活动在该单个线程上顺序调用每个活动的Execute方法。然而,如果并行活动是异步的,并且花费大部分时间等待外部进程完成其工作,那么您仍然可以从并行活动中获得性能改进。例如,如果activity调用外部web方法,然后等待回复-它从Execute方法返回,并且在等待回复时不占用此线程,因此并行组中的另一个activity可以同时开始其作业(例如,也调用web服务)。
https://stackoverflow.com/questions/472391
复制相似问题