Ecco come vedo le principali differenze tra DAL e BLL:
- Il DAL interroga direttamente il database.
- Il DAL non crea nuove informazioni . Può eseguire complesse richieste SQL, unendo diverse tabelle, ma il risultato di tale richiesta non fornisce mai alcuna informazione che non era già presente nel database.
- Il BLL applica una logica di business sulle informazioni del DAL per creare nuove informazioni.
Ora, mi chiedo quali tipi di dati debbano restituire le funzioni di questi livelli. Per il momento, tutte le funzioni del mio DAL restituiscono DataTable. Ma le funzioni del mio BLL restituiscono una classe o un elenco di classi che ho creato.
Ad esempio:
- dal.getAllPortfolios () restituisce un DataTable (sto lavorando con Visual Studio), risultato di un join su più tabelle.
- bll.getAllPortfolios () chiama dal.getAllPortfolios, ma restituisce un elenco di portfolio. Con la mia classe Portfolio pubblica che si trova nello spazio dei nomi della BLL.
A volte, la funzione BLL non applica realmente alcuna "logica aziendale" ma mappa il DataTable solo da de DAL in una classe BLL.
Mi chiedo se questo è ok. Forse tutto il lavoro di mappatura dovrebbe essere fatto dal DAL? Se questo è il caso, dove inserire le mie lezioni di mappatura personali? Nello spazio dei nomi BLL o DAL (quelle classi sono richieste nei livelli sopra la BLL)?