Şimdi Ara

ASP.NET İLE ZİYARETÇİ SAYISI

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4
Cevap
0
Favori
667
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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.


    protected void Page_Load(object sender, EventArgs e)
    {
    if (!Page.IsPostBack)
    {
    if (Application["ziyaretSayisi"] == null)
    {
    Application["ziyaretSayisi"] = 0;
    }
    Application.Lock();
    Application["ziyaretSayisi"] =
    (int)Application["ziyaretSayisi"] + 1;
    Application.UnLock();
    Label3.Text = "Ziyaret sayısı: " +
    Application["ziyaretSayisi"].ToString();


    }
    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.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.