架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 27230|回复: 1

[资料] .NET/C# 规则引擎 RulesEngine 教程

[复制链接]
发表于 2021-3-29 13:56:10 | 显示全部楼层 |阅读模式
RulesEngine 规则引擎是一个库/ NuGet程序包,用于从系统中抽象出业务逻辑/规则/策略。通过使您能够将规则放在系统核心逻辑之外的存储中,从而确保规则的任何更改都不会影响核心系统,这可以以非常简单的方式工作。

适用场景:

  • 输入输出类型数量比较固定,但是执行逻辑经常变化;
  • switch条件经常变化,复杂switch语句的替代;
  • 会变动的,具有多种条件或者规则的业务逻辑;
  • 规则自由度不要求特别高的场景。(这种情况建议使用脚本引擎)


RulesEngine 的规则使用JSON进行存储,通过lambda表达式方式表述规则(Rules)。

GitHub地址:https://github.com/microsoft/RulesEngine

文档地址:https://github.com/microsoft/RulesEngine/wiki(我个人感觉文档写的有点模糊,有些用法没有解释的太明白)

首先,新建一个 .NET Core 3.1 的控制台项目,使用 nuget 命令安装包,如下:

新建一个规则文件:Rules.json,设置复制到输出目录。

配置如下:

尝试运行程序,输出如下:

QQ截图20210329134915.jpg

其中 customTest 工作流,会调用我们的 c# 函数来验证规则,注意,在实例化 RulesEngine 对象的时候,要添加 ReSettings 才能正常执行我们的 c# 方法。

其中,验证集合理解起来比较抽象,会用到 localParams,本地变量的关键字为localParams,可以将中间的内容简单理解成 var name = expression

完整代码如下:

源码下载:

游客,如果您要查看本帖隐藏内容请回复






上一篇:.NET Core 在 Linux 图片加水印问题
下一篇:.NET 设置默认使用的 SDK 版本
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2023-8-30 18:51:41 | 显示全部楼层
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-6-16 10:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表