NCache 4.4 - Documentazione in linea

Configurazione del provider di lettura

 
È necessario seguire i passaggi seguenti per configurare e implementare il provider Read-Through con NCache.
 
Implementazione dell'interfaccia IReadThruProvider
 
Implementare IReadThruProvider, aggiungi i seguenti riferimenti nell'assembly del provider.
 
Alachisoft.NCache.Runtime.dll
 
Crea una classe che implementi Alachisoft.NCache.Runtime.DatasourceProviders.IReadThruProvider interfaccia e distribuiscilo usando NCache Mangiare. NCache framework utilizzerà internamente questa classe per caricare i dati dall'origine dati configurata se non è disponibile nella cache.
 
Interfaccia IReadThru
 
Vuoto pubblico Init(System.Collections.Dizionario parametri, CordacacheId);
Vuoto pubblico Smaltire();
Vuoto pubblico Caricada origine(stringa chiave, su ProviderCacheItemcacheArticolo);
Pubblico Dizionario<stringa, ProviderCacheItem> Caricada origine(stringa[] chiavi);
 
Member
Descrizione
Dentro
Questo metodo verrà chiamato da NCache framework all'avvio della cache. L'utente può utilizzare questo metodo per eseguire attività come l'allocazione di risorse, l'acquisizione di connessioni dell'origine dati, ecc. Questo metodo prende come input l'istanza IDictionay degli argomenti passati al provider tramite NCache Manager (impostazioni di configurazione). Ti permette di passare l'elenco dei parametri al provider. Questi parametri possono essere utilizzati in molti modi. Ad esempio, la stringa di connessione di un'origine dati può essere specificata come parametro. Pertanto, fornisce un modo flessibile per modificare le impostazioni dell'origine dati durante la configurazione senza modifiche al codice.
L'altro argomentoCacheId specifica il nome della cache per cui è configurato il read-through.
Carica da origine
Questo metodo verrà chiamato da NCache framework se l'elemento richiesto non viene trovato nel cache store e NCache deve caricarlo tramite l'origine dati configurata. Questo metodo deve contenere la logica per caricare un oggetto dall'origine dati configurata. Il primo argomento "chiave" si riferisce alla chiave dell'elemento richiesto. Il secondo argomento è un parametro out di tipo Provider CacheItem che deve essere istanziato insieme alle proprietà richieste Qui puoi associare varie proprietà all'elemento caricato prima di restituirlo a NCache struttura. Assicurati che Provider CacheItem.Value assegnato in questo metodo sia "Serializzabile" perché NCache in seguito salverà quell'elemento nel negozio di cache per soddisfare le richieste future.
Durante l'implementazione di questo metodo, dovresti occuparti della sicurezza del thread del codice poiché più richieste Get possono accedere a questo metodo per la lettura. Fai anche attenzione a evitare scenari che causano loop infiniti ricorsivi, ad esempio in questo metodo una richiesta Get con read-through sullo stesso handle della cache causerà una ricorsione infinita.
Nota: In caso di Ottieni, LoadFromSource(chiave stringa, out ProviderCacheItemcacheItem) sarà chiamato dal provider per Ottieni Bulk, LoadFromSource(string[] chiavi)
verrà chiamato per caricare gli elementi dall'origine dati.
lineamenti
Questo metodo verrà chiamato da NCache framework quando la cache si interrompe. Puoi utilizzare questo metodo per eseguire attività come il rilascio di risorse, l'eliminazione delle connessioni, ecc. Qui puoi liberare le risorse relative all'origine dati per un utilizzo efficace delle risorse.
 
 
In NCache, i provider Read-Through sono configurati a livello di cache, ovvero per le cache in cluster tutti i nodi conterranno le configurazioni del provider e i relativi assembly distribuiti.
 
 
Codice di esempio per IReadThruProvider
 
// Contiene i metodi utilizzati per leggere un oggetto tramite la sua chiave dall'origine dati master.
// Contiene i metodi utilizzati per leggere un oggetto tramite la sua chiave dall'origine dati master.
classe pubblica CampioneReadThruProvider : IReadThruProvider
{
un bagno SQLConnection _connessione;
//Esegui attività come allocare risorse o acquisire connessioni
 
vuoto pubblico Dentro(Dizionario parametri, stringa ID cache)
{
oggetto connStringObject = parametri["connstring"];
stringa connString = connStringOggetto == nullo ? "" : connStringObject.ToString();
if (ConnStringa != "")
            _connessione = nuovi SQLConnection(connStringa);
prova
{
  _connessione.Apri();
}
prendere (Eccezione ex)
{
//gestire l'eccezione
}
}
 
//Responsabile del caricamento di un elemento dall'origine dati esterna.
vuoto pubblico Caricada origine(stringa chiave, su ProviderCacheItem cacheItem)
{
//dove LoadFromDataSource è il metodo fittizio per caricare i dati dall'origine dati.
oggetto valore = LoadFromDataSource(chiave);
        oggetto cache = nuovi ProviderCacheItem(valore);
        cacheItem.ResyncItemOnExpiration = vero;
}
 
//Esegui attività associate alla liberazione, al rilascio o al ripristino delle risorse.
vuoto pubblico Smaltire()
{
if (_connessione != nullo)
            _connessione.Chiudi();
}
 
//Responsabile del caricamento della maggior parte degli elementi dall'origine dati esterna.
la percezione Dizionario<stringa, ProviderCacheItem>Caricada origine(stringa[] tasti)
{
  prova
  {
Dizionario<stringa, ProviderCacheItem> dizionario = nuovi Dizionario<stringa, ProviderCacheItem>();
stringa chiave = nullo;
per (int indice = 0; indice
      {
          chiave = chiavi[indice];
//dove LoadFromDataSource è il metodo fittizio per caricare i dati dall'origine dati.
          dizionario.Aggiungi(chiave, nuovi ProviderCacheItem(LoadFromDataSource(chiave)));
      }
ritorno dizionario;
  }
        prendere (Eccezione esp)
  {
Gettare;
  }
}
oggetto privato Carica da origine dati(stringa chiave)
{
oggetto oggetto recuperato = nullo;
// carica l'elemento dall'origine dati e popola l'oggetto recuperato
ritorno oggetto recuperato;
}
}
 
Dopo aver implementato e distribuito questo provider, è possibile effettuare chiamate dirette a NCache per ottenere gli articoli richiesti. Se l'elemento non è disponibile localmente nel cache store, NCache utilizzerà il metodo "LoadFromSource" nella classe di accesso ai dati specificata per caricare gli elementi dall'origine dati.
 
Utilizzo della lettura continua con le operazioni di base
 
Questa sezione spiegherà l'uso del provider read-through dopo averlo configurato e distribuito. NCache supporta più provider di read-through con un'applicazione.
 
Aggiungi i seguenti spazi dei nomi nell'applicazione:
 
utilizzando Alachisoft.NCache.Web.caching;
utilizzando Alachisoft.NCache.Provider di origine.dati di runtime;
utilizzando Alachisoft.NCache.Tempo di esecuzione;
 
NCache fornisce Alachisoft.NCache.Web.Caching.DSReadOption enum per specificare l'opzione Read thru nelle API.
È possibile configurare più provider di read-through NCache. Il provider read-through predefinito verrà chiamato se il nome del provider specifico non viene menzionato tramite l'API. Puoi anche usare provider diversi da quelli predefiniti usando gli overload di API specifici del provider.
 
  • Ottieni metodo
 
Member
Descrizione
Ottenere(stringa chiave, Opzione DSRead dsReadOption)
Ottieni l'elemento dalla cache e utilizza il provider predefinito
Ottenere(stringa  chiave, stringa nome del provider, Opzione DSRead dsReadOption)
Ottieni l'elemento dalla cache e utilizza il provider specificato
 
Prodotto = prodottonullo;
prova
{
stringa chiave = "Prodotto: 1001";
oggetto data = cache.Get(chiave, Opzione DSRead.Leggi attraverso);
if (dati!= nullo)
    {
        prodotto = (Prodotto)dati;
    }
}
prendere (OperazioneFailedException esp)
{
//gestire l'eccezione }
 
  • Metodo alla rinfusa
 
Per una migliore comprensione della revisione di queste operazioni  Operazioni di massa. In questo scenario, utilizzare l'API seguente
Member
Descrizione
Dizionario Ottieni Bulk(stringa[] tasti, Opzione DSRead dsReadOption)
Ottieni elementi in blocco dalla cache e utilizza il provider predefinito
Dizionario Ottieni Bulk(stringa[] tasti, stringa nome del provider, Opzione DSRead dsReadOption)
Ottieni elementi in blocco dalla cache e utilizza il provider specificato
 
prova
{
Corda[] chiavi = { "Prodotto: 1001", "Prodotto: 1002", "Prodotto: 1003", "Prodotto: 1004" };
Dizionario resultSet = cache.GetBulk(chiavi, Opzione DSRead.Leggi attraverso);
//IDictionary contiene chiavi e valori memorizzati nella cache
}
prendere (OperazioneFailedException esp)
{
//gestire l'eccezione
}
 
  • Utilizzo del provider di lettura passante con CacheItem
 
Per questo scenario, usa l'API seguente.
Member
Descrizione
CacheItem Ottieni elemento cache (stringa chiave Opzione DSRead dsReadOption)
Ottieni CacheItem dalla cache e utilizza il provider predefinito
Ottieni elemento cache (stringa chiave, stringa nome del provider, Opzione DSRead dsReadOption)
Ottieni CacheItem dalla cache e utilizza il provider specificato
 
stringa chiave = "Prodotto: 1001";
Prodotto prodotto=nullo;
 
prova
{
CacheItem data = cache.GetCacheItem(chiave, Opzione DSRead.Leggi attraverso);
if (dati!= nullo)
    {
        prodotto = (Prodotto)dati.Valore;
    }
}
prendere (Eccezione esp)
{
//gestire l'eccezione
}
 
Si noti che è possibile specificare il provider predefinito tramite NCManager o tramite client.ncconf posizionato nella cartella config di NCache directory di installazione. Se il nome del provider non viene fornito sia nell'API che in client.ncconf, verrà utilizzato automaticamente il provider predefinito.
 
<nascondiglio id="mica" provider-readthru-predefinito="defaultProviderName" ID-cache-client="" client-cache-syncmode="ottimista" provider-writethru-predefinito="" bilanciamento del carico="I veri" contesto di runtime del server="NCACHE">
  ...
</nascondiglio>
 
CacheInitParam può essere utilizzato anche per specificare i provider.
NCache registra gli avvisi nel registro eventi dell'applicazione in caso di eccezione durante il caricamento degli assembly.
 
 
 
Vedere anche