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:
Session oluştur isimli butonumuza çift tıklayarak C# kod kısmına geçiyoruz:
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:
Projemizi çalıştırıp test ediyoruz:
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:
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:
Oluşturduğumuz ikinci sayfadaki Session yakala butonuna çift tıklayıp önceki sayfada tutulan Session değerini
bu sayfada da yakalıyoruz:
Şimdi projemizi tekrar çalıştırıp ilk oluşturduğumuz WebForm1 sayfasında Session oluşturuyoruz:
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:
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:
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 :)
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:
Session oluştur isimli butonumuza çift tıklayarak C# kod kısmına geçiyoruz:
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:
Projemizi çalıştırıp test ediyoruz:
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:
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:
Oluşturduğumuz ikinci sayfadaki Session yakala butonuna çift tıklayıp önceki sayfada tutulan Session değerini
bu sayfada da yakalıyoruz:
Şimdi projemizi tekrar çalıştırıp ilk oluşturduğumuz WebForm1 sayfasında Session oluşturuyoruz:
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:
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:
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 :)
dostum şu sayfa renklerini değiştir !
çok süper olmuş.