我正在尝试为一个重要的应用程序选择其中一个验证框架,虽然两个选项看起来都很吸引人,但在做出决定之前,我想知道是否有任何特定的优缺点需要注意。
我正在尝试为一个重要的应用程序选择其中一个验证框架,虽然两个选项看起来都很吸引人,但在做出决定之前,我想知道是否有任何特定的优缺点需要注意。
在我看来,使用属性进行验证不是最好的解决办法。首先,您必须在域模型中引用基础架构。其次,您没有任何机会向编译后的类添加验证。最后,您无法使用属性验证复杂逻辑,因此必须为实体制作Validate方法,这似乎很尴尬。
我认为验证应该分离为不同的对象。例如,您可以定义验证规则的IValidator。使用像xVal这样的框架有助于在JavaScript中完成表现层的验证。
您可能希望查找xVal和FluentValidation for .NET。NHibernate Validator 1.2 alpha也具有流畅的语法,并且与xVal集成(不确定alpha版本是否具有,但1.0应该具有)。
企业验证块也有一些负面影响。我的实体属性最终有3行属性,使可读性变差。尝试使用AND或OR运算符添加验证也相当痛苦。
我发现企业库块的一个问题是,它可能会强制你使用其他你不想要或不需要的块。例如,验证块可能会使用日志记录块,但你已经满意自己的日志系统了。现在你的应用程序以不同的方式记录日志。尽管如此,我喜欢企业库中验证块的外观。我还没有尝试过Spring.NET。
Common
、Validation
、ServiceLocation
、Unity
、Unity.Configuration
和Unity.Interception
。 - Steven