JAK: Implementovat založené na klíčích závislostí pro ukládaní dat do mezipaměti v technologii ASP.NET pomocí Visual C# .NET

Microsoft jazyka Visual Basic .NET verzi tohoto článku naleznete v tématu
312358 .

Tento článek se týká následujících oborů názvů knihovny tříd rozhraní.NET Framework společnosti Microsoft:
  • System.Web.Caching
  • System.Web.SessionState
  • System.Data.SqlClient

V TOMTO ÚKOLU

Souhrn

Tento článek ukazuje, jak implementovat data do mezipaměti pomocí klíče založené na závislosti v aplikaci Microsoft ASP.NET. V příkladu, které jsou uvedeny v tomto článku vytvoří a vloží objekt DataSet do mezipaměti se závislost na jiné položce v mezipaměti položku Nastavit odkazující na jeho klíč. Například data, času nebo souborové závislosti mezipaměti naleznete v části "Odkazy" v tomto článku.

Požadavky

  • Microsoft Windows 2000 nebo Microsoft Windows XP
  • Microsoft Internet Information Server (IIS)
  • Microsoft rozhraní.NET Framework
  • Microsoft SQL Server

Vytvoření webové aplikace technologie ASP.NET

Pomocí aplikace Microsoft Visual C# .NET můžete vytvořit Microsoft ASP.NET webovou aplikaci s názvem DataCacher:
  1. Otevřete Microsoft Visual Studio .NET.
  2. V nabídce soubor přejděte na příkaz Nový a klepněte na příkaz projekt.
  3. V dialogovém okně Nový projekt klepněte na tlačítko Projekty Visual C# v části Typy projektua klepněte na Webovou aplikaci ASP.NET v části šablony.
  4. Do pole umístění zadejte DataCacher jako název projektu a nahradit výchozí WebApplication # název cesty URL. Pokud používáte místní server, můžete ponechat název serveru jako http://localhost, který nastaví umístění na http://localhost/DataCacher.

Vytvořit webový formulář

Poznámka: kód, který je obsažen v této části jsou vysvětleny podrobněji v části "Spuštění kódu".

Vytvoření ukázky ukládání do mezipaměti data:
  1. Přidáte nový webový formulář s názvem projektu v aplikaci Visual Studio .NET DataCacheSample.aspx:
    1. Klepněte pravým tlačítkem myši na uzel projektu v Průzkumníku řešení.
    2. Klepněte na tlačítko Přidata potom klepněte na tlačítko Přidat nový webový formulář.
    3. Název formuláře DataCacheSample.aspx Web.
    4. Klepněte na tlačítko Otevřít.
  2. Na kartě Návrh zobrazení pro webové formuláře v Visual Studio .NET IDE (integrované vývojové prostředí), přidat tlačítko webové formuláře na stránku:
    1. Pomocí operace a přetažení přesunout tlačítko webového formuláře na stránku.
    2. Klepněte na tlačítko Nový. Změnit vlastnost ID na CreateNewOrCacheda potom změňte vlastnost Text k Vytvoření nového nebo v mezipaměti.
  3. Přidáte druhé tlačítko webový formulář:
    1. Pomocí operace a přetažení přesunout jiné tlačítko webový formulář na stránku z panelu nástrojů.
    2. Klepněte na tlačítko Nový. Změnit vlastnost ID Chcete-li Odebrata potom změňte vlastnost Text k Odebrání.
  4. Přidáte popisek webový formulář:
    1. Pomocí operace a přetažení přesunout popisek webový formulář na stránku z panelu nástrojů.
    2. Klepnutím vyberte nový popisek. Změnit vlastnost ID na CacheStatusa potom zrušte vlastnost Text .
  5. Pomocí operace a přetažení přesunout na stránku ovládací prvek webového formuláře ovládací prvek DataGrid z panelu nástrojů. Tento ovládací prvek ponechejte výchozí nastavení DataGrid1 v podokně Vlastnosti nastavte vlastnost ID .

Přidání kódu

Přidejte kód k vložení položky mezipaměti, chcete-li odebrat položky v mezipaměti a vytvořit závislost mezipaměti:
  1. Klepněte pravým tlačítkem myši na stránku ASPX a potom klepněte na tlačítko Zobrazit kód k otevření kódu stránky.
  2. Pro tuto ukázku Ujistěte se, zda System.Data.SqlClient, System.Dataa obory názvů System.Web.Caching jsou přidány do oboru názvů v kódu stránky. Pokud používáte aplikaci Visual Studio. NET vytvořit webový formulář, oboru názvů v kódu stránky bude vypadat podobně jako následující:
    using System;using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.Web.Caching;

    Poznámka: zobrazí upozornění, pokud obor názvů není uveden v seznamu nebo pokud redundantní výpis oboru existuje.
  3. Na kartě Návrh zobrazení poklepejte na tlačítko CreateNewOrCached otevřít událost CreateNewOrCached_Click kódem na pozadí stránky.
  4. Přidejte následující kód k události CreateNewOrCached_Click :
    private void CreateNewOrCached_Click(object sender, System.EventArgs e) {//Attempt to create a DataSet object from the cache entry with the key "CacheDataSetEmployees" 
    object CacheDataSetEmployees = (DataSet)Cache.Get("CacheDataSetEmployees");

    //Check to see if the object is null
    if(CacheDataSetEmployees == null)
    {
    //Set a value for the cache entry that will serve as the
    //key for the dependency to be created on
    Cache["SqlPubsEmployees"] = "SomeValue";

    //Create the array of cache key item names
    string[] keys = new String[1];
    keys[0] = "SqlPubsEmployees";

    DataSet ds = new DataSet();
    //Create the connection and pass in the ConnectionString
    SqlConnection MySqlConn = new SqlConnection("Server=kronicas17;Trusted_Connection=Yes;initial catalog=pubs");
    //Create the Data Adapter and pass in the command text and connection to use
    SqlDataAdapter MySda = new SqlDataAdapter("SELECT TOP 10 * FROM Employee", MySqlConn);
    //Populate the DataTable "Employees" in the DataSet
    MySda.Fill(ds,"Employee");
    //Set the DataGrid's DataSource to the "Employee" DataTable
    DataGrid1.DataSource = ds.Tables["Employee"];

    //Create a dependency object referencing the array of cachekeys (keys)
    CacheDependency MyDependency = new CacheDependency(null, keys);
    //Insert the DataSet into Cache with a dependency on MyDependency
    Cache.Insert("CacheDataSetEmployees", ds, MyDependency);
    MySqlConn.Close();

    //Display the status of the DataSet/Cache Entry
    CacheStatus.Text = "New Version Created";
    }
    else
    {
    //Display the status of the DataSet/Cache Entry
    CacheStatus.Text = "Cached Version Used";
    //Set the DataSource to the cached version of the DataSet
    DataGrid1.DataSource = CacheDataSetEmployees;
    }
    //Bind the DataGrid to the DataSource
    DataGrid1.DataBind();
    }

    Poznámka: je nutné změnit ConnectionString v kódu v tomto kroku pracovat správně s SQL server. Kód správně fungovat musíte mít nainstalován SQL Server Pubs databáze.
  5. Na kartě Návrh zobrazení pro stránku DataCacheSample.aspx poklepejte na tlačítko Odebrat Chcete-li otevřít událost Remove_Click kódem na pozadí stránky.
  6. Přidejte následující kód k události Remove_Click :
    private void Remove_Click(object sender, System.EventArgs e)     {
    //Remove the cache item listed in the cachekeys array (keys)
    Cache.Remove("SqlPubsEmployees"); //Display the status of the cache item
    CacheStatus.Text = "Cache Item Removed";
    }

  7. Přidejte následující prvek v souboru Web.config mezi < system.web > a < /system.web >:
    <identity impersonate=”true” />
  8. V nabídce soubor klepněte na příkaz Uložit vše Uložit webový formulář a jiných souborů projektu přidružené.
  9. V nabídce sestavení v integrovaném vývojovém prostředí Visual Studio .NET klepněte na tlačítko sestavit projekt Sestavit .

Spuštění kódu

  1. Chcete-li spustit kód DataCacheSample.aspx stránku v okně Průzkumník řešení klikněte pravým tlačítkem myši a potom klepněte na tlačítko Zobrazit v prohlížeči.
  2. Klepněte na tlačítko CreateNewOrCached ; Zobrazit popisek CacheStatus "Vytvořena nová verze" a ovládací prvek DataGrid naplněn.

    Poznámky:
    • Nastavení Nové verze vytvořena pro popisek CacheStatus je výsledek klíč mezipaměti CacheDataSetEmployees není dosud odkazování na položku mezipaměti platný při zadávání události. V tomto případě DataSet je vytvořen ovládací prvek DataGrid vázán na objekt DataSeta objekt DataSet je zadán do mezipaměti pomocí klíče mezipaměti "CacheDataSetEmployees".
    • Z předchozího kroku by jste si také všimli vytvoření nové CacheDependency objektu s názvem MyDependency. Objekt MyDependency je uveden jako závislost položky CacheDataSetEmployees při přidání do mezipaměti pomocí metody Vložit . Je důležité si uvědomit, že při tento příklad znázorňuje závislostí založené na klíč, můžete použít jiné typy závislostí kritéria založená na ukládání do mezipaměti, jako například soubory nebo časové razítko, stejně.
  3. Klepněte na tlačítko CreateNewOrCached znovu. Popisek CacheStatus zobrazí "Verze uložená v mezipaměti", které uvádí, že byl použit v mezipaměti objektu DataSet. Můžete ověřit, zda je data v mezipaměti tak, že upravíte některou ze zobrazených záznamů v databázi Pubs pomocí SQL Query Analyzer nebo jiný nástroj. Po úpravě záznamu klepněte na tlačítko CreateNewOrCached znovu. Všimněte si, že provedené změny nejsou zobrazeny. Klepněte na tlačítko Odebrata potom klepněte na tlačítko CreateNewOrCached znovu zobrazíte změny provedené v databázi.
  4. Klepněte na tlačítko Odebrat . Popisek CacheStatus zobrazí "Odebrána položka mezipaměti". Položky v mezipaměti pomocí klíče
    "SqlPubsEmployees" je odebrán pomocí metody Cache.Remove v Remove_Click událostí. Protože matice (který obsahuje název klíče mezipaměti odebrané zboží) s MyDependency uveden, při jeho vytvoření, "CacheDataSetEmployees" položka je odebrána, protože vytvořen pomocí metody Vložit a odkazující MyDependency jako parametr jeho závislost.
  5. Klepněte na tlačítko CreateNewOrCached znovu. Popisek CacheStatus zobrazí zprávu "Vytvořena nová verze", protože DataSet je vytvořen na základě skutečnosti, že již existoval v mezipaměti v případě, že událost byla vyvolána.
  6. Budete také všimnout, že ovládací prvek DataGrid zobrazí jak je naplněn daty i po DataSet položka odebrána z mezipaměti. To je výsledek EnableViewState vlastnost ve výchozím nastavení nastavena na hodnotu True . To umožňuje stav ovládacího prvku k udržovat a to nesouvisí manipulace položka mezipaměti v kódu. Vizuální reprezentace stavu ovládacího prvku v každé fázi nastavíte EnableViewState na hodnotu False.
Poznámka: Pokud jde o tento příklad skutečné situace, pole mezipaměť klíčů (pole klíče v ukázkovém kódu) mohly mít v držení klávesy mezipaměti pro další tabulky nebo jiných mezipaměti položky tak, že kdyby jedné z těchto položek můžete změnit, položka mezipaměti (CacheDataSetEmployees v tomto vzorku) pro položku, která byla vytvořena tato závislost by být odebrány z mezipaměti také. Je mohou pak působit podle potřeby pomocí zpětných volání; Další informace o zpětných volání naleznete v části "Odkazy" v tomto článku.

Poradce při potížích

  • Názvy klíčů, které jsou uvedeny v poli klíče mezipaměti musí být přidruženy mezipaměti aktuální položky. Pokud tomu tak není, zboží, u kterého je použita závislost není správně zachováno v mezipaměti. Příkladem tohoto by byla, pokud pole klíče v ukázkovém kódu uchovávány jiného prvku pole a prvek byla nastavena na název klíče neplatná mezipaměti.
  • Matice mezipaměti klíče nemá konkrétní význam, dokud se objekt CacheDependency .
  • Pokud vložení položky do mezipaměti se žádná závislost nebo jiných vypršení platnosti řídí modul runtime, když je položka odebrána z mezipaměti.

Odkazy

Další informace o použití CacheItemRemovedCallback delegovat, naleznete na následujícím webu společnosti Microsoft:Poznámka: delegát CacheItemRemovedCallback definuje metodu zpětného volání pro oznámení aplikace, pokud položky v mezipaměti je odebrána z mezipaměti.

Další informace o třídě CacheDependency naleznete na následujícím webu společnosti Microsoft:Poznámka: Třída CacheDependency sleduje závislosti mezipaměti, které mohou být soubory, adresáře nebo klíče k jiným objektům v mezipaměti aplikace.

Další informace o možnosti ukládání do mezipaměti, které jsou k dispozici pro technologii ASP.NET naleznete v následující dokumentaci Microsoft rozhraní.NET Framework SDK:Další informace o možnosti ukládání do mezipaměti, které jsou k dispozici pro aplikace ASP.NET klepněte na následující čísla článků znalostní báze Microsoft Knowledge Base:
305140 Přehled technologie ASP.NET
307225 INFO: Přehled mezipaměti technologie ASP.NET
Vlastnosti

ID článku: 308147 - Poslední kontrola: 20. 1. 2017 - Revize: 1

Váš názor