View State ve State Management Kavramları

Herkes' e merhaba,

State Management
Web ortami stateless’dir. Bunun anlami bir web sayfasi sinifi her çagirildigi zaman yeniden olusturulur. Ayni seklide http protokolide stateless’dir, sayfa üzerinde istemci bilgilerini tutmaz. Örnegin bir textbox içine metin yazip gönder butonuna basarsaniz bu metin postback olayindan sonra görünmez çünkü sayfa her postbackte yeninde olusturulur.

Yukarda görüldügü gibi sayfa istemciye gönderilmeden önce tekrar olusturulur. Bu islem her istek için gerçeklesir. ASP.NET bu problemi çözmek için View State, Cookies, Session, Application Object gibi özellikler sunar. Bunlardan çerezlere (cookie) daha önceki makalelerimizde deginmistik.
Bu çözümlerden hangisini kullanacagimiza karar vermek için bazi kriterler kullaniriz.
·         Ne kadar bilgi saklamak istiyorsunuz?
·         Istemci kalicimi yoksa geçici çerezlerimi kabul ediyor?
·         Bilgileri istemcide mi yoksa sunucuda mi saklamak istiyorsunuz?
·         Bilgileriniz önemlimi?
·         Uygulamaniz için bant genisligi ve performans kriterleriniz nedir?
·         Bilgileri kullanici bazlimi kaydetmek istiyorsunuz?
·         Bilgileri ne kadar süreyle saklamak istiyorsunuz?
·         Uygulamaniz bir Web Farm (birden fazla sunucu) , Web Garden (Çok islemcili sunucu) yoksa tek islemcili bir sunucuda mi çalisiyor.

Yukaridaki kriterleri bilmek uygulamaniz için en uygun state management yöntemini kullanmanizi saglayacaktir.

State Management Türleri
Iki türlü state management vardir:
1.       Istemci Tarafli State Management
·         View State
·         Hidden Field
·         Cookies (Çerezler)
·         Control State
2.       Sunucu Tarafli State Management
·         Session
·         Application Object
·         Caching
·         Database


View State
View State en önemli istemci tarafli state management yöntemlerindendir. Sayfanizda bulunan bilgileri postback esnasinda sayfa içerisinde saklar.

Örnegin bir degiskeni view state içine atmak isterseniz,
string KullaniciAdi = "Mehmet Sabri KUNT";
ViewState["Kullanici"] = KullaniciAdi;
View State içindeki bir veriyi geri almak için ise
string KullaniciAdi = ViewState["Kullanici"].ToString();
kodlarini kullanirsiniz. View state içinde bilgileri object türünde saklandigi için sakladiginiz veriyi yeniden yüklerden tip çevrimlerine dikkat etmeniz gerekir.
View State in avantajlari
·         Kullanimi kolaydir.
·         Sunucu kaynaklarina ihtiyaç duymaz.
·         Sakladigi verileri kodlama yaparak daha güvenli hale getirir.
View State in dezavantajlari
·         Asiri büyüklükteki veriler için kullanildiginda performans kaybina sebep olur.
·         Bilgileri kodlayarak gizli alanlarda tutar. Kodlamasini çözerek bilgilere ulasmak kolaydir.
Ne zaman View State kullanmaliyiz
State managementlarin kullanim yerleri ile ilgili yukarda bilgi vermistim. View state kullanilmasi ile ilgili birkaç noktaya tekrar deginmek istiyorum.
·         Veriler küçük boyutlu olduklari zaman çünkü gönderilen veriler sayfa içerisinde gönderilirler buda büyük boyutlu verilerde performans kaybina sebep olur.
·         Güvenligin önemli oldugu datalari View State içine koymayin.
Ne Zaman View State Kullanmamaliyiz
·         Kullandiginiz kontrol içerigi asla degismiyorsa
·         Kullanilan kontrol her postbackde yeniden dolduruluyorsa
View Stateler verileri sayfa içerisinde bazi hash ve kodlama algoritmalarina göre kodlayarak gizli alanlada string olarak tutarlar. Asagida bir sayfa içerisinde bulunan view statelerin kaynak kodlarda nasil saklandigi görünmektedir.