Cache locale
NCache supporta una cache autonoma non in cluster che risiede su un singolo nodo. La cache locale è simile nelle funzionalità alle altre cache in cluster, ovvero dispone di tutte le funzionalità di memorizzazione nella cache fornite in qualsiasi altra topologia di memorizzazione nella cache, ma non è scalabile o con tolleranza agli errori come le cache in cluster. Poiché si tratta di una cache a server singolo, la sua capacità transazionale non può essere aumentata aggiungendo più server. Inoltre, crea una singola istanza della cache (nessun backup o replica), quindi, se si interrompe, tutti i dati memorizzati nella cache andranno persi. Una cache locale è adatta per applicazioni con un numero limitato di client con attività ridotta o in cui le applicazioni non necessitano di memorizzare nella cache grandi quantità di dati.
Livelli di isolamento nella cache locale
Una cache locale ha due livelli di isolamento come segue:
InProc (in corso)
Questo livello di isolamento significa che la cache risiede nello spazio di memoria dell'applicazione client. Poiché questo tipo di cache esiste all'interno del processo di richiesta, il tempo di risposta è più rapido. In InProc, NCache mantiene i dati memorizzati nella cache come oggetti live (non in forma serializzata), riducendo così i costi di serializzazione/deserializzazione. Tuttavia, tali applicazioni potrebbero essere soggette a limitazioni di memoria, poiché l'applicazione e la cache condividono la stessa memoria. Inoltre, i dati memorizzati nella cache in questo caso non possono essere condivisi con applicazioni in esecuzione al di fuori di questo processo.
Poiché gli oggetti vengono archiviati nello stesso spazio di indirizzi del client cache, i client cache ottengono il riferimento agli oggetti memorizzati nella cache anziché una copia. Per le applicazioni multithread, in cui più thread modificano lo stesso oggetto, queste modifiche devono essere sincronizzate utilizzando varie tecniche di sincronizzazione disponibili in .NET framework.
Note:
Sebbene gli oggetti non siano conservati in forma serializzata nelle cache InProc, è comunque necessario che tutti gli oggetti siano contrassegnati come Serializable
. NCache calcola la dimensione di un oggetto serializzando gli oggetti che successivamente aiutano nello sfratto quando necessario.
OutProc (fuori processo)
Questo livello di isolamento significa che la cache risiede in un processo separato (the NCache processo di servizio) dall'applicazione client. Più client (locali e remoti) possono connettersi alla stessa cache per condividere i dati. La latenza, in questo caso, è maggiore della cache InProc, a causa dei costi di comunicazione all'esterno del processo.
La cache locale OutProc è adatta per situazioni in cui più client nell'applicazione devono accedere agli stessi dati memorizzati nella cache. Ad esempio, in un Web Garden in cui ogni applicazione ASP.NET viene eseguita in un processo di lavoro separato, è necessario utilizzare una cache OutProc. Inoltre, nelle applicazioni ASP.NET, l'uso di un'istanza della cache InProc non è considerata l'opzione migliore a causa delle limitazioni della memoria del processo. Tuttavia, tieni presente che ci sarà un sovraccarico nel trasferimento dei dati tra il processo di candidatura e la cache stessa.
Vedere anche
Topologie della cache
Cluster di cache
Cliente di cache
Cache cliente
Bridge per la replica WAN