Merhaba Arkadaşlar;
Çoğu zaman asp.net ile geliştirdiğiniz web yazılımlarınızda Session(Oturum) nesnesini kullanmışsınızdır.Bazen yeri geldiğinde Oturum nesnesinde çok fazla değer tutmak gerekiyor.İşte tam bu çok fazla değer tutma ihtiyacı giderilme sırasında yanlış bir mantıkla kodlama yaparsak web uygulaması performanslı çalışmayabiliyor sorunlar çıkarıyor.Kısacası aşağıdaki gibi bir yöntemle oturum nesnesinde değer saklamak pek mantıklı değil.
|
Session["ID"] = 1;
Session["AD"] = "İsmail";
Session["SOYAD"] = "Kocacan";
|
Neden mantıklı değil derseniz? Oturum nesnesinde değer saklarken key’lerin farklı olması demek sunucu belleğinde yeni oturum nesnelerinin oluşması demektir.
Hâlbuki amacımız nedir? Oturum nesnesinde bir kullanıcının bilgilerini saklamaktır. Ve
Bu bilgilere daha sonra erişerek işlemler yapmak vs.
Bilindiği üzere Session nesnesi bilgileri birer object(Nesne) olarak saklar. Object’ de bir tiptir, classtır yine aynı şekilde tüm nesnelerinde büyük büyük dedesidir.
Şimdi bu bilgiler ışığında kafamızda bir ampul yanıyor.
O zaman şöyle düşünsek herhalde yanlış olmaz. Session(Oturum) nesnesi bilgileri object olarak sakladığına göre. Oturum nesnesinde her türlü tipi(int, string, class, struct) saklamak mümkün.
O zaman oturum nesnesinde bir class saklıyacağız. Ve bu class’ın üyeleri olacak(id,ad,soyad) gibi.Şimdi bu dediklerimizi icraata dökelim;
Öncelikle Session da tutacağımız Classı tasarlayalım.
|
public class Kullanici
{
public int ID;
public string AD;
public string SOYAD;
}
|
Yukarıda bahsettiğim “bir kullanıcın bilgilerini saklamak” ibaresini yerine getirmiş olduk. Kullanici isminde bir class’ımız var. Ve ID, AD, SOYAD diye bilgileri var.
Şimdi bu classı Oturum nesnesinde nasıl saklarız ve sakladığımız bu class’a nasıl erişiriz
Ona bakalım.
|
//Session'a class atama
Kullanici kullaniciX = new Kullanici();
kullaniciX.ID = 1;
kullaniciX.AD = "İsmail";
kullaniciX.SOYAD = "Kocacan";
Session["KullaniciX"] = kullaniciX;
|
|
//Sessiondaki classın bilgilerine erişmek
if (Session["KullaniciX"] != null)
{
Kullanici XKullanici = (Kullanici)Session["KullaniciX"];
string bilgiler =
"ID :" + XKullanici.ID.ToString() +
"AD :" + XKullanici.AD.ToString() +
"SOYAD :" + XKullanici.SOYAD.ToString();
Response.Write(bilgiler);
}
|
Session daki bilgilere erişmek için öncelikle KullaniciX nesnesinin null olup olmadığına (bellekteki adresinin olup olmadığına) bakıyoruz. Nitekim Eğer nesne yoksa ve olmayan bir nesneye erişmeye kalkarsak hata alıcaz. 
Amacım Sessionda birden fazla bilgiyi nasıl performanslı bir şekilde saklayabiliriz bunu anlatmaktı. Umarım faydalı olmuşumdur.
İsmail Kocacan (Yazılımcı Bozuntusu)