Mi piacerebbe sapere quale sarebbe il modo migliore per gestire una connessione a un database in asp.net.Gestione della connessione al database in un'applicazione asp.net
La mia applicazione è costruita utilizzando un'architettura N-Tier. La DAL consiste di classi statiche con metodi quali
Public Shared Sub Delete(_
ByVal connection As MyConnectionClass, _
ByVal contact_id As Integer, _
ByVal contact_timestamp As Date _
)
With connection.ProcParams
.Add(New StoredProcParam("p_contact_id", contact_id, OracleDbType.Int32))
.Add(New StoredProcParam("p_contact_timestamp", contact_timestamp, OracleDbType.Date))
End With
connection.Execute("PKG_DATA_ACCESS.DeleteContact")
End Sub
Il punto da notare qui, è che passo il collegamento al DAL dalla BLL.
Qui ci sono i punti che ho considerato, ma nessuno di loro sembra giusto per me, quindi sto solo chiedendo un consiglio.
Devo creare le connessioni nel MasterPage, conservarlo in un oggetto, poi passarlo ai miei oggetti di business come li creo (la cosa che sto cercando di evitare)
Devo creare una connessione utilizzando una classe statica e chiamando un metodo come CreateConnection su di esso, dal costruttore dei miei oggetti di business (Qualcosa che vorrei, ma non voglio avere una connessione per oggetto, mi piacerebbe che fosse condivisa per tutte le istanze dei miei oggetti, ma siccome asp.net è multi-thread, una classe statica non ha senso archiviare connessioni)
Idealmente, la soluzione dovrebbe funzionare bene anche in un ambiente Windows Form (quindi nessuna connessione memorizza in sessi attivo e recuperandolo con un metodo statico in una classe, per il contesto corrente)
La condivisione della stessa connessione tra l'intera applicazione non è sempre una buona pratica. Pensa a un sito Web con centinaia di richieste al secondo, tutte con la stessa connessione al database ... –
Stavo pensando a una connessione per utente, ma la risposta di Neil N è soddisfacente, è qualcosa a cui non avevo pensato. – Martin