Windows 工作流基础 活动与业务规则引擎 (BRE) 的速度



Windows Workflow Foundation Activity 有多快? 我知道这是一个无法回答的问题,所以让我给你一些背景:

这个问题需要使用某种类型的业务规则引擎来解决。 一次可能有多达300条规则需要实施。 有些相关,有些不相关。

我们玩过一个便宜的 BRE(rulelab.net(,它声称它可以每秒运行超过 1000 条规则,而且它似乎运行得很快,尽管我们只有少数规则。

我观看并玩了在工作流中处理数据,只有一个 if 语句,它似乎运行得很慢。

总而言之,我对 Microsoft WF 的性能并不满意,使用传统的 BRE 会更好吗? 有什么想法吗?

Windows Workflow Foundation 对于许多应用程序来说足够快。 在一个简单的noop活动的测试中,它每秒的操作超过350K。 当然,您的应用程序将运行实际的业务逻辑,这将花费更长的时间,但显然值得评估。

有关详细信息,请参阅 Windows 工作流基础 4 性能

你的"它每秒可以运行超过 1000 条规则"的例子有点奇怪。正常的业务规则引擎在吹嘘其性能时会说"每个时间间隔的事实对象数"。这是因为大多数时候(我已经在这个行业工作了很长一段时间(系统接收(一百万个或只有一个(事实对象的集合,并且需要过滤掉那些没有通过一个或多个规则的事实对象。由于显而易见的原因,基于 RETE 的引擎会变慢 - 这就是为什么大多数时候你不需要 RETE 算法。但即使有你的例子,这个数字对于一个坚实的 BRE 来说也太低了。通常,您希望引擎每秒至少执行五十万次规则评估,即使它不缓存规则并且必须在每次迭代时编译每个规则,前提是每个规则不执行任何外部内容并且不包含任何昂贵的计算。我不知道 rulelab.net 的内部结构,但这么慢的速度意味着它不会将其规则编译为本机对象,或者它以非常糟糕的方式评估其规则。

从您的问题来看,目前尚不清楚为什么需要工作流/BRE。工作流引擎和规则引擎旨在回答一组不同的问题/挑战。首先要了解您的目标以及从业务角度要实现的目标。为什么需要工作流和/或业务规则引擎?您尝试使用工作流和/或 BRE 回答的挑战/需求/要求是什么?从你的问题来看,根本不清楚。
我有一篇文章可以告诉你为什么以及何时选择一个而不是另一个。或者有时您最终会同时使用它们。关键是你要求比较两个不同事物的性能。

最新更新