每月新增20,000个工作流实例的WF性能

时间:2009-04-23 06:38:13

标签: persistence workflow-foundation

Windows Workflow Foundation在执行WF实例持久化时遇到的问题很慢。 我打算做一个项目,其商业层将基于WF暴露的WCF服务。该项目每月将创建20,000个新的工作流实例,每个实例最多可能需要2个月才能完成。 由于性能原因,在执行保持时WF减速时,我所感受到的是相信我的问题是无法实现的。 我有以下问题:

  1. 这是真的吗?我的表现是否会与该负载相关(给定WF持续速度限制)
  2. 我该如何解决这个问题?
  3. 我们目前有两种可能的解决方案: 1.每个新的商务流程请求(例如,给我一个新的驱动程序许可证)将是一个新的WF实例,并且通过将所有状态请求操作转发到单独数据库中的已保存状态值来限制持久性操作的数量。 2.在任何给定时间只有少量的工作流实例,没有任何持久性(仅在系统崩溃等情况下),通过将每个工作流程钉入单独的工作区并处理每个业务流程请求的工作流程在当前步骤的系统中的实例(例如,我正在提交我的驱动程序许可证申请表,这是第一步......我们有100个案例,我的第一步工作流程将同时处理每个案例)。

    我对这个问题的解决方案非常感兴趣。如果你想讨论这个问题,可以免费邮寄给我nstjelja@gmail.com

4 个答案:

答案 0 :(得分:2)

水合执行的wokflows的数量将由环境因素内存服务器通过put等确定。持久性问题实际上只有在你一直装载和卸载工作流时才会发挥作用,在那种情况下工作流可能不是真实的(ish)时间是最好的解决方案。

答案 1 :(得分:2)

在我目前的项目中,我们还使用WF和持久性。我们没有完全相同的量(可能〜2000个实例/月),并且它们通常不会很长(它们通常在5分钟内完成,在某些情况下会在几天内完成)。我们确实决定将主要工作流分为两部分,即正常的等待状态。我不能说我已经注意到系统中的任何性能差异,但它确实简化了它,因为我们的系统有时会遇到将输入信号与正确的工作流实例匹配的问题(这是我们代码中的一个问题;不是WF)。

我认为,如果我要开始一个基于WF的新项目,我宁愿选择按顺序调用的较小工作流程,而不是让大型工作流程处理整个流程。

答案 2 :(得分:2)

老实说,我仍在调查工作流基础的性能特征。

然而,如果它有所帮助,我听说WF团队已经通过WF 4的新版本进行了许多性能改进。

以下是一些可能有帮助的链接(如果你似乎已经不是这样了)

A Developer's Introduction to Windows Workflow Foundation (WF) in .NET 4 (discusses performance improvements)

Performance Characteristics of Windows Workflow Foundation (applies to WF 3.0)

答案 3 :(得分:1)

3.5上的WF存在性能问题。 WF4没有 - 每月20000 WF实例没什么。如果你每分钟都在说话,我会担心。