32

在哪种情况下,您会选择FluentValidation (FV)而不是ASP.NET MVC 3 方式

FV 比 MVC 有什么优势?我意识到,对于后者,我们必须编写更多代码,并且可以用数据注释乱扔代码。此外,使用 FV 编写自定义验证似乎比 MVC 更容易。但是,使用 MVC 可以使用数据注释并插入 jQuery 验证。

那么在您看来,是什么让您选择其中之一呢?在某些情况下您甚至会同时使用两者吗?

4

1 回答 1

36

Fluent 验证是设置专用验证器对象的一种方法,当您希望将验证逻辑与业务逻辑分开处理时,可以使用这种方法。面向方面的编程 (AOP) 范式能够分离系统内的横切关注点,而验证就是这样的关注点之一。分离验证有助于清理您的域代码并使其更具凝聚力,并为您提供一个查找验证逻辑的地方。

MVC 注释驱动的验证是一种非常“便宜”的方式,可以在应用程序中进行一些基本验证,而无需创建专用验证器对象、创建一个将它们组织起来并将它们全部插入的验证系统。它很容易设置,但会使您的域对象不那么干净。

对于可以使用注释处理所有验证逻辑的小型系统,我建议只使用注释,因为它们很容易设置。对于更大、更复杂的系统,我建议使用验证器对象分离验证问题。

我个人喜欢使用这两种方法:向 ViewModel 类添加验证属性(这意味着注释不会弄乱我的域对象),以及在我的域层中拥有专用的验证器对象。这是少量的重复,但使用注释是如此快速和容易,我发现额外的维护成本是值得的。

于 2011-06-07T14:52:34.790 回答