ASP de Session ve Application Kullanımı

Merhaba, ASP de Session ve Application kullanımlarını örneklerle anlatmaya çalışacağım.

HTML veya Javascriptle uğraşmışsanız bir veriyi sayfalar arasında taşımak neredeyse imkansız olduğunu bilirsiniz. Değişkenlerin ömrü fonksiyonlarla sınırlıdır. Fakat ASP de bir değişken veriyi oturum kapatılana kadar yada serverı yeniden başlatana kadar saklayabilirsiniz.

Öncelikle Sessionla başlayalım:

Session mantığı bütün programlama dillerinde aynıdır. Session’ın türkçesi oturum anlamına gelir. Programlamada session; oturum kapatılana kadar yani tarayıcıyı kapatana kadar veriyi sakla anlamına gelir.

Birkaç klasik bilgi:

Session.CodePage = 1254
Session.LCID = 1033

Oturumun türkçe olduğunu belirtir. ASP’nin özelliği artık bildiğinizi varsayıyorum. ASP Sunucusu Server’a bağlanan, yani bir talepte (Request’de)( bulunan her bir ziyaretçiye ayrı bir oturum ayrı bir session açar. Tabii Cookie denetimi yoksa… Ve her Session’a bir ID verir… )

Session’ın en büyük özelliği dinamik olmasıdır. Yani ziyaretçinin sitede bulunduğu her saniye Session nesnesi tarafından takibe alınır. Bu sayede profesyonel planlamalar yaparken Session nesnesinin metotlarından bir çok şekilde faydalanabiliriz…

Örnek: Basit Bir şifreli sayfa yapalım

[asp htmlscript=”true”]
<form id="giris" action="giris-yap.asp" method="post" name="giris">
<input type="password" name="sifre" />
<input type="submit" name=" – Giriş Yap -" />
</form>

[/asp]

daha sonra giris-yap.asp yi yapalım:

[asp]
<%
strSifre = Request.Form("sifre")
If strSifre = "bizimsifre" then Session("admin") = "Admin"
If Session("admin") = "Admin" then
Response.Write("Başarıyla Giriş Yaptınız")
Else
Response.Write("Şifre Yanlış")
End If
%>
[/asp]

Örnekteki gibi Yöneticinin girebileceği sayfanın en başına If Session(“admin”) = “Admin” then ekleyerek işlem yaparsak sadece doğru şifreyi girene işlemleri yaptırmış oluruz ve giriş yapan kişi işlemlere tekrar tekrar şifre girmeden tarayıcıyı kapana kadar yapar.

Kullanıcı uygulamadaki bir sayfayı belirli bir süre istemez ya da yenilemezse, oturum otomatik olarak sona erer. Bu süre için varsayılan değer 20 dakikadır. Bir uygulama için varsayılan değeri, Internet Information Service çalışma ekindeki Uygulama Seçenekleri özellik sayfasında değiştirebilirsiniz.

<% Session.Timeout = 16 %>

Session Abandon:

Abandon yöntemi, bir Session nesnesinde saklı olan tüm nesneleri yok eder ve kaynaklarını bırakır.

Abandon yöntemini çağırmak istemiyorsanız, sunucu bu nesneleri oturumun süresi bittiğinde yok eder.

Gelelim benim en çok kullandığım ve mükemmel bir fonksiyon olan Application’a

ASP de Application Session mantığına benzer. Fakat Session tarayıcıyı kapatana kadar veriyi saklarken Application serverin RAMini temizleyene kadar veya yeniden başlatana kadar saklanır. Ben genellikle iç içe döndürülen döngülerde veya serveri yoracak sorgularda kullanıyorum. Çok hit alan bir sitenin anasayfasında kullanılabilir. Mesela en çok okunan haberler veya yeni resimler, son ilanlar vs var anasayfanızda, sitenizi ziyaretçiler her açtığında servere sürekli sorgular gönderir ve server yavaş çalışmaya başlar. Fakat bunu bir kere yaptırıp daha sonra yeni veri eklenene kadar sanki bir HTML sayfa gösteriyormuş gibi hızlı çalıştırabilirsiniz. Bunu Sahibinden.Com Mynet.Com (PHP/memcache) gibi büyük portallar yapmaktır.

Nasıl? Örnekle açıklayalım.

Sayfanızda Günün Fırsatları diye bir modül var ve sayfaya her girişte database’den veri çekiyor.

[asp]

strSQL = "SELECT * FROM tblFirsatlar WHERE Onay = 1 LIMIT 100 ORDER by firsatID DESC"
rsFatih.Open strSQL, Baglanti, 1, 3

Do While NOT rsFatih.EOF

Response.Write(rsFatih("Baslik") & rsFatih("Kategori"))

rsFatih.MoveNext : Loop
rsFatih.Close

[/asp]

Bu şekilde yaparsanız her defasında Veritabanına sorgu gönderip veriyi alır ve ekrana yazdır. Buda sayfanın geç gelmesine sebep olur. Fakat bunu Application ile yaparsak bu çok daha hızlı bir şekilde gelir ve servere bir çok sorgu gönderip yormazsınız.

Örnek:

[asp]
If Application("FirsatlarBuyuFirsatCom") = "" Then
strSQL = "SELECT * FROM tblFirsatlar WHERE Onay = 1 LIMIT 100 ORDER by firsatID DESC"
rsFatih.Open strSQL, Baglanti, 1, 3
Do While NOT rsFatih.EOF
Application("FirsatlarBuyuFirsatCom") = Application("FirsatlarBuyuFirsatCom") & rsFatih("Baslik") & rsFatih("Kategori")
rsFatih.MoveNext : Loop
rsFatih.Close
End If
Response.Write(Application("FirsatlarBuyuFirsatCom"))
[/asp]

Bu şekilde Veriyi RAMe yazmış oluruz ve tekrar okurken Boşsa sorguları yapma direk RAM dan yaz diyerek sorguları tekrar tekrar göndermeden hızlı bir şekilde ekrana yazdırmış oluruz.
Örnek site göstermek gerekirse favori reklam sitesindeki fuar takviminde 3 tane iç içe döngü var ve çok fazla veri var. Sayfa yaklaşık 10 sn de açılıyorken Application’la yaptıktan sonra sanki bir html sayfa açarmış gibi anında ekrana geliyor.

“ASP de Session ve Application Kullanımı” üzerine bir yorum

  1. Merhaba,

    Benim bir sorum olacaktı peki bu applicationlara belirli bir süre tanımlayabiliyormuyuz, mesela 3 saatte bir yenilemek gibi.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir