7

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

4

2 回答 2

8

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

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

您可能想寻找 .NET 的xValFluentValidationNHibernate Validator 1.2 alpha 也具有流畅的语法,并且与 xVal 集成(不确定 alpha,但 1.0 应该是)。

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

于 2009-05-27T20:05:32.710 回答
3

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

于 2009-04-21T19:24:52.170 回答