2

Windows Workflow Foundation 在持续执行 WF 实例时存在一个缓慢的问题。我打算做一个项目,其业务层将基于 WF 公开的 WCF 服务。该项目每月将创建 20,000 个新的工作流实例,每个实例最多可能需要 2 个月才能完成。我被引导相信,考虑到性能原因,考虑到 WF 在进行持久性时会变慢,我给定的问题将是无法实现的。我有以下问题:

  1. 这是真的?我的表现会因为负载而变得糟糕吗(鉴于 WF 持久性速度限制)
  2. 我该如何解决这个问题?

我们目前有两种可能的解决方案: 1.每个新的业务流程请求(例如给我一个新的驾驶执照)将是一个新的WF实例,并且通过将所有状态请求操作转发到保存的状态值来限制持久化操作的数量一个单独的数据库。2. 在任何给定时间都只有少量的工作流实例,没有任何持久性(仅在系统崩溃等情况下),通过将每个工作流步骤分解到一个单独的工作流和处理每个业务流程请求的工作流当前步骤的系统中的实例(例如,我正在提交我的驾驶执照申请表,这是第一步......我们有 100 个案例,我的第一步工作流程将同时处理每个案例)。

我对这个问题的解决方案非常感兴趣。如果你想讨论这个问题,请随时给我发邮件 nstjelja@gmail.com

4

4 回答 4

2

老实说,我还在研究工作流基础的性能特征。

但是,如果有帮助的话,我听说 WF 团队在 WF 4 的新版本中进行了许多性能改进。

这里有几个链接可能会有所帮助(如果您还没有看到它们)

A Developer's Introduction to Windows Workflow Foundation (WF) in .NET 4(讨论性能改进)

Windows Workflow Foundation 的性能特征(适用于 WF 3.0)

于 2010-06-18T12:19:39.800 回答
2

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

于 2009-04-23T06:49:17.430 回答
2

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

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

于 2009-04-23T06:50:37.147 回答
1

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

于 2011-05-16T08:04:23.363 回答