La mia app ASP.NET offre molte discussioni di gruppo separate e complete. Come attualmente scritto, i dati globali attivi sono conservati in un oggetto GroupDiscussionObject complesso che è archiviato in System.Web.HttpContext.Current.Application sotto una chiave specifica per quella discussione, cioè
Dim thisDiscussionID as integer = 99
Dim thisDiscussionObject as GroupDiscussionObject
Dim workHT as HashTable
Dim AC = System.Web.HttpContext.Current.Application
thisDiscussionObject = AC("GroupDiscussionObject_" & Trim(Str(thisDiscussionID)))
workHT = thisDicussionObject.ThatHashTable
Il tipo GroupDiscussionObject è un oggetto di classe con molte variabili pubbliche, variabili private accessibili tramite proprietà pubbliche, hashtables, code e così via.
Gli elementi GroupDiscussionObjects vengono inizialmente caricati dal disco e gli aggiornamenti agli elementi figlio vengono sincronizzati con il disco (e controllati tramite una coda per eliminare i conflitti), laddove necessario.
Ora funziona tutto bene. Tuttavia, in un miglioramento, aggiungo sempre più variabili a GroupDiscussionObject.
La mia domanda è, nel quadro di questo approccio, che ci saranno problemi di prestazioni con avere tutti i dati per una discussione dietro una chiave di Application Cache, piuttosto che scomporla e avere gli elementi parziali sotto le chiavi della cache?
Upate: per rifinire la mia domanda, avere tutti i dati sotto una chiave di cache dell'applicazione crea un qualche collo di bottiglia, invece di averlo diviso tra molte chiavi? O è solo un altro indirizzo di memoria e soggetto agli stessi vincoli di accesso di qualsiasi indirizzo di memoria?