Каковы "лучшие практики" в отношении обработки ошибок в веб-приложении ASP.NET MVC2, разработанном DDD?Например, давайте рассмотрим наиболее распространенный аспект веб-приложения: имя входа:
- 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?Если последнее, как вы сообщите пользователю о том, что вызвало сбой проверки?