验证块与Nhibernate.Validator
我正在寻找验证框架,而我已经在使用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
这真的是一个很好的解决方案:)