我目前正在寻找适用于 .NET 的规则引擎。我们的逻辑很简单,+, -, *, /, and, or, 基本的操作顺序。但是,我们需要将此信息存储在数据库中,然后在从数据库中提取新版本时生成规则文件。所以普通的 UI 编辑器对我们来说毫无用处,除非其中一个有网页版 UI 编辑器。
所以我的问题是,鉴于我所说的,就编程配置和与 ASP.NET 的集成而言,这将是我们最好的规则引擎。
我目前正在寻找适用于 .NET 的规则引擎。我们的逻辑很简单,+, -, *, /, and, or, 基本的操作顺序。但是,我们需要将此信息存储在数据库中,然后在从数据库中提取新版本时生成规则文件。所以普通的 UI 编辑器对我们来说毫无用处,除非其中一个有网页版 UI 编辑器。
所以我的问题是,鉴于我所说的,就编程配置和与 ASP.NET 的集成而言,这将是我们最好的规则引擎。
我在 WWF 的经历非常糟糕。它非常适合开发您知道将存在的工作流程(例如“此文档发送给某个人的经理,然后发送给 HR,如果它无效,它会返回给提交者”)但如果您想要动态配置,那就真的很痛苦了。正如你所知道的,我们试图将它用于完全可配置的系统,BizTalk 做得非常好,而且看起来 MS 并不热衷于让开发人员如此便宜地替换 BizTalk。
我们还研究了使用Acumen 规则引擎和工具,它们看起来非常适合我们的需求,尽管我们从来没有时间删除 WWF 并替换它。
我强烈建议,如果您的规则相对简单,您要么使用拥有源代码的规则引擎,要么自己编写。 Justin Etheredge有一篇关于使用域驱动设计(Evans) 中确定的模式通过自定义规则执行域验证的两 部分文章。
我按照相同的准则在我当前的项目中实现了一个类似的系统,并从数据库中序列化/反序列化规则。我将不得不看看Drools.NET。
biztalk 不会轻易被 wwf 取代的事实是真实的。它们之间的目标非常不同,drools 与 biztalk 相比,而不是与 wwf 相比,原因,两者都使用相同的算法(rete)!
现在,使用 drools 是另外一回事,biztalk 也可以作为 ESB,drools 可以做到吗?