C#中的规则引擎设计及示例

10

我目前正在使用C#编写一个带有.NET框架的应用程序,并想要检查一些规则,基于规则的通过或不通过来执行操作。因此,我希望实现通用解决方案,以便在遵循良好面向对象编程原则的情况下进行重复使用。这使我得出结论,我需要编写一个规则引擎。

我对c#具有良好的了解,但这是我第一次需要编写规则引擎,因此作为我的研究的一部分,我正在寻找关于创建这样一个引擎的任何提示。是否存在任何可供参考的示例?是否有任何C#/.net的规则引擎应用程序?在典型的三层体系结构中,此类引擎应该位于哪个层?我曾经在codeplex和google code上进行过快速搜索,但没有找到合适的!因此,如果能提供一些指导,那就太好了。

2个回答

3

1
我知道这听起来像可怕的狂妄自大,但与精心设计的定制领域特定引擎相比,我发现WF规则库贫乏且实际上难以使用。当然,这确实取决于应用程序,但我不知道我是否会如此迅速地推荐它。 - Aaronaught
我经常在我的工作流程中使用它来处理慢节奏的工业控制应用程序,这让我觉得它是最实用的实现之一。但也许这是因为我太熟悉它了。但我知道,这更像是一个典型的xUnit vs MSUnit的争论。 - Teoman Soygul
1
也许吧。我知道的是,每次我尝试使用WF(或WF规则)时,我总是会举起双手说:“为什么我不直接编写代码,而非把它塞进这个东西里呢?”我并不是在将WF与其他工作流引擎进行比较,我相信它们都很好,我想说的是,大多数如果不是全部的现成规则引擎都过于通用,无法提供比简单的代码+配置更多的优势。也许这只是我的经验不足/不良经历在说话。 - Aaronaught

0
构建和实施自己的规则引擎可能是一个非常困难的任务,需要考虑许多因素。你将面临的最大问题是尝试决定何时触发哪些规则。如果不给予适当的关注,可能会导致实现中出现性能问题。我强烈建议集中精力解决业务问题,并为您的主题专家提供定义和维护自己规则的能力。有许多很好的商业产品可以做到这一点;我成功地多次实施的一个是www.inrule.com。它们拥有一套不错的产品,可以帮助解决简单和复杂的问题。希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接