.NET 6中使用Jint的JavaScript规则引擎


过去,当我需要 .NET 中的用户定义规则引擎时,我曾探索过使用 Irony 语言实现工具包编写自定义域特定语言。但大多数情况下,我使用了 SpringFramework.NET,其中包含一个很棒的表达式评估引擎。表达式评估引擎允许编写基于字符串的规则,甚至是内联函数,这使得在.NET中建立一个基本的、用户可配置的规则引擎没有太多麻烦。
这在构建集成时特别有用,因为它为将输入和输出转换为集成端点提供了一定程度的控制,可以将您的系统与上游和下游更改(例如合同格式更改)隔离开来。
虽然 SpringFramework.NET 存储库仍然显示提交,但该库似乎已经失败
如果在 2022 年需要使用 .NET 6 的用户可配置、可编写脚本的规则引擎,该怎么办?
答案:Jint
 
Jint是一个适用于.NET的Javascript解释器,它可以在任何现代.NET平台上运行,因为它支持.NET标准2.0和.NET 4.6.1目标(及以上)。因为Jint既不生成任何.NET字节码,也不使用DLR,所以它运行相对较小的脚本非常快。
检查一下支持的JavaScript功能列表,它实际上相当丰富,只有一些更高级的功能被排除在外。
让我们看看我们如何将其作为一个规则引擎来构建一个允许用户定义的规则和脚本被执行的系统。
案例源码:https://github.com/CharlieDigital/dotnet6-jint-rules-engine