Merhaba Arkadaslar

        Bugunku makalemizde data caching konusunu ele alıcagız. Ornek uygulamamızda person.contact ve humanresources.employee tablolarına inner join işlemi gerceklestiricez ve gelen kayıtlar üzerinde data caching işlemi gercekleştiricegiz ...

Makalemizi OOP çerçevesinde yazıcagız .

Dal.cs
-------

using System;

using System.Data;

using System.Configuration;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

using System.Data.SqlClient;

 

 

public class Dal

{

    SqlConnection con;

    SqlCommand cmd;

      public Dal()

      {

        con = new SqlConnection(ConfigurationManager.ConnectionStrings["baglan"].ConnectionString);

      }

 

    public void BaglantiSihirbazi()

    {

        if (con.State == ConnectionState.Closed)

            con.Open();

        else

            con.Close();

    }

 

    public SqlDataReader PersonellerimiAl()

    {

        cmd = new SqlCommand("Select top 10 pc.contactid,pc.Firstname,pc.Lastname,Pc.emailaddress,he.gender,he.MaritalStatus from person.contact pc inner join humanresources.employee he on pc.contactid = he.contactid", con);

        BaglantiSihirbazi();

        return cmd.ExecuteReader();

 

    }

 

DataYonetim.cs
---------------------

using System;

using System.Data;

using System.Configuration;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

using System.Data.SqlClient;

 

 

public class DataYonetim

{

    Dal databaseislemlerim;

    SqlDataReader okuyucu;

      public DataYonetim()

      {

        databaseislemlerim = new Dal();

      }

 

    public DataTable PersonelTablosu()

    {

        DataTable Personellerim = new DataTable("Personellerim");

        Personellerim.Columns.AddRange(new DataColumn[]

        {

            new DataColumn("Personelid",typeof(int)),

            new DataColumn("PersonelAdi",typeof(string)),

            new DataColumn("PersonelSoyad",typeof(string)),

            new DataColumn("PersonelEmailAdres", typeof(string)),

            new DataColumn("Personelcinsiyet",typeof(string)),

            new DataColumn("PersonelMedeniDurum",typeof(string))

        });

        okuyucu = databaseislemlerim.PersonellerimiAl();

        while (okuyucu.Read())

        {

            Personellerim.Rows.Add(okuyucu.GetInt32(0), okuyucu.GetString(1), okuyucu.GetString(2), okuyucu.GetString(3), (okuyucu.GetString(4) == "M") ? "Bay" : "Bayan", (okuyucu.GetString(5) == "M") ? "Ewli" : "Bekar");

        }

        okuyucu.Close();

        databaseislemlerim.BaglantiSihirbazi();

        return Personellerim;

 

    }

}

 

Default.aspx
--------------------

 

Default.aspx.cs
------------------------

using System;

using System.Configuration;

using System.Data;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

using System.Web.Caching;

 

public partial class _Default : System.Web.UI.Page

{

    DataYonetim Yonetim;

    DataTable Personel;

    public void CachingIslemlerim()

    {

        // Cache nesnemizin null olup olmadıgına bakalım ...

        if (Cache["Datam"] == null)

        {

            // Cache nesnemiz null ise Yonetim sınıfımız içerisindeki PersonelTablosu() metotumuzdan bize geri donen datatable ı class seviyesinde olusturdugumuz Datatable nesnemizin içerisine verelim ...

            Personel = Yonetim.PersonelTablosu();

            // Cache nesnemiz içerisine bir adet key ekleyelim ve adına Datam adını verelim . Personel datatable ımızı verdikden sonra CacheDependency nesnemizi isteyecek su an CacheDependency nesnemizi kullanmadıgımız icin null olarak gecelim Cache içerisindeki verimiz ne kadar kalıcak onu ayarlayalım biz mevcut olan zamandan 20 sn kadar bellekde kalmasını istedik .

 

            // Cache.NoSlidingExpiration : Belirttigimiz sure içerisinde cache nesnemizden okur belirtilen sure gectikden sonra cache içerisini yeniden doldurma işlemini gerceklestirir ...

 

            // I.Yol

            Cache.Insert("Datam", Personel, null, DateTime.Now.AddSeconds(20), Cache.NoSlidingExpiration);

            lbl_bilgi.Text = "Veri Cache e atıldı ... ";

 

            // II.Yol

            //Cache.Insert("Datam", Personel, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(20));

            //lbl_bilgi.Text = "Veri Cache e atıldı ";

 

            //Cache.NoAbsoluteExpiration : Veri cache ortamına atıldıkdan sonra 20 sn içerisinde herhangi bir istek gelir ise sure saymaya 0 dan yeniden baslar eger 20 sn içerisinde hic istek gelmez ise cache nesnemizin içerisi bosaltılır ve yeniden dolma işlemi gerceklesir ...

        }

        else

        {

            // Eger cache nesnemiz boş degil ise bunu datatable a cast edelim ve personel adını verdigimiz datatable uzerine alalım ...

            Personel = (DataTable)Cache["Datam"];

            lbl_bilgi.Text = "Veri Cache içerisinden okundu";

        }

        // datagridview nesnemizin datasource una datatable nesnemizi verelim .

        dgw_personeller.DataSource = Personel;

        // datamızı bind edelim ...

        dgw_personeller.DataBind();

 

    }

 

    protected void Page_Load(object sender, EventArgs e)

    {

        Yonetim = new DataYonetim();

        // Sayfamız get ile gelmis ise post olmama durumunda

        if (!IsPostBack)

        {

            // caching işlemlerimizi gerceklestirelim ...

            CachingIslemlerim();

        }

    }

}

 

Uygulamamızı Çalıştıralım .

 

 

 

 

.Net Ile Kalın

DataCaching.rar (5,16 kb)