Serkan Ayyıldız

Meraklı bir yazılım uzmanı...

ASP.Net Session Yapısı ve Örnekleri

ASP.Net meraklısı web yazılımcılarına selamlar :)

Web sayfası içerisinde veri taşıma yöntemlerinden biri olan Query String konusunu öğrenmiştik ve bu teknikle sayfanın URL (site linki) kısmında istediğimiz değeri aynı ya da başka bir sayfada kullanabiliyorduk.

Query String konusu maalesef web sayfalarında güvenlik açığına sebep oldukları için gizli tutulması gerekilen bilgileri riske atmaktalar ve dolayısıyla kullanıcı oturum açma bilgileri,alışveriş iletişim adresleri,kredi kartı ve şifreler gibi ele geçmesi durumunda ciddi sorunlarla baş ağrıtan olaylara sebep olduğu için Session (oturum) tekniği geliştirilmiştir.

Session tekniği sunucu taraflı bir mekanizma olduğu için sayfa içerisindeki bilgiler Query String gibi web tarayıcısında görülmemekte ancak sitenin arka planında tutulmaktadır.
Madem bu şekilde güvenli bir yol varken neden Query String kullanıyoruz derseniz, Session ile taşınan veriler sunucu tarafında tutulduğu için verinin kaybolma riski vardır ve aynı zamanda bir ASP.Net uygulamasında çok fazla Session kullanımı performans sorunlarına sebep olabilir.O yüzden hangi verileri hangi teknikle saklayacağımızı iyi ölçmemiz gerekmektedir.

Session'dan biraz daha bahsedersek bir ASP.Net uygulamasında sınırsız sayıda Session oluşturabilir ancak belirli bir zaman aşımına (timeout) kadar verileri saklayabiliriz.(Bu konuya daha sonraki makalelerimizde tekrar değineceğiz)

Session aslında bir bilgisayar kullanıcısının bir ASP.Net kullanan web sayfasını açtığı anda çalışmaya başlar ve kullanıcı web sayfasını kapatıncaya kadar varlığını sürdürür,her Session oturumunda istediğimiz anahtar sözcüğe istediğimiz değeri verebiliriz ve bu da bize ilkel veri tiplerindeki (int,string) gibi değer atama kolaylığını tanır.
Basit bir Session oluşturmak için:

Session["isim"]=deger;

biçimini kullanabilirsiniz.Bu tıpkı Query String konusundaki index.aspx?isim=deger biçimine oldukça benzemektedir.
Session yapısının bir diğer güzelliği de sadece int,string,bool gibi ilkel tipler dışında object orianted programming konusu olan sınıf örneğini (instance) dahi Session mekanizmasında tutarak daha karmaşık verileri sayfalar arasında rahatlıkla taşıyabilirsiniz.

Oluşturulan Session değerini ise Session["isim"] biçimini istediğiniz gibi Convert edebilir ya da cast edebilirsiniz.Bu kadar laftan sonra biraz örnek uygulama yapalım :)
Yeni bir ASP.Net projesi oluştururken aşağıdaki gibi bir Web Form oluşturuyoruz:

aspnet-web-form

aspnet-webform

Session oluştur isimli butonumuza çift tıklayarak C# kod kısmına geçiyoruz:

aspnet-session

Böylece textboxtan gelen değeri string tipte Session nesnesinde tuttum,şimdi de Session yakala butonumuza çift tıklayıp adımı ASP.Net label'a yazdırıyoruz:

aspnet-session-yakalama

Projemizi çalıştırıp test ediyoruz:

aspnet-session-test

Session oluştur butonuna tıkladıktan sonra şimdi oluşturduğumuz Session değerini labela yazdırmak için ikinci butona tıklıyoruz:

aspnet-session-veri-alma

Aynı web sayfasında Session ile veri taşıma yapısını gördükten sonra şimdi aynı projeye yeni bir web form daha
ekliyor ve tasarımını şu şekilde oluşturuyoruz:

aspnet-html-webform

aspnet-webform2

Oluşturduğumuz ikinci sayfadaki Session yakala butonuna çift tıklayıp önceki sayfada tutulan Session değerini
bu sayfada da yakalıyoruz:

aspnet-session-yapısı

Şimdi projemizi tekrar çalıştırıp ilk oluşturduğumuz WebForm1 sayfasında Session oluşturuyoruz:

aspnet-session-ulaşma

Session oluştur butonuna tıkladıktan sonra "ilk session değeri bu" cümlemizi artık arka planda tutuyor ve sayfamızın
linkini WebForm2 olarak değiştirip WebForm2'deki Session yakala butonuna tıklıyoruz:

aspnet-session-string

Dikkat ederseniz QueryString konusundaki gibi web sayfasının linkinde herhangi bir oynama yapmadık sadece iki sayfa
arasında geçişi görebilmek için WebForm1 ve WebForm2 arasında geçiş sağladık,işte bu güzel yapının adı Session'dır
ve ASP.Net bileşenleri arasında en beğendiğim olaydır :)

Session ile ilgili şimdilik bilmemiz gerekenler bu kadarla yeterli diye düşünüyorum,ileri ki makalelerimizde Session konusunu daha detaylı biçimde kullanmayı öğreneceğiz.
WebForm1 ile WebForm2 arasında yazdığımız kodları sırasıyla görelim:

aspnet-C#-kod
aspnet-web-c#

Eğer aklınıza Form_Load eventi içerisinde neden if(postback) denetimini yaptığımız sorusu geliyorsa ASP.Net postback
makalemi okumamışsınız demektir,kısaca bahsedersek ASP.Net butonlarına tıklandığında sayfanın postback olması sorunlara yol açabildiği için bu denetimi sürekli kullanırım ve size de kullanmanızı öneririm ;)

Makalemize burada noktayı koyuyor ve kendinize iyi bakın hoşçakalın diyorum :)

2 Yorum:

  1. string ad="...";
    9/29/2014

    dostum şu sayfa renklerini değiştir !

  2. jewkisot
    3/2/2014

    çok süper olmuş.

Bir yorum bırak E-posta adresiniz yayınlanmayacaktır.

Menu