Rule Engines的表现如何?

Jor*_*oba 2 c# rule-engine workflow-foundation nxbre

我一直在看WF规则引擎NxBRE,它看起来很有趣,但我不确定它在现实生活场景中的表现如何.

我所想到的就像一个事实基础,有一些有1亿到1亿个事实和规则,如:

Object.Field <5000 AND Object.Field> 1000 AND IsProperty(Object.Field2)

我正在使用C#和.NET.

编辑:我没有说清楚(完全是我的错):)我有自己的规则评估系统,它使用RETE算法本身...它非常快,它可以在大约10秒内评估1000万事实情景. ... comaparison中的商业解决方案有多快?

Dav*_*llo 8

简短的回答是,一旦规则数超过某些(我不知道确切的值)阈值,我会期望规则引擎胜过命令式解决方案.

规则引擎的规则部分是一组条件和操作.单个规则(几乎)在功能上等同于if-then语句.由于引擎的声明性质,规则引擎的真正力量闪耀.

在传统的命令式程序中,您必须编写逻辑评估方式.使用规则引擎时,它会确定要评估的语句数.我只使用了像JessCLIPS这样的引擎,它们使用rete算法来确定要触发的规则.规则触发算法的效率将推动规则引擎在传统的命令式解决方案上的效率.

Rete算法旨在牺牲内存以提高速度.它维护一个节点网络,将LHS侧模式映射到规则.您拥有的规则和事实越多,您的rete网络就越能胜过您的命令式解决方案,因为Rete性能理论上与系统中的规则数量无关.

你正在计划很多事实.如果您计划有很多规则,可能会遇到内存问题.

看一下Martin Fowler关于规则引擎的文章.这是一个很好的(非常)简短的概述.

一个漫长的讨论,对微软业务规则引擎(MS-BRE)ADN与杰斯和Drools的相比它的性能.提出的几个要点强调了为什么这些评估很难.