Merhaba arkadaşlar, bilmeyen arkadaşalara yol göstermesi açısından, bir örneği sizlerle paylaşmak istiyorum.
Nasıl oluyorda, sayfayı ziyaret edenleri sayısı hesaplanıyor diyenlere hitap ediyorum.
Bildiğiniz gibi Asp.Net Durum Yönetimi iki şekilde ele alınıyordu,İstemci ve Sunucu olarak. Sunucu taraflı ele alımlarda ise: Session Application Veri Tabanları
Session oturum süresince veya sizin tanımladığınız süre içerisinde sayfa üzerindeki değerler saklanabiliniyordu. Diğer ve kullanacağımız yöntem ise Application, sayfanızı çalıştırıp kapatsanız bile bellekte kalırlar. Ziyaretçi sayısını üçüncü yol olarak veritabanında tutmak ise şu durumlarda saçma olur. Uygulamanızda hiç veri tabanı kullanmıyorsanız, ekstra yük ve maliyet. Kullansanız bile her kayıt için sql'e gidiş-geliş. Veri boyutu, her sayfa açılımında artacağı için veri tabanında gereksiz veri şişmeleri, vs... Bildiğiniz gibi Application durumu uygulama bazında veri tutabilmekte. Page'in Yaşam döngüsü içinde en büyük rollerden birine sahip Load olayında şu kodları yazıyoruz.
} Session değişkene değer atar gibi değer atayabiliyoruz.Ancak Application nesnesine birden fazla kullanıcı değer atayabileceği için değer atama işleminin senkronize bir biçimde yani ir atama yapılıp ardından var ise diğer atama yapılmalı. Aynı anda iki istemci Application üzerinde işlem yapmaya kalkar ise sonuç hata oluşacaktır. Şöyleki; Yukarıdaki kodda bir istemci sayfamızı talep ediyor ve load kısmında application nesnesine bir değer atanıyor, işte o anda başka bir istemcide sayfamızı talep eder ise application nesnesine değer atanmasını isteyecek ve iki işlem arasında (sistemcilerin meşhur lafı :) ) çakışma oluşacaktır. Bunu önlemek için Application nesnesinin, iki methodu yardımımıza koşuyor.Lock ve UnLock methotları.Lock() methotu ile değişkeni sadece tek bir kullanıcının değiştirmesine izin verilir. UnLock() methodu ise Application nesnesinin,başka taleplere cevap verebilmesi için serbest bırakılır.
zaten session'da login olan userların Idlerini taşımıyormusunuz? o Id'leri count yapın en kısa ve temiz çözümdür...
Session("UserId").Count
olması lazım... loggout olan yada sessiondan düşen kişi direk counttan düşecektir...
Bilgi için teşekkürler.
quote:
Orjinalden alıntı: Joker
zaten session'da login olan userların Idlerini taşımıyormusunuz? o Id'leri count yapın en kısa ve temiz çözümdür...
Session("UserId").Count
olması lazım... loggout olan yada sessiondan düşen kişi direk counttan düşecektir...
Doğrudur, yollardan biri.
yeni mesaja git
Yeni mesajları sizin için sürekli kontrol ediyoruz, bir mesaj yazılırsa otomatik yükleyeceğiz.Bir Daha Gösterme