2010-08-22 11 views
5

Quali sono le "migliori pratiche" relative alla gestione degli errori in un'applicazione Web ASP.NET MVC2 progettata da DDD? Per esempio, prendiamo l'aspetto più comune di una web app, il login:Gestione degli errori nell'applicazione Web ASP.Net MVC2 con DDD

  • UserController: Coordinate Ovviamente alcuni oggetti di dominio al fine il Login o rifiutare l'utente, e reindirizzare ad altre parti dell'interfaccia web secondo necessità. Nel mio caso, è alcune chiamate a diversi UserTasks metodi come IsLoggedIn() o LogIn(), più alcuni RedirectToAction.
  • UserTasks: ha la carne del lavoro di coordinamento relativo dominio oggetti servizi, come SecurityService e inferiori dominio oggetti, ad esempio chiamando SecurityService.ValidateUser() o controllo User.IsUserInactive().
  • SecurityService: Ovviamente coordinate autenticazione/autorizzazione servizi. Simile a un provider di appartenenze , senza il bagaglio in eccesso .
  • Utente: rappresenta l'utente. Non anemico, in quanto ha vari metodi specifici dell'utente come IsuUserInactive() che controlla IsDeleted, IsLockedOut o se l'utente è tra FromDt e ThruDt.

Come si evidenziano errori tali da essere informativi e non ostili agli utenti? Eliminate il codice con le eccezioni e poi gestirle tutte in Application_Error()? Ad esempio, se ValidateUser() genera un ArgumentNullException() quando la password è vuota e un AuthenticationException() quando la password non è corretta, o restituisce un bool = falso? Se quest'ultimo, come informa l'utente di ciò che ha causato il fallimento della convalida?

risposta

0

Suppongo che tu stia utilizzando WhoCanHelpMe/S # arp Architecture in base alle convenzioni di denominazione che vedo? In tal caso, ti consiglio vivamente di dare un'occhiata a this article che illustra l'implementazione di un livello di servizi applicativi più puliti. Dai un'occhiata al risultato ActionConfirmation restituito dal livello di servizio; abbiamo trovato questo un modo ideale per restituire un risultato di errore meno che cattivo dal livello Attività.