2

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

谁能比较 Fluent 验证http://fluentvalidation.codeplex.com/和 EntLib 验证应用程序块?

它们各自的优点/缺点是什么?

应该使用一个或另一个的场景是什么?

我的问题类似于您会为 .net 项目推荐哪个验证框架?以及选择哪个验证框架:Spring Validation 或 Validation Application Block (Enterprise LIbrary 4.0)?,但这些问题的答案并没有详细的比较。

如果能推荐一些其他类似的技术,我将不胜感激(并说明原因)

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

4

1 回答 1

1

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

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

如果您希望验证规则会经常更改或不同的应用程序安装将需要针对同一属性的不同规则(例如,不同国家/地区的邮政编码规则不同),您应该选择配置。这并不简单,需要学习,但灵活性是一个优势。EntLib 配置编辑器有助于使其更容易。

只有对于复杂的规则,不能用属性或配置来表达的,你才应该写代码。如果您多次重复相同的规则,请考虑创建自定义验证器和验证属性。

Fluent 验证库支持在代码中添加验证,这是不太理想的方法。所以我不明白,为什么 Fluent 验证如此受欢迎。我也很惊讶,  Fluent 验证作者不熟悉EntLib VAB。

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

于 2013-03-19T11:15:16.430 回答