BLL是否应该验证与UI相同的东西

本文关键字:UI 是否 验证 BLL | 更新日期: 2023-09-27 18:01:06

在我的web应用程序中,我有以下层:

  • UI
    • 控制器、视图模型、视图
  • BLL
    • 服务
  • DAL
    • 存储库
  • 型号

在我的UI层中,我使用ViewModels上的DataAnnotations来验证输入。控制器与服务通信,用它做一些事情,比如注册一个新用户。我的问题是:我是否应该在服务中验证DataAnnotations在ViewModels上已经做过的事情,比如用户名、密码和电子邮件验证?

BLL是否应该验证与UI相同的东西

如果此服务层打算在ASP.NET MVC应用程序之外重用,则应进行验证。如果没有,则可能没有严格必要执行相同的验证。在您的服务层上,您应该验证业务需求,例如指定的用户名已经存在您不能将3000美元电汇到帐户X,因为您的当前帐户中只有2000美元

如果应用程序要在其他地方使用,例如向应用程序添加web服务,那么在服务层中再次验证可以帮助"经得起未来考验"。

您应该始终验证进入服务的所有数据。UI层可能会执行相同的验证(甚至共享代码(。

请注意,某些验证(即"电子邮件是真实的"、"用户创建成功"(只能在服务上执行。