【发布时间】: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