Asp.NET Uygulama Durum Yönetimi (Application State Management)


Twitter'da Paylaş Favorilerime Ekle

Uygulama Durum Yönetimi

Sitenin tamamıyla ilgili verileri tutmak için kullanılan yapıdır. Buradaki veriler sitenin tamamı ve tüm ziyaretçiler için geçerli olup, istenilen sayfadan buradaki bilgilere ulaşıp işlem yapabiliriz.

Asp.NET'te Uygulama Durum Yönetimi bilgilerini elde etmek ve işlem yapmak için Global.Asax dosyası kullanılır.

Global.Asax Dosyası Nedir?

Global.asax dosyası, kullanımı isteğe bağlı olan ve uygulama düzeyinde bilgiler tutup işlem yapmamızı sağlayan dosyadır. Sunucu taraflı çalıştığı için güvenlidir, istemci tarafından erişilemez. 

Uygulama Durum Yönetimi (Application State Management) denince akla ilk gelen örnek online ziyaretçi sayısının gösterilmesidir. Bunun dışında bir ziyaretçinin oturum başlattığında yapılmasını istediğimiz işlemler gibi birçok şeyi, bu dosya içerisinde gerçekleştirebiliriz.

Projemizde Global.asax dosyası yok ise Add New Item penceresini kullanarak, Global Application Class seçeneği ile ekleyebiliriz.

Bu dosya içerisinde çeşitli olay programları vasıtasıyla istenen durumlarda işlem yapılmasını sağlayabiliriz.

protected void Application_Start(object sender, EventArgs e)
Uygulamamız (yani sitemiz) sunucuda ilk başlatıldığı anda çağrılır. 

protected void Application_End(object sender, EventArgs e)
Uygulamamızın yani sitemizin çalışması sona erdiğinde çağrılır.

protected void Application_Error(object sender, EventArgs e)
Uygulamanın çalışırken hata oluşması durumunda çağrılır. Hata kayıtlarının tutulması gibi işlemler yapılabilir.

protected void Application_BeginRequest(object sender, EventArgs e)
Sitemizdeki herhangi bir sayfaya istek geldiğinde çalışır. Gelen isteğin türüne ya da durumuna göre farklı işlemlerin yapılmasını sağlayabiliriz.

protected void Application_AuthenticateRequest(object sender, EventArgs e)
Üyelik tabanlı bir sitede, kullanıcı sisteme başarılı bir şekilde giriş yaptığında tetiklenen olaydır. Bu sayede kullanıcıyı bir sayfaya yönlendirmek, rol atamak, bilgisayarına cookie bırakmak vb işlemler yapılabilir.

protected void Session_Start(object sender, EventArgs e)
Bir ziyaretçinin sitemizdeki herhangi bir sayfayı ziyaret etmesi halinde çalışır. Sayfaya istek geldiği anda çalışır. Kullanıcı o sayfada kaldığı sürece tekrar çalışmaz fakat oturum süresi dolduktan sonra yeni bir istek gelirse bu olay tekrar çalışır. Online ziyaretçi sayısını hesaplamak için de bu olay kullanılır.

protected void Session_End(object sender, EventArgs e)
Ziyaretçinin oturumunun sonlanması durumunda bu olay tetiklenir. Mesela online kullanıcı sayısı hesaplanırken Session_Start olayında sayı artırılırken, Session_End olayında ise azaltılır. Bu sayede o an oturum açmış toplam kullanıcı sayısı bulunabilir.

Asp.NET Uygulama Durum Yönetimi, Application State Management, online ziyaretçi sayısı gösterme, global.asax nedir, asp.net sunucuda uygulama bilgisi saklama

KONU İLE İLGİLİ ÖRNEKLER

Online Ziyaretçi Sayısını Hesaplama ve Gösterme

Global.Asax dosyasını aşağıdaki gibi düzenleyin:

<%@ Application Language="C#" %>
<%@ Import Namespace="site_webprogramciligi" %>
<%@ Import Namespace="System.Web.Optimization" %>
 
<script runat="server">
 
    void Application_Start(object sender, EventArgs e)
    {
        // Uygulama sunucuda ilk çalıştığında bu olay tetiklenir. Burada kullaniciSayisi parametresini 0 olarak belirliyoruz.
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        AuthConfig.RegisterOpenAuth();
 
        Application["kullaniciSayisi"] = 0;
    }
    
    void Application_End(object sender, EventArgs e)
    {
        //  Uygulama kapandığında çalışacak kodlar
 
    }
 
    void Application_Error(object sender, EventArgs e)
    {
        // Hata oluştuğunda çalışacak kodlar
 
    }
 
    void Session_Start(object sender, EventArgs e)
    {
        // Herhangi bir sayfaya girilerek oturum başladığında çalışacak kodlar. Burada kullaniciSayisi değişkenini 1 artırıyoruz. Her yeni oturumda bu sayı 1 artmış olacaktır.
 
        Application["kullaniciSayisi"] = ((int)Application["kullaniciSayisi"]) + 1;
    }
 
    void Session_End(object sender, EventArgs e)
    {
        // Kullanıcının oturumu sonlandığında çalışacak kodlar. Burada kullaniciSayisi değişkenini 1 azaltıyoruz. Her kapanan oturumda bu sayı 1 azalmış olacaktır.
 
        Application["kullaniciSayisi"] = ((int)Application["kullaniciSayisi"]) - 1;
    }
</script>

Online Ziyaretçi Sayısını Sayfalarımızda Göstermek İçin İlgili Sayfalara Aşağıdaki Kodu Ekleyin:

onlineKullaniciSayisi.Text = "Online Kullanıcı Sayısı <b>"+Convert.ToString( Application[ "kullaniciSayisi" ] )+"</b>";


YORUMLAR



ASP.NET Dersine Ait Diğer Konular: