Oggetto di accesso ai dati: Singleton o molti altri piccoli?
-
05-07-2019 - |
Domanda
Quando si sviluppa un'applicazione (web, win, qualunque cosa) che fa un sacco di accesso ai dati, è meglio mantenere l'oggetto di accesso ai dati aperto per la lunghezza della richiesta (cioè fare molte cose di seguito, quindi chiuderlo quando hai finito) o continui ad aprirne e chiuderne di nuove?
protected aDataContext dc = new aDataContext();
vs
private aObject GetInfo(...) {...}
Penso che il primo sarebbe migliore per le prestazioni; ma sembra una cattiva pratica.
Soluzione
In genere dovresti aprire una nuova connessione per ogni unità di lavoro, usarla e chiuderla il prima possibile. Internamente .NET (o ADO o ODBC o altro) metterà in comune le connessioni per te, purché la stringa di connessione sia la stessa, quindi in realtà è molto efficiente. Vi sono altri problemi da tenere in considerazione, in particolare le transazioni, ma in generale è meglio seguire questo modello di open-do-close e consentire a .NET di gestire il pool di connessioni.
Altri suggerimenti
Meglio usare un pool di connessioni. mantenere aperto un numero limitato di connessioni il più possibile. L'apertura di una connessione è costosa, ma avere milioni di connessioni aperte potrebbe uccidere il tuo server. dovresti confrontare il tuo scenario per i migliori risultati ....