Application State – Lock ve Unlock
Session‘lar kullanıcıya özgüdür. Kullanıcıya ait bilgiler session‘larda saklanabilir. Kullanıcılar siteden gittikten sonra bellekten atılabilir. Örneğin; kullanıcıların kısa süreli bilgileri session‘larda tutulup gerekli adımlar gerçekleştiği taktirde session‘daki bilgiler kalıcı olarak veritabanına yazılabilir. Basitçe kullanınının sepetindeki ürünler sessionlarda tutulabilir ve kullanıcı siparişi verdiği taktirde bilgiler veritabanına kaydedilebilir, eğer sipariş vermezse siteden giderse session silinebilir. Sessionlar denildiği gibi kullanıcıya özgüdür. Site,uygulama bazında bir değişken tutmak istersek o zaman Application nesnesini kullanabiliriz. Application nesnesi uygulamaya özgüdür. IIS çalıştığı sürece Application nesnesindeki bilgilere erişebiliriz. Tarayıcının kapatılması, kullanıcının siteden çıkması Application nesnesi içerisindeki bilgilerin kaybolmasına sebep olmamaktadır. Application nesnesi en çok siteye gelen ziyaretçi bilgilerini,aktif ziyaretçi sayısını tutmak için kullanılır. Yapacağım örnekten sayfa load olayında Application nesnesi tanımlayıp sayfa yükleme sayısını tutacağım.
[csharp]
if (Application["loadCount"] == null)
Application["loadCount"] = 0;
Application.Lock();
Application["loadCount"] = Convert.ToInt32(Application["loadCount"]) + 1;
Application.UnLock();
Response.Write(Page.Title+ " sayfasının görüntülenme sayısı: " + Application["loadCount"].ToString());
[/csharp]
Kodları incelediğinizde Application nesnesine değer aktarma aşamasından önce Application.Lock() ve değer aktardıktan sonra Application.Unlock() satırları dikkatinizi çekmiştir. Bunu yapmamın sebebi Application nesnesine aynı anda birden fazla kullanıcı değer atayabileceği için değer atama işleminin senkronize yapılmasını istediğim içindir. Aynı anda iki veya daha fazla kullanıcı Application nesnesinin değerini değiştirmeye kalkarsa hata meydana gelecektir. Bunu önleyebilmek için Application.Lock() metodunu kullanarak sadece bir kullanıcının değeri değiştirmesine izin vermiş oldum. Diğer kullanıcıların istekleri ilk kullanıcının işlemi bittikten sonra teker teker işlenir. Application.Unlock() metodu ise Application nesnesini, diğer taleplere de cevap verebilmesi için serbest bırakır.
Application nesnesi uygulama bazındaki değişkenleri saklamak için çok kullanışlıdır. İlerleyen makalemde Application nesnesini kullanarak ziyaretçi sayacı hazırlayacağım.
Yararlı olması dileğiyle…