29 Eylül 2010 Çarşamba

XML Web Servislerinde Ön Bellekleme


Şöyle bir XMLWebServis yazdımızı Düşünelim

Online Ticaret Sitemizdeki Sipariş Datasını DataSet Olarak Getiren;

[WebMethod(Description = "Sipariş Bilgisini Getirir",MessageName="SiparisGetir")]
public DataSet GetOrdersByIDy(DateTime startDate,DateTime endDate)
{
using (SqlConnection con = new SqlConnection("data source=SERVERIP;database=e-commerce;integrated security=true"))
{
SqlCommand cmd=new SqlCommand("Select * From Orders Where orderID=@orderID",con);
cmd.Parameters.AddWithValue("@startDate",startDate);
cmd.Parameters.AddWithValue("@endDate",endDate);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
}

Bu şekilde bir sipariş bilgisi WebServis den her çekildiğinde veri tabanına sorgu tekrardan gönderilip sorgu sonucu dönen data DataSet e doldurulup gönderilecektir.Bu da uygulamamıza belli bir yük getirir.

Bu WebServis Metodumuzu ÖnBellek ile çalışır duruma getirmek istersek.

"[WebMethod(Description = "Sipariş Bilgisini Getirir",MessageName="SiparisGetir",
CacheDuration = 300)]"
metodumuzun üzerine yukarıdali ifadeyi ekler isek yain "CacheDuration = 300" kısmını
istemciden bir talep geldiğinde data 300 saniye önbellekte tutulacaktır.Aynı Zaman aralığındaki data tekrar istenir ise o data tekrar oluşturulmayacak önbellkten gönderilecektir.Parametre Olarak verilen her zaman aralığı için önbellekte 300 saniye yani 5 dakika o data tutulur ve bu şekilde tekrar o kadar sipariş bilgisi veri tabanından çekilmek zorunda kalınmaz..
Mesela sitenizden entegrasyon ve benzeri bir amaç ile bir çok yerden sipariş datası çekiliyor ise bu bir avantaj olabilir...
Yunus Emre Web Developer

Morbi aliquam fringilla nisl. Pellentesque eleifend condimentum tellus, vel vulputate tortor malesuada sit amet. Aliquam vel vestibulum metus. Aenean ut mi aucto.