.NET 6中使用Jint的JavaScript規則引擎

banq發表於2022-02-10

過去,當我需要 .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
 
 

相關文章