ÜYE GİRİŞİ  
Kullanıcı adı :
Parola :
 
  Üye Ol!  
 
 
ANASAYFA HABERLER ASP ASP.NET PHP C/C++ C# JAVA ARAMA İLETİŞİM

ASP.NET
  Expression Web ile Site Yapimi
  Web Server Control Yazmak - 2
  Web Server Control Yazmak - 1
  Sql Cache Dependency
  Web Kontrollerini Etkin Kullanmak
  Xslt Kullanımı
  Bir Web Sayfasının Anatomisi
  Client Script Callback
  Login Kontrollerinin Kullanımı

ASP
  ASP Nesneleri
  29 Soruda ASP
  Matematiksel Uygulamalar
  Select Case Yapısı 2
  Fonksiyon(Function) Kullanımı
  IF-ELSE...
  GET Yöntemi ile İşlemler
  Asp de Tarih ve Saat fonksiyonları
  While-wend döngüsü

C Sharp (C#)
  C#'da klasör işlemleri
  C# ile diziyi tersine çevirme
  Çok Kullanılan Kontroller-1
  C# ile Kronometre Uygulaması
  Overloaded Metotların Gücü
  C# ile XMLQuery Örneği
  Rastgele Kod Üretimi
  Kontroller ile Çalışma
  Düzenli İfadeler Nedir?

DUYURULAR

F# Microsoft dil teknolojisinin en yeni üyesi.Common Lisp-Slime-Emacs tarzında etkileşimli,kıvrak,sonuçların anında görülebildiği ve yüksek performanslı bir betik dil olarak özetleyebiliriz bu yeni dili. devamı >>


Türk Telekom'dan yapılan yazılı açıklamada, Telekomünikasyon Kurumu'nun onayladığı yeni tariflerin, internet servis sağlayıcı şirketlerin maliyetlerini önemli oranlarda düşüreceği aktarıldı. devamı >>


Asp.Net' te Durum Yönetimi - 2 | Asundinay.Com
Asp.Net İçin Eklenmiş Makale
 Makale Adı  :  Asp.Net' te Durum Yönetimi - 2
 Yayın Tarihi :  12.08.2007 18:10:33 Ekleyen :  Kazım Aydın Okunma : 257

Uzun bir aradan sonra ASP.NET’te Durum Yönetimi 1’ in devamı olan makaleyi yazmaya karar verdim. Böylece konu bütünlüğü de bozulmamış oldu. ASP.NET’ te Durum Yönetimi 1 makalesine bu linkten ulaşabilirsiniz. önceki makalede durum yönetimine neden ihtiyaç olduğunu ve istemci tarafında durum yönetiminin nasıl gerçekleştirildiğini tartışmıştık. Bu makalede sunucu (server) tarafında uygulanan durum yönetimi tiplerini inceleyeceğiz. Sunuc Tabanlı Durum Yönetimi Teknikleri:

Bu teknikleri üç ana başlık altında ele alabiliriz.

  • Session State (Oturum Durumu)
  • Application State (Uygulama Durumu)
  • Veritabanları (Database Support)

Oturum Durumu (Session State)

Bir istemci (client), bir web sunucusuna bağlanıp bir ASP.NET sayfası talep ettiğinde sunucu istemciye bir SessionID atar ve bu SessionID’ yi istemciye gönderir. Artık istemcideki web tarayıcısı kapatılıncaya kadar bu SessionID, sunucuda saklı kalır. SessionID sayesinde sunucu, iletişim içerisinde olduğu istemcileri birbirinden ayırabilir. Bu gerçekten ilk bakışta inanılması zor gibi görünen bir yetenektir. Bir web sitesinden talepte bulunan binlerce kullanıcıyı birbirinden ayırt etmek için ASP.NET 120 bitlik bir kelime kullanır. Bu SessionID, URL adreslerinde kullanılmasına izin verilen ASCII karakterlerinden oluşur. Bu kelime özel bir algoritma ile her istemci için tek (unique) olacak şekilde üretilir. Böylece SessionID’ler çakışmaz. Ayrıca, üretilen bu kelime rasgeledir. Bu sayede bir istemcinin SessionID’sini tahmin etmek imkansızlaşır. SessionID, Session nesnesinin SessionID özelliği ile öğrenilebilir. Local olarak bunu şöyle deneyebiliriz:

private void Page_Load(object sender, System.EventArgse)
{
    Response.Write(Session.SessionID);
}

Tarayıcıda sayfaya baktığımızda 0vxururlzx1fzeit3sucf1nf benzer bir yazı görürüz. Yeni bir tarayıcı penceresi açıp aynı sayfaya yönlendirdiğimizde bu yukarıdaki kelimenin tamamen değişiği olan yeni bir SessionID değeri ekrana yazılır. Şimdi session değişkenleri kullanarak bir sayı saydırma uygulamasını ele alalım. Uygulamamız için bir web forma iki button ve bir label kontorlü yerleştirelim. Sayfanın yüklendiği an çalışacak kodları yazalım. Uygulamayı indirmek için tıklayın.

private void Page_Load(object sender, System.EventArgs e)
{
    Response.Write(Session.SessionID);
    Session.Timeout  = 1;
    if (Session["sayi"] == null )
    {
        Session["sayi"] = 0;
    }    
}

Burada session nesnesi içerisine sayi değişkenimizi yerleştiriyoruz. Bunun için Session["sayi"] = 0 yazmak yeterlidir. Sayfa ilk yüklendiğinde Session nesnesi null olacaktır. Bunu kontrol ederek sayi değişkenine ilk değeri olan sıfırı veriyoruz. Artık sayi değişkenimiz sunucuda saklanacaktır. Böylece sanki global olarak saklanmış olan bir değişkene sahip oluruz.

private void Button1_Click(object sender, System.EventArgs e)
{
    Session["sayi" ] = (int )Session["sayi" ] + 1;
    Label1.Text  = Session["sayi"].ToString();
}

İleri düğmesine tıkladıkça Label1 içerisinde sayılar birer birer artar. Her düğmeye basışta sayfa sunucuya gönderilir. Sayi değişkeni session içerisinde saklandığı için değerini korur. Böylece eski değerden yararlanarak onu birer birer arttırabiliriz. Session değişkendeki bir değeri almak için uygun tip dönüşümlerini yapmaya özen göstermeliyiz. Webformunun içerisinde yer alan form nesnesi sessionların gönderilme şeklini değiştirir.

<form id="Form1" method="get" runat="server">

Gönderme metodu olarak post’u kullandığımızda session değişkenler, istemcide gizli bir cookie içerisinde saklanır ve sunucuya yollanır. Get metodunu kullandığımızda ise session değerleri, sunucudan URL içerisine yazılarak gönderilir. İleri düğmesine bastıkça URL adresi de sürekli değişecektir. Post metodu varsayılan metottur. Değiştirilmesi tavsiye edilmez.

Session değişkenlerinin sunucuda tutulma süreleri Session.Timeout özelliği ile değiştirilebilir. Varsayılan değer 20 dakikadır. Bizim örneğimizde ise bu süre 1 dakika ile sınırlandırılmıştır. 1 dakika bekleyip ileri tuşuna bastığımızda saymanın devam etmeyip, baştan başladığını gözlemleriz. Session değişkenlerini temizlemek istediğimizde ise Session.Clear() metodunu kullanırız. Bu metodu kullandığımızda Session["sayi"] null olur.

ASP.NET uygulamasının Session değişkenleri ile ilgili bir takım özellikleri web.config dosyası içerinde de belirlenmiştir. Web.config dosyasını açtığımızda

<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>

ile karşılaşırız. Burada mode session değerlerinin nerede saklanacağını belirler. Bir ASP.NET uygulamasında session değerleri üç farklı şekilde tutulabilir. InProc modunda session değerleri çalışan IIS prosesinin içersinde saklanır. IIS kapatıldığında, yeniden çalıştırıldığında session değerleri kaybolur. StateServer modunda ise session değerleri sunucuda arka planda çalışan ASP.NET state servisinde tutulur. üçüncü mod olan SQLServer’da ise session değerleri SQL Server içerisindeki tablolarda tutulur. Cookieless özelliği ise session değişkenlerin istemcide çerez içerisinde tutulup tutulmayacağını belirler. true değerini aldığında SessionID değeri URL’ye eklenerek istemciye yollanır. Varsayılan değeri false’dir. Timeout özelliği ise az önce açıklanan session’ın dakika cinsinden yaşama süresidir.

Sessionlar çerezleri desteklemeyen tarayıcılarla çalışabilir. SQLServer’da saklandıklarında uygulamalara kalıcılık sağlarlar. Loglama gibi işlemleri kolaylaştırırlar. Ancak büyük verilerin, örneğin datasetlerin sessionlarda tutulması belleğin tükenmesine yol açar. Bu yüzden sessionların perfomansı etkilemeyecek şekilde kullanılması gerekir.

Uygulama Durumu (Application State)

Sessionlar kullanıcıya özgüdür. Kullanıcıya ait değişkenler, özellikler sessionlar içerisinde saklanabilir. Kullanıcı uygulamadan çıktığında sessionlar bellekten atılabilir. örneğin bir alışveriş sepeti içerisindeki ürünler sessionda tutulabilir. Sipariş tamamlanmazsa veya tarayıcı penceresi kapatılırsa sessionlar silinir. Bu istenen bir durumdur. Uygulama ölçeğinde değişkenler oluşturulup,kullanılmak istenildiğinde ise application nesnesi kullanılır. Application nesnesi uygulamaya özgüdür. ASP.NET uygulaması, IIS çalıştıkça application değişkenlerini kullanabilir. Tarayıcı kapatılsa dahi uygulamaya özgü değişkenler bellekte kalır. Application nesnesinin çok kullanıldığı bir durum, siteyi ziyaret edenlerin toplam sayısını öğrenmedir.

private void Page_Load(object sender, System.EventArgs e)
{
    if (Application["ziyaret"] == null )
    {
        Application["ziyaret" ] = 0;
    }
    Application.Lock();
    Application["Ziyaret"] = (int )Application["Ziyaret"] + 1;
    Application.UnLock();
    Label1.Text  = "Ziyaret Sayısı: " + Application["ziyaret"].ToString();
}

Application değişkenlerine değer atamak session değişkenlerine değer atamakla benzerdir. Ancak application nesnesine birden fazla kullanıcı değer atayabileceği için değer atama işleminin senkronize yapılması gerekir. Aynı anda iki kullanıcı application değişkeninin değerini değiştirmeye kalkarsa hata meydana gelir. Bunu önlemek için Lock() metodu kullanılarak sadece bir kullanıcının değeri değiştirmesine izin verilir. Diğer kullanıcıların istekleri ilk kullanıcının işlemi bittikten sonra teker teker ele alınır. UnLock() metodu ile application nesnesi, başka taleplere cevap verebilmesi için serbest bırakılır.

Application nesnesi uygulama bazındaki değişkenleri saklamak için çok kullanışlıdır. Bellek performansını etkilemeyecek şekilde bir çok statik veri application değişkenler içerisinde saklanabilir.

Veritabanları (Database Support)

Web uygulamaları çok kullanıcılıdır. Uygulamanızda kullanıcıların bilgilerini, isteklerini saklamanız gerekebilir. Hatta uygulamanızın kendisi bile bir veritabanında depolanmış bilgilere ihtiyaç duyabilir. (örnek: Bir haber sitesinin haber arşivi) Bu gibi durumlarda verileri depolamak için veritabanı kullanmak kaçınılmazdır.

Uygulamanızda bir veritabanı kullanarak kullanıcıları birbirinden ayırt edebilir, işinizle ilgili bilgileri depolayabilirsiniz. Veritabanı kullanmak verileri yalın dosyalarda tutmaktan çok daha güvenli ve verimlidir. Diğer yandan veritabanını optimum şekilde tasarlamak zor bir iştir. İyi tasarlanmamış bir veritabanı hem uygulamanın kodlanmasını zorlaştırır hem de performansını düşürür.


 

Kaynak : csharpnedir.com


 

Asp.Net İçin Eklenmiş Tüm Makaleler
Asp.Net İçin En Son Eklenen 5 Makale
 Makale Adı  :  Expression Web ile Site Yapimi
 Yayın Tarihi :  12.08.2007 19:57:26 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Web Server Control Yazmak - 2
 Yayın Tarihi :  12.08.2007 19:52:45 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Web Server Control Yazmak - 1
 Yayın Tarihi :  12.08.2007 19:48:59 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Sql Cache Dependency
 Yayın Tarihi :  12.08.2007 18:36:18 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Web Kontrollerini Etkin Kullanmak
 Yayın Tarihi :  12.08.2007 18:34:25 Ekleyen :  Kazım Aydın Makaleyi Oku  

C/C++
  C ögreniyorum -8-
  C ögreniyorum -7-
  C ögreniyorum -6-
  C ögreniyorum -5-
  C ögreniyorum -4-
  C ögreniyorum -3-
  C ögreniyorum -2-
  C ögreniyorum -1-
  İlk C++ Programımız

JAVA
  Java ile Histogram Eşitleme
  JAVA İçinde Thread Kullanımı
  Serialization İşlemleri 2
  Serialization İşlemleri
  İlk Bakışta JSP
  Servletler ile Web Sayfaları
  Java ile Grafik Çizim
  Java, MySql Bağlantısı
  JBuilder ile Database

PHP
  php dersleri -1-
  php/access ile silme işlemi
  php ile access'e bağlanma - 2
  php ile access'e bağlanma - 1
  Döngü ve Diziler - BÖLÜM 5
  Döngü ve Diziler - BÖLÜM 4
  Döngü ve Diziler - BÖLÜM 3
  Döngü ve Diziler - BÖLÜM 2
  Döngü ve Diziler - BÖLÜM 1

İSTATİSTİKLER
  Toplam ziyaret :  24684
  Toplam üye sayısı :  1077
  Asp makale sayısı :  20
  Asp.Net makale sayısı :  54
  Php makale sayısı :  26
  C/C++ makale sayısı :  51
  C# makale sayısı :  29
  Java makale sayısı :  33
  Toplam makale saıysı :  213
Copyright asundinay® 2007 Her Hakki Saklidir
Tasarim & Programlama asundinay®