Ho un BusinessLayer.dll che chiama DataAccessLayer.dll che alla fine rende la connessione TCP al server SQL. Ogni metodo del livello aziendale ha un metodo corrispondente nel livello di accesso ai dati che quindi chiama la rispettiva vista nel database.
Ora la domanda è: cosa devo fare se ho bisogno di ottenere i dati da tre viste contemporaneamente per un metodo del livello aziendale? Queste viste saranno richieste individualmente anche in altre aree dell'applicazione, ma in una o due aree i dati dovranno essere recuperati da tutte e tre le viste contemporaneamente.
Opzione 1: Devo chiamare quei singoli metodi nel livello aziendale in un quarto metodo facendo tre diversi accessi al database tramite i rispettivi livelli di accesso business e dati e quindi raggruppare i dati insieme nel mio livello aziendale o
Opzione 2: dovrei avere solo una procedura memorizzata che chiama queste tre viste e restituire i dati a DataAccessLayer e poi tornare al livello aziendale?
Nell'immagine sopra, l'opzione 1 è indicata dai riquadri verdi e il quarto metodo aziendale è indicato dalla casella nera che avvia i tre colpi alla casella SQL per ottenere i dati.
L'opzione 2 è indicata dalle caselle arancioni. Il vantaggio dell'approccio usando l'opzione 2 è che non si verificano più I / O in rete, ma il codice nel livello dati probabilmente duplica il codice scritto nelle caselle verdi.
Il client può essere un'applicazione Web o Windows. In un'applicazione basata su Windows, il livello aziendale sarà avvolto da un servizio che il client Windows chiamerà. Come si ottiene un equilibrio tra modularità e prestazioni qui?