在我的 Web 应用程序中,我有以下层:
- 用户界面
- 控制器、视图模型、视图
- BLL
- 服务
- 达尔
- 存储库
- 楷模
在我的 UI 层中,我使用 ViewModels 上的 DataAnnotations 来验证输入。控制器与服务通信以使用它来做一些事情,比如注册一个新用户。我的问题是:我是否应该在服务中验证 DataAnnotations 已经在 ViewModel 上执行的相同操作,例如用户名、密码和电子邮件验证?
在我的 Web 应用程序中,我有以下层:
在我的 UI 层中,我使用 ViewModels 上的 DataAnnotations 来验证输入。控制器与服务通信以使用它来做一些事情,比如注册一个新用户。我的问题是:我是否应该在服务中验证 DataAnnotations 已经在 ViewModel 上执行的相同操作,例如用户名、密码和电子邮件验证?
如果此服务层打算在您的 ASP.NET MVC 应用程序之外重用,那么您应该进行验证。如果不是,那么可能没有必要进行相同的验证。在您的服务层上,您应该验证业务需求,例如指定的用户名已经存在,或者您不能将 3000 美元汇入账户 X,因为您当前账户中只有 2000 美元。
如果要在其他地方使用,再次在您的服务层中再次验证可以帮助“未来证明”您的应用程序,例如向您的应用程序添加 Web 服务。
您应该始终验证进入您的服务的所有数据。UI 层可能会执行相同的验证(甚至共享代码来执行此操作)。
请注意,某些验证(即“电子邮件是真实的”、“用户创建成功”)只能在服务上执行。