【问题标题】:Which validation framework to choose: Spring Validation or Validation Application Block (Enterprise LIbrary 4.0)?选择哪个验证框架:Spring Validation 或 Validation Application Block (Enterprise LIbrary 4.0)?
【发布时间】:2010-10-19 14:21:18
【问题描述】:

我正在尝试为一个主要应用程序选择一个验证框架,虽然这两个选项看起来都很诱人,但我想知道在选择其中一个之前是否应该注意任何特定的优缺点。

【问题讨论】:

  • 网页版还是桌面版?你在使用其他 entlib 块吗?你能指定架构吗?
  • 它适用于 Web 应用程序。我可能会使用其他 entlib 块,例如安全性和日志记录,因为这在应用程序中是必需的。不过我不会使用 Unity,因为该位将由 Spring.NET 处理
  • 我没有使用 Spring.NET 的经验,但我是 EntLib 块的忠实粉丝。你应该阅读weblogs.asp.net/ricardoperes/archive/2009/03/11/…davidhayden.com/blog/dave/archive/2007/02/28/PropertyProx
  • 非常感谢!我一定会考虑 EntLib。

标签: .net validation frameworks validation-application-bl


【解决方案1】:

在我看来,使用属性进行验证并不是最佳解决方案。首先,您必须在域模型中引用基础设施。其次,您没有任何机会向已编译的类添加验证。最后,你不能用属性验证复杂的逻辑,你必须对实体使用 Validate 方法,这看起来很尴尬。

在我看来,验证应该分开到不同的对象。例如,您可以将验证定义为规则的 IValidator。使用像 xVal 这样的框架有助于在表示层中使用 JavaScript 进行验证。

您可能需要查找xValFluentValidation for .NETNHibernate Validator 1.2 alpha 也有流畅的语法,它与 xVal 集成(不确定 alpha,但 1.0 应该是)。

企业验证块也很少有负面影响。我的实体的属性最终有 3 行属性并且使可读性更差。尝试使用 AND 或 OR 运算符添加验证也很痛苦。

【讨论】:

  • 验证应用程序块不必与属性一起使用。它包含基于配置的验证方法。阅读这篇文章:cuttingedge.it/blogs/steven/pivot/entry.php?id=46
  • 虽然出于与 Marek 所述相同的原因,我更喜欢基于配置的验证而不是基于属性的配置,但 VAB 5.0 允许您使用 DataAnnotations 引入的伙伴类技术定义验证。
  • xVal 与 ASP.NET MVC 1.0 一起使用,目前已弃用
【解决方案2】:

我发现企业库块的一件事是它可以强制您使用您不想要/不需要的其他块。例如,验证可能使用日志记录块,但您对自己的日志记录系统感到满意。现在您的应用程序以不同的方式记录事物。也就是说,我喜欢 Ent Lib 中的 Validation 块的外观。我还没有玩过 Spring.NET。

【讨论】:

  • 验证应用程序块我从来没有遇到过这个问题。您能指出 VAB 调用 Logging Application Block 的代码或位置吗?
  • 我对此进行了更深入的研究,但没有从企业库的验证程序集直接调用任何日志程序集。我认为您的应用程序直接使用了日志记录部分。在我的应用程序中,我只发布特定于 VAB 的程序集。对于 VAB 5.0,您需要:CommonValidationServiceLocationUnityUnity.ConfigurationUnity.Interception
  • 这可能是在旧版本上。当我想我看到这个时,它是 Enterprise Library 的 2.0 版。
猜你喜欢
  • 1970-01-01
  • 2011-02-20
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 2016-12-04
  • 1970-01-01
相关资源
最近更新 更多