11 Mart 2022 Cuma

 

Web Uygulamalarında Olay Seviyeleri

(Web Application Event Levels)


Web uygulamalarında olaylar(Event) 3 seviyede meydana gelir.

1-Application Level (Uygulama Seviyesi)

                Örnek: Application Start, Session Start

2-Page Level (Sayfa Seviyesi)

                Örnek: Page Load

3-Control Level (Kontrol Seviyesi)    

Örnek: Button Click

 

ViewState değişkenleri aynı sayfa içindeki durum bilgilerini korumak için kullanılır.

Bir forma ait bir ViewState nesnesi başka bir form için geçerli değildir. Yani sayfalar arası bilgi taşımada kullanılmaz.

Peki, formlar arası bilgi taşımak istenirse ne olacak?                   

 

Bir formdan başka bir forma veri aktarımında kullanılan teknikler şunlardır:

1-SessionState

2-ApplicationState

3-QueryStrings

4-Cookies

 

 


 

SessionState

SessionState değişkenleri tüm sayfalardan geçerlidir. Yani tüm sayfalar arasında veri taşımada kullanılabilir. FAKAT SADECE BELLİ BİR OTURUM(SESSION) İÇİN.

Oturum(Session) değişkenleri tek bir kullanıcının global verileri gibi düşünülebilir. Sadece o anki oturum kendi oturum değişkenlerine erişebilir. Diğer oturumlar başka bir oturumun değişkenlerine erişemezler. 

 

ApplicationState

Bu değişkenler tüm sayfalar ve tüm oturumlar için geçerlidir. Yani tüm sayfalar ve tüm oturumlar tarafından kullanılabilirler.

Uygulama(Application) değişkenleri tüm kullanıcıların global verileri gibi düşünülebilir. Tüm oturumlar ApplicationState değişkenlerini okuyup yazabilirler.

ASP.Net web uygulamalarında uygulama seviyesi olayları(Application Level Events) Global.asax dosyasında bulunur. Bu dosyadaki bazı metotlar şunlardır:


Application_Start: Eğer uygulama henüz çalışmıyorsa, IIS e uygulamadaki bir form sayfasına ait ilk istek(request) ulaştığında bu olay tetiklenir.

Application_End: Eğer uygulama üzerinde çalışan son oturum sonlandı ise bu olay tetiklenir.

Application_Error: Eğer uygulamada ele alınmamış(unhandled) bir exception oluşursa bu olay tetiklenir.

Session_Start: Yeni bir kullanıcı oturumu başlatıldığında çalışır.

Session_End: Mevcut bir kullanıcı oturumu zaman aşımına (time out) uğradığında çalışır.

*Session Timeout değeri web.config dosyasında bir attribute ile set edilebilir.

*Application Olayları application seviyesindeki verileri/değişkenleri başlatmak için kullanılır. Yani tüm mevcut oturumlar için geçerli olacak değişkenleri…

*Session Olayları sadece belli bir kullanıcıya ait verileri başlatmak içindir. Bu veriler oturumlar arasında paylaşılamaz.

 

Örnek Uygulama:

Basit bir uygulama ile görelim. Yeni bir ASP.NET Web Forms Application oluşturun. AnaSayfa.aspx dosyasını ekleyin. Global.asax dosyasını düzenleyelim.


Daha sonra AnaSayfa.aspx in code behind dosyasını düzenleyelim.



AnaSayfa.aspx i çalıştırdığımızda o  anki Application sayısını ve kullanıcı oturum sayısını görebiliriz. Normal şartlarda her kullanıcı oturumu bir kullanıcıya karşılık gelmektedir.

Farklı tarayıcılarda çalıştırdığımızda her biri için ayrı oturum açılmaktadır. 

(Oturumlar(Session) varsayılan olarak Cookie(Çerez) kullanırlar. Bir tarayıcı web server a eriştiğinde bir Session ID alır. Session ID istemci bilgisayarında Cookie’de tutulur. Buna Session Cookie de denir. Aynı tarayıcının farklı pencere ve sekmeleri bu Session Cookie yi paylaşabilir. Fakat farklı tarayıcılar paylaşamaz. Bu yüzden farklı bir tarayıcı ile sayfaya erişildiğinde tarayıcı yeni bir Session ID alır ve bu yeni bir Cookie de saklanır. Yani sanki yeni bir kullanıcı web server ulaşmış gibi algılanır.)


Internet Explorer


Microsoft Edge


Mozilla Firefox

 

* Normalde bir kullanıcı bir web sitesini bir oturum ile ziyaret eder. FAKAT bir kullanıcı bir web uygulamasını farklı Session ID lerine sahip tarayıcılarla ziyaret ettiğinde birden fazla oturuma sahip olabilir.

Yeni bir Session ID almanın ve Session_Start() olayını tetiklemenin yolları:

1-Web sitesine bağlı olan çalışan tarayıcı penceresini kapatmak ve yeni pencere açmak.

2-Session zaman aşımına düşünce(Session Time Out)

Web.config dosyası düzenlenerek varsayılan timeout değeri olan 20 değiştirilebilir.

<sessionState mode="InProc" timeout="1"></sessionState>

3-Farklı bir tarayıcı penceresi ile web sitesine bağlanmak

4-Çerezsiz Oturumlar (Cookie-less Sessions) kullanmak

Web.config dosyasını düzenleyerek çerez kullanımı engellenebilir.

<sessionState mode="InProc" cookieless="true"></sessionState>

Bu şekilde uygulama çalıştırılsa URL ye unique alfanümerik bir alan eklenir. Bu Session ID değeridir. Session ID artık URL e gömülmüştür.

Yeni bir sekmede uygulamaya URL de aynı Session ID olduğunda tekrar erişin.

Bir de yalın URL ile erişin.

 

Bu şekilde web sunucusu size yeni bir Session ID atayacaktır.


 

ViewState, Session State, Application State

 

ViewState

1-Bir formun ViewState değişkeni sadece o form için geçerlidir

2-ViewState değişkeni geçerli sayfada _ViewState adında bir gizli alan(hidden field) olarak tutulur. Bundan dolayı başka bir sayfaya geçiş yapıldığında ya da tarayıcı kapatıldığında bu değişken kaybolur.

3-ViewState değişkenleri tüm asp.net kontrolleri tarafından Postback istekleri arasında otomatik olarak kullanılır.

 

Örnek Uygulama:

Boş bir web uygulaması içine ViewState1 ve ViewState2 isminde 2 form ekleyin. Formlara bir textbox ve bir button ekleyin.

  

Code behind dosyasını da düzenleyin.

 

 

 

 

Çalıştırıp inceleyin.

Adım 1

Adım 2

Adım 3

Adım 4

 

 

 

 

 

 


 

Session State

1-Session state değişkenleri belirli bir kullanıcı için tüm sayfalarda geçerlidir. Belirli bir kullanıcının global verileri gibi düşünülebilir.

2-Session state değişkenleri web server da tutulur.

3-Session state değişkeni, kullanıcı oturumu zaman aşımına uğradığında silinir. Varsayılan zaman aşımı değeri 20 dakikadır. Fakat bu değer web.config den değiştirilebilir.

 

 

Örnek Uygulama:

Önceki uygulamaya SessionState1 ve SessionState2 isminde 2 form ekleyip benzer tasarımı uygulayalım.

Code behind dosyalarını da düzenleyelim. Bir önceki kodda ViewState olan yerler Session olarak değiştirilecek.

 

 

 

 

 

 

 

Çalıştırıp inceleyin

Adım 1 - Firefox

Adım 2 - Firefox

Adım 3 - Firefox

Adım 4 - Firefox

Adım 5 – Microsoft Edge

Adım 6 – Internet Explorer

 

 

 

·         Farklı tarayıcılar farklı kullanıcılar gibi algılanmaktadır.

Application State

1-Application state değişkenleri tüm kullanıcılarda ve tüm sayfalarda geçerlidir. Tüm kullanıcıların global data sı gibi düşünülebilir.

2-Application state değişkenleri web server da tutulur.

3-Application state değişkenleri uygulama yeniden başlatıldığında sıfırlanır.

 

 

Örnek Uygulama:

Aynı dizaynda ApplicatonState1 ve ApplicatonState2 isminde 2 form oluşturup code behind dosyalarını düzenleyin.

 

 

 

 

 

 

 

 

 

Çalıştırıp inceleyin.

Adım 1 - Firefox

Adım 2 – Firefox

Adım 3 – Microsoft Edge

Adım 4 – Microsoft Edge

Adım 5 - IE

Adım 6 - IE

 

·         Farklı tarayıcılar farklı kullanıcılar gibi algılanır demiştik. Farklı kullanıcılar uygulamaya bağlanmasına rağmen tıklanma sayısı kaldığı yerden devam etmektedir.

 


 

Şunlara dikkat:

Bir uygulama birden fazla oturum içerir.

Bir oturum birden fazla form sayfası içerir.

Form1.aspx

ViewState

Form2.aspx

 

Form3.aspx

 

Form1.aspx

Form1.aspx

Form4.aspx

 

Form3.aspx

 

Form2.aspx

 

Form3.aspx

 

Form2.aspx

 

Form4.aspx

 

Oturum 2

Oturum 3

Oturum 1

Session

Form4.aspx

 

Uygulama

Application

 

Hiç yorum yok:

Yorum Gönder