(0) exportieren Drucken
Alle erweitern

Vorgehensweise: Verwenden eines rolleninternen Azure-Caches

Letzte Aktualisierung: August 2013

Mit Caching kann die Leistung von Webanwendungen verbessert werden, da die Notwendigkeit der wiederholten Berechnung derselben Ergebnisse verringert wird. Bei Verwendung von Caching können häufig angeforderte Inhalte und andere Daten einmal berechnet und für die wiederholte Verwendung gespeichert werden.

Befolgen Sie die Anweisungen in diesem Thema, um Unterstützung für Caching zu Windows Azure-Anwendungen hinzuzufügen. Mit dem rolleninternen Cache in Windows Azure können Sie Rollen einrichten, die speziell für das Caching vorgesehen sind, oder ansonsten ungenutzte Ressourcen in einer Rolle für das Caching verwenden. Beispiel: Wenn von der Webserverrolle nur die Hälfte der verfügbaren Ressourcen in jeder Instanz verwendet werden, können Sie mit diesen Ressourcen Ausgaben, Sitzungszustand, oder häufig verwendete Daten zwischenspeichern.

Sie konfigurieren Caching in den CSCFG- und CSDEF-Dateien für die Windows Azure-Anwendung. Am einfachsten erfolgt die Konfiguration durch Anpassen der Einstellungen auf der Eigenschaftenseite Caching für eine Rolle. Fügen Sie Informationen zu den XML-Konfigurationsdateien für diese Rolle hinzu, um einen Cache in einer bestimmten Rolle zu verwenden. In einer ASP.NET-Webrolle ist web.config die richtige Konfigurationsdatei. Für andere Rollen wird die Konfigurationsdatei app.config verwendet. Sie können die Informationen der Konfigurationsdatei manuell oder mithilfe eines NuGet-Pakets hinzufügen. Weitere Informationen zum rolleninternen Cache finden Sie unter Rolleninterner Cache in Windows Azure.

Sie können Caching auf zwei Arten konfigurieren. Sie können Caching zu einem Cloud-Dienst durch Hinzufügen einer Cache-Worker-Rolle hinzufügen, die ausschließlich für Caching verwendet wird, oder Sie können Caching konfigurieren, um Arbeitsspeicher, CPU und Bandbreitenressourcen für eine bereits vorhandene Rolle zu verwenden. Ein dedizierter Cache wird als separate Rolle ausgeführt. Diese Option ist geeignet, wenn die Ressourcen der Instanzen ausschließlich für die Ausführung dieser Instanzen verwendet werden sollen. Ein zusammengestellter Cache wird in derselben Instanz wie eine weitere Rolle ausgeführt. Diese Option ist geeignet, wenn Rolleninstanzen vorliegen, von denen die Ressourcen des Computers auf denen sie ausgeführt werden, nicht vollständig genutzt werden.

Dieses Thema enthält folgende Abschnitte:

Hinzufügen von Caching zu einem Cloud-Dienst

Sie können Caching einer vorhandenen Rolle hinzufügen oder eine Cache-Workerrolle erstellen, die Sie aus anderen Rollen verwenden können.

So fügen Sie einem Cloud-Dienst eine dedizierte Cache-Workerrolle hinzu

  1. Öffnen Sie das Kontextmenü für das Windows Azure-Projekt, und wählen Sie dann Neues Workerrollenprojekt aus.

  2. Wählen Sie in der Liste der Projektvorlagen die Vorlage Cache-Workerrolle aus, und geben Sie einen Namen für das Projekt an, z. B. CacheWorkerRole1.

    Ein Workerrollen-Projekt wird erstellt.

  3. Erweitern Sie unter dem Projekt Windows Azure den Knoten Rollen, öffnen Sie das Kontextmenü für die zuvor erstellte Cache-Workerrolle, und wählen Sie dann Eigenschaften aus.

    Der Rollen-Designer für dieses Projekt wird angezeigt.

  4. Auf der Registerkarte Konfiguration legen Sie die entsprechende Größe des virtuellen Computers und die Anzahl der Instanzen für diese Rolle fest.

  5. Wählen Sie auf der Registerkarte Cachedienst unter Cacheclustereinstellungen die Option Dedizierter Cache aus.

  6. Konfigurieren Sie das Verhalten für den Standardcache, oder erstellen Sie benannte Caches mit benutzerdefinierten Eigenschaften.

    Jeder benannte Cache weist einen eigenen Satz konfigurierbarer Eigenschaften auf. Zeigen Sie auf die Tabellenüberschriften zum Anzeigen von Informationen zur Konfiguration benannter Caches. Weitere Informationen finden Sie unter Vorgehensweise: Konfigurieren eines rolleninternen Azure-Caches.

So fügen Sie Caching einer vorhandenen Rolle hinzu

  1. Erweitern Sie im Windows Azure-Projekt den Knoten Rollen, öffnen Sie das Kontextmenü für die Rolle, der Sie Caching hinzufügen möchten, und wählen Sie dann Eigenschaften aus.

  2. Aktivieren Sie auf der Registerkarte "Cachedienst" das Kontrollkästchen Cachedienste aktivieren.

  3. Wählen Sie die Option Zusammengestellt aus, und wählen Sie dann einen Prozentsatz der Speicherressourcen zur Reservierung für den Cache des virtuellen Computers aus, der die Rolle hostet. Diese Zahl sollte im Allgemeinen im Bereich zwischen 30 und 55 Prozent für einen virtuellen Computer der Größe Klein und bei bis zu 80 Prozent für einen virtuellen Computer der Größe Sehr groß liegen. Sie können diese Zahl optimieren, indem Sie sich mithilfe von Remotedesktop auf dem virtuellen Computer anmelden, wenn der Cloud-Dienst bei normaler Auslastung ausgeführt wird, und dann mit dem Task Manager den Prozentsatz des physikalischen Speichers anzeigen. Sie können den verbleibenden Speicher für einen zusammengestellten Cache verwenden.

  4. Konfigurieren Sie das Verhalten für den Standardcache, oder erstellen Sie benannte Caches mit benutzerdefinierten Eigenschaften.

Verwenden des Caches in einer Rolle

Sie können Ihrem Projekt wie in diesem Abschnitt beschrieben manuell Zwischenspeicherverweise hinzufügen, oder Sie können NuGet verwenden. Dies wird weiter unten im Thema unter Verwenden von NuGet, um einer Rolle Caching hinzuzufügen beschrieben. Durch manuelles Hinzufügen der Verweise wird ersichtlich, wo die Assemblys auf der Festplatte gespeichert sind. Dies ist allerdings umständlicher.

So verwenden Sie einen Cache in einer Webrolle

  1. Klicken Sie im Kontextmenü für den Knoten Verweise unter dem Projekt mit der Rolle, in der Sie einen Cache verwenden möchten, auf Verweis hinzufügen.

  2. Aktivieren Sie im Dialogfeld Verweis hinzufügen die entsprechenden Kontrollkästchen, um Verweise auf die folgenden Assemblys hinzufügen, und klicken Sie anschließend auf die Schaltfläche OK:

    • Microsoft.ApplicationServer.Caching.AzureClientHelper

    • Microsoft.ApplicationServer.Caching.Client

    • Microsoft.ApplicationServer.Caching.Core

    • Microsoft.Web.DistributedCache

  3. Öffnen Sie im Projekt mit der Rolle, der Sie Zwischenspeicherung hinzufügen möchten, die Datei "web.config" für ein Webrollenprojekt, oder öffnen Sie die Datei "app.config" für andere Projekttypen.

  4. Ist der configSections-Abschnitt nicht vorhanden, fügen Sie ihn hinzu. Fügen Sie diesem Abschnitt eine Deklaration des Caching-Abschnitts hinzu, wie im folgenden Code gezeigt.

    <configSections>     <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere"/>   </configSections> 
    
  5. Fügen Sie XML zur Bestimmung des zu verwendenden benannten Cache hinzu.

    <dataCacheClients>     <tracing sinkType="DiagnosticSink" traceLevel="Verbose"/>     <dataCacheClient name="default">       <autoDiscover isEnabled="true" identifier="WebRole1"/>     </dataCacheClient>   </dataCacheClients> 
    

    Wenn Sie nur einen Cache deklarieren, kann der Name default lauten, wie im vorherige Beispiel dargestellt. Wenn Sie mehrere Caches deklarieren, fügen Sie einen separaten dataCacheClient-Abschnitt für jeden Cache hinzu, und geben Sie jedem Cache einen eindeutigen Namen. Der Cache mit dem Namen "default" wird zurückgegeben, wenn Sie im Code die GetDefaultCache-Methode für das DataCacheFactory-Objekt aufrufen. Das identifier-Attribut gibt entweder den Namen des Webrollenprojekts, dem Caching-Unterstützung hinzugefügt wurde, oder eine Cache-Workerrolle an.

    Nachdem ein verteilter Cache in dieser Rolle konfiguriert wurde, können Sie aus Code durch Erstellen eines DataCacheFactory- und eines DataCache-Objekts darauf zugreifen.

  6. Fügen Sie in einer Code-Behind-Datei der Page-Klasse Deklarationen hinzu, und fügen Sie einen Zufallszahlengenerator hinzu, sodass einige Daten zum Testen des Cache vorhanden sind.

            static DataCacheFactory myFactory;         static DataCache myCache;         static Random randomizer = new Random(); 
    
  7. Zur Erstellung einer Webanwendung, die den Cache verwendet, ersetzen Sie den Code der Webseite "Default.aspx" mit dem folgenden Code.

    <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"     CodeBehind="Default.aspx.cs" Inherits="WebRole1._Default" %>  <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> </asp:Content> <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">        <p style="font-size:large; height: 283px;">         <asp:Label ID="Label0" runat="server" Text="Text for the cache:   " />         <asp:TextBox runat="server" ID="TextBox1" Width="125" /> <br /> <br />          <asp:Button runat="server" onclick="OnPutInCache" Text="Put in Cache" id="AddCachedItemsButton" /> &nbsp;&nbsp;&nbsp;         <asp:Button runat="server" onclick="OnGetFromCache" Text="Get from Cache" id="GetCachedItemsButton" /> &nbsp;&nbsp;&nbsp;         <asp:Label ID="Label1" runat="server" Width="500" />          <br /> <br />  <br />               Cached Datestamp: <%= DateTime.Now.ToString() %><br />         Fresh Datestamp: <asp:Substitution runat="server" methodname="GetFreshDateTime" id="UnCachedArea" /><br /><br />     </p>  </asp:Content>  
    
  8. Fügen Sie Code zum Initialisieren des Cache hinzu.

            protected void Page_Load(object sender, EventArgs e)         {             try             {                 //Get a named cache (or default cache)                 if (myCache == null)                 {                     // You should initialize the data cache factory                     // once and keep reusing the same object.                     myFactory = new DataCacheFactory();                     myCache = myFactory.GetDefaultCache();                     // If you want to get a handle to a named cache                     // that is not the default cache, supply the                     // cache's name from the configuration file:                     // myCache = myFactory.GetCache("anotherNamedCache");                 }             }             catch (DataCacheException dce)             {                 Label1.Text = dce.ToString();             }         } 
    

    Dieser Initialisierungscode muss vor der Verwendung des Cache aufgerufen werden. Beispielsweise können Sie diesen Code dem Page_Load-Ereignishandler hinzufügen. Andernfalls wird ein Handle für den Cache mithilfe der Cache-Factory-Methode "GetDefaultCache()" erstellt. Wenn kein Cachename angegeben ist, wird der Cache mit dem Namen default verwendet. Die DataCacheException-Ausnahme kann ausgelöst werden, sobald Sie mit Cache-Methoden arbeiten. Vom vorherigen Code wird diese Ausnahme abgefangen und dem Benutzer in einem Label-Steuerelement angezeigt.

  9. Fügen Sie Code hinzu, um den Cache zu verwenden.

            /// <summary>         /// Adds the value of the TextBox to the cache         /// </summary>         protected void OnPutInCache(object sender, EventArgs e)         {             try             {                 myCache.Put("MyKey", TextBox1.Text);                 Label1.Text = " \" " + TextBox1.Text + "\" has been added to the cache.";             }             catch (DataCacheException dce)             {                 Label1.Text = dce.ToString();             }         } 
    

    Im vorherige Beispiel wird ein einfaches Webformular mit einem Textfeld und einer Schaltfläche vorausgesetzt, Sie können jedoch den gleichen Code zum Zwischenspeichern beliebiger Daten verwenden. Wie im Beispiel dargestellt, verwenden Sie die Put-Methode, um dem Cache Daten hinzuzufügen. Der Cache funktioniert wie ein Wörterbuch. Das erste Argument ist der Schlüssel. Das zweite Argument sind die Daten, die Sie zwischenspeichern möchten.

  10. Rufen Sie Daten aus dem Cache durch Aufrufen der Get-Methode und Angeben des Schlüssels ab.

            /// <summary>         /// Gets the cached item (that was added from the TextBox)         /// </summary>         protected void OnGetFromCache(object sender, EventArgs e)         {             try             {                 string outputFromCache = myCache.Get("MyKey") as string;                 Label1.Text = "\"" + outputFromCache + "\" has been retrieved from the cache.";             }             catch (DataCacheException dce)             {                 Label1.Text = dce.ToString();             }         } 
    

Konfigurieren des Ausgabecaches für eine ASP.NET-Anwendung

Mit Ausgabecaching wird die Leistung einer Website durch Verringerung der Notwendigkeit zur erneuten Erstellung von Daten optimiert, die bereits abgerufen wurden. Durch Bearbeiten der Konfigurationsdatei für die Anwendung können Sie den verteilten Cache verwenden, um ohne Änderung des Programm-Codes Ausgabe für eine ASP.NET-Anwendung zwischenzuspeichern.

So speichern Sie Ausgabe in einer ASP.NET-Anwendung zwischen

  1. Öffnen Sie die Datei "web.config" für die ASP.NET-Anwendung, für die Sie die Ausgabe-Caching konfigurieren möchten.

  2. Fügen Sie die folgenden Zeilen hinzu, um Ausgabe-Caching für die Verwendung des verteilten Cache zu konfigurieren.

        <caching>       <outputCache defaultProvider="defaultProvider" >         <providers>           <add cacheName="default"                name="defaultProvider"                dataCacheClientName="nameOfDataCacheClient"                applicationName="<unique-appId>"                type= "Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache" />         </providers>       </outputCache>     </caching> 
    

    Geben Sie für "cacheName" den Namen des entsprechenden benannten Cache an, der vom angegebenen dataCacheClient-Element gehostet wird. Vom dataCacheClient-Attribut wird die Rolle angegeben, die den Cache hostet.

  3. Fügen Sie die OutputCache-Direktive den Seiten hinzu, deren Ausgabe zwischengespeichert werden soll.

    <%@ OutputCache Duration="60" VaryByParam="*" %>
    

    "Duration" entspricht der Zeitspanne in Sekunden, für die Daten im Cache verbleiben sollen. Vom VaryByParam-Element wird angegeben, dass für jede Parameterkombination eine andere Version der Seite zwischengespeichert werden soll. Das Sternchen (*) in diesem Zusammenhang entspricht einer Variablen. Sie können Parameter auch nach Name angeben. Eine vollständige Beschreibung der verfügbaren Optionen finden Sie unter OutputCache-Direktive

    Sie haben den Ausgabe-Cache konfiguriert.

Caching des Sitzungszustands

Dieser Abschnitt veranschaulicht das Zwischenspeichern von Sitzungszustandsinformationen für eine ASP.NET-Webanwendung ohne das Ändern von Code.

So werden Informationen zum Sitzungszustand zwischengespeichert

  1. Öffnen Sie die Datei "web.config" für die ASP.NET-Webanwendung, für die Sie die Zwischenspeicherung des Sitzungszustands konfigurieren möchten.

  2. Fügen Sie die folgenden Zeilen hinzu, und geben Sie den Namen des zu verwendenden Caches (in diesem Fall "default"), des Anbieters und des dataCacheClient-Elements sowie die AppId der Anwendung an.

        <!--Set up custom session state provider -->     <sessionState mode="Custom" customProvider="defaultProvider">       <providers>         <add cacheName="default"              name="defaultProvider"              dataCacheClientName="nameOfDataCacheClient"              applicationName="<unique-appId>"              type= "Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"/>       </providers>     </sessionState> 
    

Verwenden mehrerer benannter Caches

Sie können mehrere benannte Caches für unterschiedliche Zwecke erstellen und konfigurieren. Beispielsweise können Sie einen Cache für Ausgaben und einen programmgesteuerten Cache für Daten verwenden.

So verwenden Sie mehrere benannte Caches

  1. Öffnen Sie im Rollen-Designer die Registerkarte Cachedienst für eine Rolle.

  2. Fügen Sie unter Benannte Caches einen benannten Cache für die Ausgabe und einen weiteren für Informationen zum Sitzungszustand hinzu.

  3. In der Tabelle Benannte Caches werden die Eigenschaften für die benannten Caches angezeigt.

    Beispielsweise können Sie die Entfernungsrichtlinie für den Ausgabecache auf TTL und für den Sitzungszustandscache auf Keine festlegen.

  4. Öffnen Sie die Datei "web.config", und ändern Sie die Attribute "cacheName" in den Abschnitten "outputCache" und "sessionState" auf die neuen Werte.

Verwenden von NuGet, um einer Rolle Caching hinzuzufügen

Sie können einer vorhandenen Rolle Caching am einfachsten mit dem Paket-Manager NuGet hinzufügen. Wenn Windows Azure Tools installiert sind, können mit NuGet die entsprechenden Verweise hinzugefügt und alle erforderlichen Änderungen an den Konfigurationsdateien vorgenommen werden.

So fügen Sie einen rolleninternen Cache mithilfe von NuGet hinzu

  1. Installieren Sie die aktuelle Version von NuGet.

    Weitere Informationen und Installationsanweisungen finden Sie unter NuGet.

  2. Öffnen Sie im Projektmappen-Explorer das Kontextmenü für den Projektknoten mit der Rolle, der Sie die Zwischenspeicherung hinzufügen möchten, und wählen Sie dann NuGet-Pakete verwalten aus.

    Das Dialogfeld NuGet-Pakete verwalten wird angezeigt.

  3. Wählen Sie im Onlinekatalog Rolleninterner Cache in Windows Azure aus, und klicken Sie dann auf die Schaltfläche Installieren.

    Das Projekt wird geändert, es werden Verweise auf Cache-Assemblys hinzugefügt, und die Konfigurationsdateien werden zur Konfiguration von Cache aktualisiert.

  4. Suchen Sie in der Konfigurationsdatei für das Projekt, das dataCacheClient-Element, das ein untergeordnetes autoDiscover-Element aufweist.

  5. Ändern Sie in diesem untergeordneten Element den Wert des identifier-Attributs in den Namen der Rolle, die den Cache bereitstellt.

        <dataCacheClient name="default">       <autoDiscover isEnabled="true" identifier="CacheWorkerRole1"/>     </dataCacheClient> 
    
  6. Andern Sie den Code, wie zuvor in diesem Thema beschrieben.

    Bearbeiten Sie die Konfigurationsdatei für die entsprechende Rolle, und nehmen Sie die anderen Änderungen vor, die zuvor in diesem Thema beschrieben wurden, um einen Ausgabecache oder einen Sitzungszustandscache zu aktivieren. Zur Verwendung eines programmgesteuerten Cache fügen Sie den Code-Behind-Dateien den entsprechenden Code hinzu, um einen Cache zu erstellen und Daten hinzuzufügen und abzurufen.

  7. (optional) Öffnen Sie das Kontextmenü für den Projektmappenknoten, und wählen Sie NuGet-Pakete verwalten aus, um NuGet-Pakete für eine komplette Projektmappe zu verwalten und mehreren Projekten gleichzeitig eine Unterstützung für die Zwischenspeicherung hinzuzufügen.

Siehe auch

Community-Beiträge

Anzeigen:
© 2014 Microsoft