验证块与Nhibernate.Validator

时间:2020-03-06 14:55:51  来源:igfitidea点击:

我正在寻找验证框架,而我已经在使用NHibernate的时候,我正在考虑使用contrib项目中的NHibernate.validator,但是我也查看了MS Validation Block,它似乎很健壮,但我尚未深入了解每个验证的细节。我想知道是否有人进入了这两个框架,体验如何?

解决方案

D)以上都不是。
我记得去年对此进行了评估,并决定继续使用Spring.NET的验证框架。

如果我们使用NHibernate,那么我们可能还想使用Spring.NET的设施来使用NHibernate。

在大多数情况下,我会说Spring.NET是非常独立的。意味着它不应该迫使我们重新进行架构设计。我们可以根据需要使用任意数量的元素。编写一个可以注入到需要使用spring进行验证的类中的对象应该非常容易。然后,我们可以将该对象连接到城堡中,以使用所需的"验证组"或者"验证者"的名称,然后让验证器春季注入到该对象中,然后表单/业务对象/服务将使用验证器。

这是文档的链接,验证是第12节:

http://www.springframework.net/docs/1.2.0-M1/reference/html/index.html

我们是在使用Castle还是在使用Monorail?

NHibernate Validator不需要我们使用NHibernate进行持久化。用法可以很简单:

var engine = new ValidatorEngine();
InvalidValue[] errors = engine.Validate(someModelObjectWithAttributes);

foreach(var error in errors)
{
    Console.WriteLine(error.Message);
}

当然,它可以挂接到NHibernate中并防止无效对象的持久性,但是我们也可以使用它来验证非持久性对象。

当然,我们可以尝试编写自己的验证框架。例如。卡尔·塞金(Karl Seguin)将为我们提供帮助:

http://codebetter.com/blogs/karlseguin/archive/2009/04/26/validation-part-1-getting-started.aspx

http://codebetter.com/blogs/karlseguin/archive/2009/04/27/validation-part-2-client-side.aspx

http://codebetter.com/blogs/karlseguin/archive/2009/04/28/validation-part-3-server-side.aspx

这真的是一个很好的解决方案:)