Nelle applicazioni Enterprise è di fondamentale importanza centralizzare la gestione delle Exception per poter gestire e controllare al meglio l'intera piattaforma.
Attraverso gli application block sia versione
1.1 che
2.0 sia a disposizione un componente proprio per gestire e centralizzare tutte le eccezioni della vostra applicazione.
Nella versione 1.1 non erano fatte molto bene(la versione 2.0 ancora la devo provare) quindi ho preferito crearmi un mio modulo per poterlo riutilizzare in tutti i miei progetti.
Prendiamo ad esempio una architettura three-tiers così fatta:
il layer delle Exception sarà trasversale a gli altri te perchè deve essere richiamato da ogni layer in un determinato modo.
Il modulo Exception quindi sarà un progetto a parte nella nostra soluzione di Visual Studio e conterrà una classe per ogni Layer così strutturata
DALException(come da best pratices usare il suffisso Exception)
BLLException
UIException.
DALException erediterà da SqlException se utilizzate il provider di Sql Server oppure da OleDbException; BLLException erediterà da Exception e UIException erediterà da HttpException.
In questo modo abbiamo la possibilità di intercettare gli errori di ogni singolo layer in modo appropiato.
Poi creremo una classe chiamata Logging che si occuperà di scrivere sul file di testo e quindi verrà richiamata da tutte e 3 le classi custome che abbiamo creato.
La classe Logging si occuperà di
analizzare le exception e volendo attraverso magari un file di configurazione decidere se fare debug, audit ecc.
Se si stà sviluppando un'applicazione web volendo si può sfruttare anche la scrittura nel
tracing di asp.net.
Qualcuno ha fatto una progettazione simile? mi piacerebbe discuterne e capire che soluzioni avete adottato o se vi piace questa!