首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET的规则引擎

.NET的规则引擎
EN

Stack Overflow用户
提问于 2011-09-22 04:24:02
回答 7查看 17.3K关注 0票数 24

我们有一个业务需求,即允许超级用户编辑保险费率和注册规则。我们需要一个网络用户界面,让他们说“这个产品只为<55岁的人,除非他们是从得克萨斯州和拥有贵宾犬”或其他。编辑以澄清:保险是疯狂的。规则因产品、状态和状态的不同而不同,并且不断变化。

我们看了几个规则引擎,但商业引擎是100K+,而开源引擎似乎还没有完成。如果我们提前创建规则,Windows Workflow就可以工作,但在运行时构建规则似乎需要绕过代码访问安全性。这太可怕了。

我们要重新发明这个轮子是不是疯了?有没有更好的.net替代方案?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-09-22 05:29:32

我不认为规则的评估将是一个挑战。我认为更大的挑战是解析用户可以输入的规则。为了解析规则,您应该考虑创建一些DSL。Martin Fowler对这个here有一些想法。那么也许ANTLR是值得一看的。

对于评估部分:我在金融行业工作,规则也很复杂,但我从来没有使用过规则引擎。命令式编程语言(在我的例子中是C#)的手段(直到现在)已经足够了。在某些情况下,我考虑使用规则引擎,但规则引擎的技术风险(*)总是高于预期收益。规则(直到现在)从来没有那么复杂,需要声明式编程模型。

如果您使用的是面向对象的语言,可以尝试应用Specification Pattern。Eric Evans和Martin Fowler写了一个更详细的解释,你可以在here上找到。或者,您可以编写自己的简单规则引擎。

(*)脚注:您需要以某种方式将规则引擎嵌入到您的应用程序中,这很可能是用某种面向对象的语言编写的。所以有一些技术上的界限,你必须跨越它们。每一座这样的桥梁都是一个技术风险。我曾经目睹过一个使用C编写的规则引擎的Java web应用程序。在开始的时候,C程序有时会产生核心转储,并破坏整个web应用程序。

票数 13
EN

Stack Overflow用户

发布于 2011-09-22 04:30:05

我认为,与大多数制造和购买决策一样,这始终是你必须亲自做出的权衡。如果你购买了一个现成的解决方案,花费了100K+,而你只打算使用它的1%,那么这可能是一些不明智的花费。然而,如果产品是完美的,那么你几乎可以肯定你永远不会花更少的钱来构建它(假设他们在该特定领域有丰富的经验)。

所以,只要你不想做现成的产品所做的一切,只专注于你需要的特定功能,并且不会被为一些非常简单的东西构建一个非常好(但昂贵)的框架的想法所诱惑,那么你重新发明这个轮子就不是疯了。

票数 10
EN

Stack Overflow用户

发布于 2011-09-22 04:35:37

10万不是小钱,但一个好的程序员一年的花费几乎肯定会更高--你有比一年更快的更便宜的程序员吗?它是一样好(满足你的需求)还是更好?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7506163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档