2010-08-22 44 views
5

在DDD設計的ASP.NET MVC2 Web應用程序中,有關錯誤處理的「最佳實踐」是什麼?例如,讓我們的網絡應用中最常見的方式,登錄:處理DDD風味ASP.Net中的錯誤MVC2 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?如果是後者,你如何告知用戶導致驗證失敗的原因?

回答

0

我假設你使用WhoCanHelpMe/S#arp基於我看到的命名約定的體系結構?如果是這樣,我強烈建議看一下this article,它介紹了一個更乾淨的應用程序服務層的實現。看看服務層返回的ActionConfirmation結果;我們發現這是一種理想的方式,可以從Tasks圖層返回一個不太令人討厭的錯誤結果。