Come gestire gli oggetti contestuali senza contenitore IoC (sessione o passaggio di oggetti)?

2

Sto usando asp.net (c #). Ho una fabbrica che usa un dizionario di chiavi che sono mappate a tipi di oggetti. Inizialmente ho usato una variabile statica per tracciare il dizionario ma ho realizzato che sarebbe stata condivisa tra tutte le sessioni. Poi mi viene l'idea di passare la mappa degli oggetti ovunque, il che sembra complicato.

Le mappe oggetto o altri elementi contestuali dovrebbero essere passati in giro, memorizzati nella sessione, o dovrei creare una nuova istanza ogni volta che ne ho bisogno (nel caso di elementi non contestuali)? Non sto usando un contenitore IoC. Un esempio di un oggetto non contestuale nel mio caso sarebbe quello di mappare i comandi di testo che arrivano dal client agli oggetti.

In generale sembra che non ci sia un buon modo per gestire i dati contestuali senza almeno avere un oggetto statico che estrae i valori da una sessione. Altrimenti sono bloccato a passare tonnellate di oggetti di contesto ovunque siano necessari. Sicuramente esiste un buon modello per la gestione di contesti, mappe di oggetti, ecc. Senza usare la sessione per archiviare tutto?

    
posta KingOfHypocrites 25.04.2012 - 22:08
fonte

1 risposta

2

static variable to track the dictionary but realized it would be shared among all sessions. Then I'm left with the idea of passing the object map around everywhere, which seems messy.

Generalmente: dati cache, ma ricrea oggetti su ogni richiesta

Memorizzare troppo nella sessione è un terribile errore; le variabili statiche tendono ad essere anche peggiori (specialmente con ObjectContext e DBContext)

La creazione di oggetti non è quasi costosa come un'operazione IO e, pertanto, non è considerata un punto che si desidera provare a ottimizzare memorizzando oggetti nella sessione. Sebbene sia una buona idea rendere l'inizializzazione dell'oggetto fare il minimo di elaborazione possibile. Cerca Pigro per vedere il modo preferito di inizializzazione ritardata.

    
risposta data 25.04.2012 - 22:20
fonte

Leggi altre domande sui tag