【问题标题】:Should the BLL validate the same things as the UIBLL 是否应该验证与 UI 相同的内容
【发布时间】:2013-02-24 18:33:24
【问题描述】:

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

  • 用户界面
    • 控制器、视图模型、视图
  • BLL
    • 服务
  • DAL
    • 存储库
  • 型号

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

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在您的服务层再次验证可以帮助“未来证明”您的应用程序,如果它要在其他地方使用,例如向您的应用程序添加 Web 服务。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2011-04-24
          • 2023-03-03
          • 2018-03-01
          • 2015-08-29
          • 1970-01-01
          • 2011-08-31
          • 2017-01-17
          • 1970-01-01
          • 2019-02-24
          相关资源
          最近更新 更多