c# 中的规则引擎设计和示例

Posted

技术标签:

【中文标题】c# 中的规则引擎设计和示例【英文标题】:rules engine design & examples in c# 【发布时间】:2011-08-25 08:10:43 【问题描述】:

我目前正在使用 c# 编写一个 .net 应用程序,并希望检查一些规则,并根据规则通过或失败执行操作。因此,我希望实现一个通用的解决方案,我可以按照良好的 oop 原则重复使用。这使我得出结论,我需要编写一个规则引擎。

我对 c# 有很好的了解,但这是我第一次需要编写规则引擎,因此作为我对此类引擎的设计和开发研究的一部分,我正在寻找有关创建此类规则引擎的任何提示引擎。如果有我可以查看的任何示例,那么还有什么更好的呢?任何 c#/.net 规则引擎应用程序?典型的 3 层架构中的哪一层应该这样驻留?我快速浏览了 codeplex 和 google 代码,但没有人向我跳出!所以一些方向会很棒。

【问题讨论】:

【参考方案1】:

实际上 .NET 有一个一流的规则引擎,旨在与工作流一起使用(正如它设计的那样),但可以轻松地在工作流之外使用:您应该看到“Windows Workflow Foundation Rules Engine”并检查System.Workflow.Activities.Rules命名空间。

学习如何在工作流之外使用规则只需要一点谷歌搜索。

编辑:如果你想检查架构,这里有两个开源预建引擎:

NxBRE .NET Application Block for Validation and Business Rules

【讨论】:

我知道这听起来像是可怕的狂妄自大,但我发现 WF 规则库与精心设计、定制的特定领域引擎相比显得乏力且几乎无法使用。当然,这真的取决于应用程序,但我不知道我是否会这么快推荐它。 我一直在我的工作流程中使用它来开发慢节奏的工业控制应用程序,这给我的印象是它是最实用的实现之一。但也许那是因为我太熟悉它了。但我知道,这更像是一个典型的 xUnit 与 MSUnit 的争论.. 也许吧。我所知道的是,每次我尝试使用 WF(或 WF 规则)时,我总是举起双手说“我为什么不直接编写代码把它硬塞进这东西里?”我没有将 WF 与其他工作流引擎进行比较,我确信它们都很好,我想我想说的是,如果不是所有的话,大多数 OTS 规则引擎都完全过于通用,无法提供比简单代码更多的优势+配置。也许这只是我缺乏经验/糟糕的谈话经验。【参考方案2】:

构建和实施您自己的规则引擎可能是一项非常艰巨的任务,需要考虑很多事情。您将面临的最大问题是试图决定触发哪些规则以及何时触发。不给予适当的关注可能会导致实现中的性能问题。我强烈建议您专注于业务问题,并为您的主题专家 (SME) 提供定义和维护自己的规则的能力。有很多很好的商业产品可以做到这一点。我多次成功实施的是www.inrule.com。他们有一套很好的产品,可以帮助解决简单和复杂的问题。希望这会有所帮助。

【讨论】:

以上是关于c# 中的规则引擎设计和示例的主要内容,如果未能解决你的问题,请参考以下文章

基于 c# 的规则语言的示例?

规则引擎EasyRules介绍,应用及示例

C#:英语语法规则引擎? [关闭]

.Net RulesEngine规则引擎使用

规则引擎用户界面设计

我可以从哪里开始学习规则引擎? [关闭]