2011-05-14 46 views
10

我目前正在用c#編寫一個.net應用程序,並且希望檢查一些規則並基於傳遞或失敗規則執行操作。所以我期望實現一個通用的解決方案,我可以重用遵循良好的oop原則。這使我得出結論,我需要編寫一個規則引擎。我有很好的c#知識,但這是我第一次需要編寫一個規則引擎,因此作爲我的設計和開發的一部分,我正在尋找關於創建這樣的任何提示一個引擎。我可以看到的任何例子都會是什麼呢?任何C#/ .net規則引擎應用程序?應該駐留在典型的3層架構中的哪一層?我快速瀏覽了codeplex和google代碼,但沒有一個跳出來看我!所以有些方向會很棒。c#中的規則引擎設計和示例#

回答

3

事實上,.NET有一個頂級的規則引擎,意在與工作流程一起使用(因爲它的設計是),但可以輕鬆地在工作流程之外使用:您應該看到「Windows Workflow Foundation Rules Engine」並檢查System.Workflow.Activities.Rules名稱空間。

學習如何在工作流程之外使用規則只需要一點點Google搜索。

編輯:如果你想檢查建築,這裏是兩家開源預置的引擎:

+1

我知道這聽起來像可怕的狂妄自大,但我發現WF規則庫與精心設計的定製領域特定引擎相比是貧血的,實際上無法使用。當然,這取決於應用程序,但我不知道我是否會很快推薦它。 – Aaronaught 2011-05-14 02:27:24

+0

我一直使用我的慢節奏工業控制應用程序的工作流程,這給我的印象是它是最實用的實現之一。但也許那是因爲我對它很熟悉。但我知道,這更像是一個典型的xUnit vs MSUnit的論點.. – 2011-05-14 02:37:09

+1

也許吧。我所知道的是,每次我嘗試使用WF(或WF規則)時,我總是會拋棄我的手,並說:「爲什麼我不*寫代碼*而不是將它綁到這裏事情?」我沒有將WF與其他工作流引擎進行比較,我確定它們都很好,我想我所說的是,如果不是所有的OTS規則引擎都是非常通用的,不能提供比簡單代碼更多的優勢+配置。也許這只是我的缺乏經驗/不愉快的經歷。 – Aaronaught 2011-05-14 03:05:00

0

建設和實現自己的規則引擎可以是一件非常困難的事情,需要考慮很多事情。你將面臨的最大問題是試圖決定哪些規則可以觸發,什麼時候觸發。沒有給予適當的照顧可能會導致執行過程中出現性能問題。我強烈建議將重點放在業務問題上,並讓您的主題專家(中小企業)有能力定義和維護自己的規則。有很多好的商業產品可以做到這一點;我已經成功實施了多次www.inrule.com。他們有一套很好的產品可以幫助解決簡單和複雜的問題。希望這有助於。