【问题标题】:Handling Errors In DDD-Flavored ASP.Net MVC2 Web Application处理 DDD 风格的 ASP.Net MVC2 Web 应用程序中的错误
【发布时间】:2011-04-02 07:52:55
【问题描述】:

关于 DDD 设计的 ASP.NET MVC2 Web 应用程序中的错误处理的“最佳实践”是什么?例如,让我们以 Web 应用程序最常见的方面为例,登录:

  • UserController:明显坐标 一些域对象最终 登录或拒绝用户,以及 重定向到网络的其他部分 接口根据需要。就我而言,它是 对不同 UserTasks 的几次调用 IsLoggedIn() 或 LogIn() 等方法, 加上一些 RedirectToAction。
  • UserTasks:有工作重点 协调相关领域 对象服务,例如 SecurityService 及下域 对象,例如调用 SecurityService.ValidateUser() 或 检查 User.IsUserInactive()。
  • SecurityService:显然 坐标 认证/授权 服务。类似于一个 MembershipProvider,没有 超重行李。
  • 用户:代表用户。不是 贫血,因为它有各种 用户特定的方法,例如 检查的 IsuUserInactive() IsDeleted、IsLockedOut 或如果用户 介于 FromDt 和 ThruDt 之间。

您如何冒泡错误,使它们能够提供信息,而不是对用户怀有敌意?您是否会乱扔带有异常的代码,然后只在 Application_Error() 中处理它们?例如,ValidateUser() 应该在密码为空时抛出 ArgumentNullException(),在密码不正确时抛出 AuthenticationException(),还是返回 bool = false?如果是后者,您如何告知用户导致验证失败的原因?

【问题讨论】:

    标签: asp.net-mvc-2 error-handling domain-driven-design


    【解决方案1】:

    我假设您根据我看到的命名约定使用 WhoCanHelpMe / S#arp 架构?如果是这样,我强烈建议您查看this article,它演示了更清洁的应用程序服务层的实现。查看从服务层返回的ActionConfirmation 结果;我们发现这是从 Tasks 层返回不太严重的错误结果的理想方法。

    【讨论】:

      猜你喜欢
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多