【问题标题】:Fluent validation or EntLib Validation Application Block for WCF servicesWCF 服务的 Fluent 验证或 EntLib 验证应用程序块
【发布时间】:2012-06-06 13:33:33
【问题描述】:

我正在寻找一种将输入参数验证添加到 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)?,但是这些问题的答案没有详细的比较。

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

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

【问题讨论】:

  • 不要忘记包含在 .NET 框架中的数据注释。请注意,这个问题有待讨论,可能不适合 Stackoverflow。
  • 通过选择 VAB,我可以使用 DataAnnotations 进行简单的验证(根据您的回答 stackoverflow.com/a/3568156/52277):)

标签: wcf validation fluentvalidation validation-application-bl


【解决方案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

【讨论】:

猜你喜欢
  • 2012-02-19
  • 2010-11-26
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
  • 2011-02-12
  • 2012-07-27
  • 2011-12-28
相关资源
最近更新 更多