2

我正在尋找一種標準的方法來將輸入參數驗證添加到WCF服務集。WCF服務的流利的驗證或EntLib驗證應用程序塊

誰能給流利的驗證http://fluentvalidation.codeplex.com/和EntLib驗證應用程序塊的比較呢?

他們每個人的優點/缺點是什麼?

什麼情況下,應該使用一個或另一個?

我的問題類似於Which validation framework would you recommend for .net projects?Which validation framework to choose: Spring Validation or Validation Application Block (Enterprise LIbrary 4.0)?,但這些問題的答案沒有詳細的比較。

我會很感激,如果將推薦一些其他類似的技術(與推理爲什麼)

有沒有人有經驗,這兩個框架和選擇一個對自己的項目?這個決定的原因是什麼?

+0

不要忘記.NET框架中包含的數據註釋。請注意,這個問題是開放的討論,並可能不適合於Stackoverflow。 – Steven

+0

通過選擇VAB,我可以使用DataAnnotations進行簡單驗證(根據您的答案http://stackoverflow.com/a/3568156/52277):) –

回答

1

幾個月我可以回答之後,該EntLib驗證應用塊(VAB)是支持代碼,屬性和配置驗證成熟文庫。

在大多數情況下,開發商應在DataContract請求作爲最簡單和簡潔的方式DataMember屬性的屬性驗證啓動。

如果用戶希望驗證規則會經常更換或應用程序的不同裝置將需要同一屬性的不同的規則(例如郵編規則是不同國家的不同),你應該選擇配置。這不是直接的,需要學習,但靈活性是一個優勢。 EntLib配置編輯器可以幫助簡化操作。

僅適用於複雜規則,無法使用屬性或配置來表達,您應該編寫代碼。 如果您幾次重複相同的規則,請考慮創建自定義驗證程序和驗證屬性。

Fluent validation library支持在代碼中添加驗證,這是不太理想的方法。所以我不明白,爲什麼Fluent驗證如此受歡迎。另外我很驚訝,那個帶有EntLib VAB的Fluent validation author is not familiar

我原來的問題是關於WCF操作的輸入參數。但是,最佳做法建議使用單個請求參數作爲數據協定,而不是多個RPC樣式的簡單參數。 無論如何,VAB爲WCF操作的各個參數提供了屬性,它提供了更簡潔的視圖 (例如請參閱http://www.codeproject.com/Articles/259327/Integrate-Validation-Block-with-WCF

+0

不要忘記,您可以流利地構建VAB配置,雖然這需要[一點點的手工](http://stackoverflow.com/a/8906203/264697),因爲它[不支持OOTB](http://entlib.codeplex.com/discussions/222714?ProjectName= entlib)。 – Steven