针对WCF服务的流畅验证或EntLib验证应用程序块

时间:2012-06-06 13:33:33

标签: wcf validation fluentvalidation validation-application-bl

我正在寻找一种标准方法来将输入参数的验证添加到WCF服务集。

任何人都可以比较Fluent验证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)?,但这些问题的答案没有详细比较。

如果推荐其他类似技术(推理原因),我将不胜感激。

有没有人有这两个框架的经验并为他们的项目选择一个?决定的原因是什么?

1 个答案:

答案 0 :(得分:1)

几个月后,我可以回答,EntLib验证应用程序块(VAB)是一个成熟的库,它支持代码,属性和配置验证。

在大多数情况下,开发人员应该从DataContract请求中的DataMember属性的属性验证开始,这是最简单明了的方法。

如果您希望经常更改验证规则,或者不同的应用程序安装需要针对同一属性的不同规则(例如,不同国家/地区的邮政编码规则不同),则应选择配置。这不是直截了当的,需要学习,但灵活性是一个优势。 EntLib配置编辑器可以帮助您更轻松。

仅对于无法使用属性或配置表达的复杂规则,您应该编写代码。 如果您重复相同的规则几次,请考虑创建自定义验证器和验证属性。

Fluent validation library支持在代码中添加验证,这是不太理想的方法。所以我不明白,为什么Fluent验证如此受欢迎。我也很惊讶,Fluent validation author is not familiar使用了EntLib VAB。

我原来的问题是关于WCF操作的输入参数。但是,最佳实践建议使用单个请求参数作为数据协定,而不是多个RPC样式简单参数。 无论如何,VAB为WCF操作的各个参数提供属性,从而提供更简洁的视图 (例如,见http://www.codeproject.com/Articles/259327/Integrate-Validation-Block-with-WCF