NCache Open Source als Nhibernate Second Level Cache

NHibernate ist eine beliebte objektrelationale Mapping-Lösung (ORM) für.NET. Außerdem wird es häufig in Umgebungen mit hohem Transaktionsaufkommen eingesetzt, in denen Anwendungen aufgrund von Datenbank- und Datenspeicherung mit Leistungs- und Skalierbarkeitsengpässen konfrontiert sind.

Um dies zu bewältigen, bietet NHibernate zwei Arten von Caching: First Level Cache (1st Level Cache) und Second Level Cache (2nd Level Cache). Der Cache der ersten Ebene ist integriert und an das „Sitzungsobjekt“ des Benutzers gebunden, während der Cache der zweiten Ebene eine steckbare Architektur bietet und an die Ebene des „Sitzungsfaktors“ (d. h. an die Anwendungsebene) gebunden ist. Dies bedeutet, dass der Cache nicht durch kommende und gehende Benutzersitzungen beeinträchtigt wird. Sie können einen Drittanbieter-Cache als NHibernate Second Level Cache anschließen.

NCache ist ein extrem schneller und linear skalierbarer verteilter Cache für .NET-Anwendungen. NCache Ermöglicht das Hinzufügen weiterer Cache-Server zur Bewältigung größerer Transaktionslasten. Sie können einstecken NCache als NHibernate Second Level Cache.

Einrichten NCache als NHibernate Second Level Cache

Als Teil der NHibernate Second Level Cache-Anbieterarchitektur NCache hat implementiert ICacheProvider und ICacheinterfaces. Als Ergebnis können Sie konfigurieren NCache als NHibernate Second Level Cache ohne jegliche Programmierung und einfach durch Änderungen der Konfigurationsdatei.

Sie ändern einfach Ihre app.config und angeben NCache als Ihr Second-Level-Cache-Anbieter und fügen Sie eine Eigenschaft dafür hinzu. Sie aktivieren auch das Caching der zweiten Ebene und andere Untercaches von NHibernate in app.config. Hier ist ein Beispiel dafür app.config Änderungen:

<hibernate-configurationxmlns="urn:nhibernate-configuration-2.2">
...
  <session-factory>
  ...
    <property name="cache.provider_class">
      Alachisoft.NCache.Integrations.NHibernate.Cache.NCacheProvider,
      Alachisoft.NCache.Integrations.NHibernate.Cache
    </property>
    <property name="cache.use_second_level_cache">
      true
    </property>
  ...
  </session-factory>
</hibernate-configuration>
  
<appSettings>
  <add key="ncache.application_id" 
       value="myapp" />
</appSettings>

Cachefähige Regionen konfigurieren

NCache Ermöglicht die unterschiedliche Konfiguration jeder NHibernate-Region mit eigenen Eigenschaften zum Zwischenspeichern von Objekten. Für diesen Zweck NCache hat eine Konfigurationsdatei namens NCacheNHibernate.xml, das alle vom NHibernate Second Level Cache verwendeten Regionskonfigurationen enthält. Im Folgenden finden Sie ein Beispiel dieser Konfigurationsdatei:

<configuration>
  <application-config application-id="myapp"
                      enable-cache-exception="true"
                      default-region-name="default"
                      key-case-sensitivity="false">
    <cache-regions>
      <region name="default"
              cache-name="mycache"
              priority="default"
              expiration-type="none"
              expiration-period="0" />
      <region name="AbsoluteExpirationRegion"
              cache-name="myRegioncache"
              priority="Default"
              expiration-type="sliding"
              expiration-period="180" />
    </cache-regions>
    ...
  </application-config>
</configuration>

Konfigurieren Sie die Datenbanksynchronisierung

NCache ist ein leistungsstarker verteilter Cache für .NET und bietet viele umfangreiche Funktionen. Eine dieser Funktionen ist die Datenbanksynchronisierung, bei der der Cache Datenbankänderungen verfolgt und ein zwischengespeichertes Element entweder ungültig macht oder es neu lädt, wenn sich die entsprechenden Daten in der Datenbank ändern.

Sie können den NHibernate Second Level Cache-Anbieter für konfigurieren NCache um die Datenbanksynchronisierung zu verwenden. Einfach modifizieren NCacheNHibernate.xml Konfigurationsdatei wie folgt:

<configuration>
  <application-config application-id="myapp" 
                      enable-cache-exception="true" 
                      default-region-name="default"
                      key-case-sensitivity="false">
    ...
    <database-dependencies>
      <dependency entity-name="nhibernator.BLL.Customer" 
                  type="sql" 
                  sql-statement="SELECT ContactName FROM dbo.Customers
                                 WHERE CustomerID =?" 
                  cache-key-format="depdency.customer:[pk]"/>
    </database-dependencies>
  </application-config>
</configuration>

Konfigurieren Sie den NHibernate-Abfrage-Cache

NHibernate bietet eine Funktion zum Abfrage-Caching, bei der die Ergebnisse von Abfragen im Second-Level-Cache zwischengespeichert werden. Sie können den NHibernate Query Cache in aktivieren app.config Konfigurationsdateien wie folgt:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  ...
  <session-factory>
  ...
    <property name="cache.use_query_cache">
    true
    </property>
    ...
  </session-factory>
</hibernate-configuration>

Die Abfrage wird zusammen mit den Primärschlüsseln der Ergebnismengen in einem Standardabfragebereich mit dem Namen gespeichert NHibernate.Cache.StandardQueryCache. Die als Ergebnis der Abfrage abgerufenen Objekte werden jedoch in ihren jeweiligen Regionen zwischengespeichert. Darüber hinaus wird durch die Aktivierung des Abfrage-Cache nicht jede Abfrage standardmäßig zwischengespeichert. Stattdessen müssen Sie jede Abfrage im Code wie folgt als zwischenspeicherbar festlegen:

IQuery qry = session.CreateQuery("from Customer c").SetCacheable(true);

Vorteile NCache als NHibernate Second Level Cache

Wenn Ihre NHibernate-Anwendung in einer Umgebung mit mehreren Servern ausgeführt wird, benötigen Sie einen verteilten Cache wie z NCache als NHibernate-Cache-Anbieter der zweiten Ebene aus folgenden Gründen:

  • Lineare Skalierbarkeit: Sie können Ihre Anwendung linear skalieren, indem Sie bei steigender Transaktionslast weitere Cache-Server hinzufügen. Dies erhöht sowohl Ihre Transaktionskapazität als auch Ihre Speicherkapazität.
  • Wirklich elastischer Cache: NCache ist ein wirklich elastischer Cache mit einer Peer-to-Peer-Cache-Clustering-Architektur und umfangreichen Caching-Topologien wie gespiegeltem, repliziertem, partitioniertem und Partition-Replica-Cache. Dadurch können Sie eine 100-prozentige Verfügbarkeit und keinen Datenverlust gewährleisten. Das alles erhalten Sie automatisch bei der Nutzung NCache mit NHibernate.
  • Datenbanksynchronisierung: Sie können den Cache mit der Datenbank (SQL Server, Oracle und OLEDB) synchronisieren. Wenn sich also Daten in der Datenbank ändern, macht der Cache die entsprechenden zwischengespeicherten Elemente entweder ungültig oder lädt sie neu. Dadurch wird sichergestellt, dass Ihr Cache immer aktuell ist. Sie können diese Funktion mit NHibernate aktivieren, wie oben gezeigt.
  • Asynchrone Operationen: NCache verfügt über asynchrone Vorgänge, bei denen Ihre Anwendung nicht einmal auf die Aktualisierung des Caches warten muss. Sie können dies mit NHibernate aktivieren.
  • Kompakte Serialisierung: NCache verfügt über eine eigene Serialisierung, die viel schneller ist als die reguläre .NET-Serialisierung. Sie können dies ohne Codeänderungen aktivieren. NCache Generiert tatsächlich Serialisierungscode zum Zeitpunkt der Initialisierung, kompiliert ihn im Speicher und verwendet ihn für Serialisierungs-/Deserialisierungsvorgänge. Sie können dies mit der regulären .NET-Serialisierung kombinieren.

Was macht man als nächstes?

© Copyright Alachisoft 2002 - Alle Rechte vorbehalten NCache ist eine eingetragene Marke der Diyatech Corp.