Cache con dipendenza su file con ASP.NET

di , in ASP.NET, Cache, C#,

Continua l'analisi della classe Cache di ASP.NET, questa volta con un esempio relativo alla File Dependency.
E' possibile infatti definire una chiave con dati all'interno che dipenda dalla modifica di un file per invalidarne il contenuto.
Questo approccio è particolarmente utile quando vogliamo caricare un file XML in un DataTable, ma allo stesso tempo vogliamo che il contenuto sia sempre aggiornato.
In particolare, attraverso la classe FileSystemWatcher, ASP.NET è in grado di intercettare le notifiche che il sistema operativo invia quando un file viene modificato e di conseguenza invalidare il contenuto della chiave che definisce l'oggetto in Cache.

using System;
using System.Web;
using System.Data;

namespace ASPItalia.com
{

  public class DataStore
  {
    // funzione per recuperare un DataTable caricato da un file Xml
    public static DataTable GetXmlDoc()
    {
      if (HttpContext.Current.Cache["Xml"] == null) {
        string Path = HttpContext.Current.Server.MapPath("/store/doc.xml");

        // leggo il file XML attraverso il DataSet
        DataSet ds = new DataSet();
        ds.ReadXml(Path);
        // restituisce la DataTable
        DataTable dt = ds.Tables["item"];

        // inserimento nella Cache con dipendenza
        HttpContext.Current.Cache.Insert("Xml", dt, new CacheDependency(Path) );
      }
      return (DataTable)HttpContext.Current.Cache["Xml"];
    }
  }
}

Approfondimenti


#349 - Estrarre il contenuto di un file XML con ASP.NET
https://www.aspitalia.com/liste/usag/script.aspx?ID=349

Esempi di utilizzo della classe Cache con ASP.NET
https://www.aspitalia.com/ricerca/super.aspx?usag=1&articoli=1&key=ASP.NET+cache

Commenti

Visualizza/aggiungi commenti

Cache con dipendenza su file con ASP.NET (#581) 810 37
| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi