处理DDD风格的ASP.Net MVC2 Web应用程序中的错误

时间:2010-08-22 17:11:19

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

在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?如果是后者,您如何告知用户导致验证失败的原因?

1 个答案:

答案 0 :(得分:0)

我假设您正在使用基于我看到的命名约定的WhoCanHelpMe / S#arp架构?如果是这样,我强烈建议您查看this article,其中介绍了更清洁的应用程序服务层的实现。查看从服务层返回的ActionConfirmation结果;我们发现这是从Tasks层返回一个不太讨厌的错误结果的理想方法。