NCache 4.4 - Online-Dokumentation

Konfigurieren des Read-Through-Anbieters

 
Die folgenden Schritte sollten befolgt werden, um den Read-Through-Anbieter mit zu konfigurieren und zu implementieren NCache.
 
Implementieren der IReadThruProvider-Schnittstelle
 
Implementieren IReadThruProviderFügen Sie der Anbieterassembly die folgenden Verweise hinzu.
 
Alachisoft.NCache.Runtime.dll
 
Erstellen Sie eine Klasse, die implementiert Alachisoft.NCache.Runtime.DatasourceProviders.IReadThruProvider Schnittstelle und stellen Sie sie mit bereit NCache Essen. NCache Das Framework verwendet diese Klasse intern, um die Daten aus der konfigurierten Datenquelle zu laden, wenn sie nicht im Cache verfügbar sind.
 
IReadThru-Schnittstelle
 
Öffentliche Leere Init(System.Collections.IWörterbuch Parameter, SchnurCacheId);
Öffentliche Leere Entsorgen();
Öffentliche Leere LoadFromSource(Schnur Schlüssel, ProviderCacheItemCacheItem);
Öffentliche Wörterbuch<Schnur, ProviderCacheItem> LoadFromSource(Schnur[] Schlüssel);
 
Mitglied
Beschreibung
Drin
Diese Methode wird von aufgerufen NCache Framework zum Cache-Start. Der Benutzer kann diese Methode zum Ausführen von Aufgaben wie der Zuweisung von Ressourcen, dem Erwerb von Verbindungen von Datenquellen usw. verwenden. Diese Methode verwendet als Eingabe die IDictionay-Instanz von Argumenten, die über an den Anbieter übergeben werden NCache Manager (Konfigurationseinstellungen). Es ermöglicht Ihnen, eine Liste von Parametern an den Anbieter zu übergeben. Diese Parameter können auf vielfältige Weise genutzt werden. Als Parameter kann beispielsweise die Verbindungszeichenfolge einer Datenquelle angegeben werden. Somit bietet es eine flexible Möglichkeit, die Datenquelleneinstellungen zu ändern und sie gleichzeitig ohne Codeänderungen zu konfigurieren.
Das andere ArgumentCacheId gibt den Cache-Namen an, für den das Durchlesen konfiguriert ist.
LoadFromSource
Diese Methode wird von aufgerufen NCache Framework, wenn das erforderliche Element nicht im Cache-Speicher gefunden wird und NCache muss es über die konfigurierte Datenquelle laden. Diese Methode sollte Logik zum Laden eines Objekts aus einer konfigurierten Datenquelle enthalten. Das erste Argument „key“ bezieht sich auf den Schlüssel des erforderlichen Elements. Das zweite Argument ist ein Out-Parameter vom Typ Provider CacheItem, der zusammen mit den erforderlichen Eigenschaften instanziiert werden muss. Hier können Sie dem geladenen Element verschiedene Eigenschaften zuordnen, bevor Sie es zurückgeben NCache Rahmen. Stellen Sie sicher, dass der in dieser Methode zugewiesene Provider CacheItem.Value „Serializable“ ist, weil NCache speichert dieses Element später im Cache-Speicher, um zukünftige Anforderungen zu erfüllen.
Bei der Implementierung dieser Methode sollten Sie auf die Sicherheit des Code-Threads achten, da mehrere Get-Anfragen zum Durchlesen auf diese Methode zugreifen können. Achten Sie auch darauf, Szenarien zu vermeiden, die rekursive Endlosschleifen verursachen, z. B. führt bei dieser Methode eine Get-Anfrage mit Durchlesen für dasselbe Cache-Handle zu einer unendlichen Rekursion.
Hinweis: Im Falle von Erhalten Sie , LoadFromSource(string key, out ProviderCacheItemcacheItem) wird währenddessen vom Anbieter abgerufen GetBulk, LoadFromSource(string[]-Tasten)
wird aufgerufen, um Elemente aus der Datenquelle zu laden.
Entsorgen
Diese Methode wird von aufgerufen NCache Framework, wenn der Cache stoppt. Mit dieser Methode können Sie Aufgaben wie das Freigeben von Ressourcen, das Löschen von Verbindungen usw. ausführen. Hier können Sie die mit der Datenquelle verbundenen Ressourcen für eine effektive Ressourcennutzung freigeben.
 
 
In NCacheRead-Through-Anbieter werden auf Cache-Ebene konfiguriert, d. h. bei geclusterten Caches enthalten alle Knoten Anbieterkonfigurationen und ihre bereitgestellten Assemblys.
 
 
Beispielcode für IReadThruProvider
 
// Enthält Methoden zum Lesen eines Objekts anhand seines Schlüssels aus der Stammdatenquelle.
// Enthält Methoden zum Lesen eines Objekts anhand seines Schlüssels aus der Stammdatenquelle.
Öffentliche Klasse SampleReadThruProvider : IReadThruProvider
{
privat SQL-VerbindungConnect _Verbindung;
//Aufgaben wie die Zuweisung von Ressourcen oder den Erwerb von Verbindungen ausführen
 
öffentliche Leere Drin(IWörterbuch Parameter, Schnur CacheId)
{
Objekt connStringObject = Parameter[„connstring“];
Schnur connString = connStringObject == null ? "" : connStringObject.ToString();
if (connString != "")
            _connection = neu SQL-VerbindungConnect(connString);
versuchen
{
  _connection.Open();
}
Fang (Exception Ex)
{
//Ausnahme behandeln
}
}
 
//Verantwortlich für das Laden eines Elements aus der externen Datenquelle.
öffentliche Leere LoadFromSource(Schnur Schlüssel, ProviderCacheItem CacheItem)
{
//wobei LoadFromDataSource die Dummy-Methode zum Laden von Daten aus der Datenquelle ist.
Objekt value = LoadFromDataSource(key);
        CacheItem = neu ProviderCacheItem(Wert);
        CacheItem.ResyncItemOnExpiration = was immer dies auch sein sollte.;
}
 
//Führen Sie Aufgaben aus, die mit dem Freigeben, Freigeben oder Zurücksetzen von Ressourcen verbunden sind.
öffentliche Leere Entsorgen()
{
if (_Verbindung != null)
            _connection.Close();
}
 
//Verantwortlich für das Laden großer Mengen an Elementen aus der externen Datenquelle.
Öffentlichkeit Wörterbuch<Schnur, ProviderCacheItem>LoadFromSource(Schnur[] Schlüssel)
{
  versuchen
  {
Wörterbuch<Schnur, ProviderCacheItem> Wörterbuch = neu Wörterbuch<Schnur, ProviderCacheItem>();
Schnur Schlüssel = null;
für (int Index = 0; Index
      {
          Schlüssel = Schlüssel[Index];
//wobei LoadFromDataSource die Dummy-Methode zum Laden von Daten aus der Datenquelle ist.
          dictionary.Add(key, neu ProviderCacheItem(LoadFromDataSource(key)));
      }
Rückkehr Wörterbuch;
  }
        Fang (Exception exp)
  {
Werfen;
  }
}
privates Objekt LoadFromDataSource(Schnur Schlüssel)
{
Objekt RetrievedObject = null;
// Element aus Ihrer Datenquelle laden und abgerufenes Objekt füllen
Rückkehr RetrievedObject;
}
}
 
Nach der Implementierung und Bereitstellung dieses Anbieters können direkte Anrufe getätigt werden NCache um die benötigten Artikel zu erhalten. Wenn der Artikel nicht lokal im Cache-Speicher verfügbar ist, NCache verwendet die Methode „LoadFromSource“ in der angegebenen Datenzugriffsklasse, um Elemente aus der Datenquelle zu laden.
 
Verwenden von Read-Through mit grundlegenden Vorgängen
 
In diesem Abschnitt wird die Verwendung des Durchleseanbieters nach der Konfiguration und Bereitstellung erläutert. NCache unterstützt mehrere Read-Through-Anbieter mit einer Anwendung.
 
Fügen Sie der Anwendung die folgenden Namespaces hinzu:
 
Verwendung von Alachisoft.NCache.Web.Caching;
Verwendung von Alachisoft.NCache.Runtime.DatasourceProviders;
Verwendung von Alachisoft.NCache.Laufzeit;
 
NCache bietet Alachisoft.NCache.Web.Caching.DSReadOption-Enumeration zur Angabe der Durchleseoption in APIs.
Es können mehrere Durchleseanbieter konfiguriert werden NCache. Der Standard-Durchleseanbieter wird aufgerufen, wenn der Name eines bestimmten Anbieters nicht über die API erwähnt wird. Sie können auch andere Anbieter als die Standardanbieter verwenden, indem Sie anbieterspezifische API-Überladungen verwenden.
 
  • Get-Methode
 
Mitglied
Beschreibung
Erhalten(Schnur Schlüssel, DSReadOption dsReadOption)
Element aus Cache abrufen und Standardanbieter verwenden
Erhalten(Schnur  Schlüssel, Schnur Anbietername, DSReadOption dsReadOption)
Element aus Cache abrufen und angegebenen Anbieter verwenden
 
Produkt Produkt =null;
versuchen
{
Schnur Schlüssel = "Produkt:1001";
Objekt data = cache.Get(key, DSReadOption.ReadThru);
if (Daten != null)
    {
        Produkt = (Produkt)Daten;
    }
}
Fang (OperationFailedException exp)
{
//Ausnahme behandeln }
 
  • Massenmethode
 
Zum besseren Verständnis dieser Vorgänge überprüfen  Massenoperationen. Verwenden Sie in diesem Szenario die folgende API
Mitglied
Beschreibung
IWörterbuch GetBulk(Schnur[] Schlüssel, DSReadOption dsReadOption)
Rufen Sie Massenelemente aus dem Cache ab und verwenden Sie den Standardanbieter
IWörterbuch GetBulk(Schnur[] Schlüssel, Schnur Anbietername, DSReadOption dsReadOption)
Ruft Massenelemente aus dem Cache ab und verwendet den angegebenen Anbieter
 
versuchen
{
Schnur[] Tasten = { "Produkt:1001", "Produkt:1002", "Produkt:1003", "Produkt:1004" };
IWörterbuch resultSet = cache.GetBulk(keys, DSReadOption.ReadThru);
//IDictionary enthält zwischengespeicherte Schlüssel und Werte
}
Fang (OperationFailedException exp)
{
//Ausnahme behandeln
}
 
  • Verwendung des Read-Through-Providers mit CacheItem
 
Verwenden Sie für dieses Szenario die folgende API.
Mitglied
Beschreibung
CacheItem GetCacheItem(Schnur Schlüssel DSReadOption dsReadOption)
Holen Sie sich CacheItem aus dem Cache und verwenden Sie den Standardanbieter
GetCacheItem(Schnur Schlüssel, Schnur Anbietername, DSReadOption dsReadOption)
Holen Sie sich CacheItem aus dem Cache und verwenden Sie den angegebenen Anbieter
 
Schnur Schlüssel = "Produkt:1001";
Produkt Produkt=null;
 
versuchen
{
CacheItem data = cache.GetCacheItem(key, DSReadOption.ReadThru);
if (Daten!= null)
    {
        Produkt = (Produkt)Datenwert;
    }
}
Fang (Exception exp)
{
//Ausnahme behandeln
}
 
Bitte beachten Sie, dass Sie den Standardanbieter über NCManager oder über client.ncconf im Konfigurationsordner von angeben können NCache Installationsverzeichnis. Wenn der Anbietername nicht sowohl in der API als auch in client.ncconf angegeben ist, wird automatisch der Standardanbieter verwendet.
 
<Cache-Speicher id="Mein Cache" Standard-Readthru-Provider="defaultProviderName" Client-Cache-ID="" Client-Cache-Synchronisierungsmodus="optimistisch" Standard-Writethru-Provider="" Lastausgleich="Wahre" Server-Laufzeitkontext="NCACHE">
  ...
</Cache-Speicher>
 
CacheInitParam kann auch zur Angabe von Anbietern verwendet werden.
NCache Protokolliert die Warnungen im Anwendungsereignisprotokoll im Falle einer Ausnahme beim Laden der Assemblys.
 
 
 
Siehe auch