Üye Girişi Yapınız     


    E-Posta
    

    Şifreniz
    



Şifremi Unuttum


Ana Sayfa Site Hakkında İletişim Ziyaretçi Defteri Döküman İndir Makale Ekle Haber Ekle

     Asp.Net - Session State (Oturum Durumu) Özellikleri
     admin     27.01.2013     13:21:05

Session State(Oturum Durumu), Asp.Net sayfalarında her kullanıcı için özel olarak veri saklama ve bu verileri istenildiğinde çağırma amaçlı kullanılan yapıdır. HTTP(Hypertext Transfer Protocol, Hipermetin Aktarma Kuralı), Stateless(Durumsuz) bir protokoldür ve yapılan her yeni istek birbirinden bağımsızdır. Bu durumda sunucu bir önceki istekte ne gibi bilgilerin kullanıldığını veya saklandığını bilemez. Asp.Net ise Session State(Oturum Durumu) özelliği ile aynı tarayıcıdan gelen istekleri tanır ve isteklerin yaşam süreleri dolana kadar gelen istekleri saklar. Session State(Oturum Durumu) tüm Asp.Net uygulamalarında default(varsayılan) olarak gelmektedir.



Session State (Oturum Durumu) Ayarları

Oturum durumu ayarları web.config içinde system.web bölümü altında <sessionState>elementi içinde yapılır.

<sessionState mode="SQLServer" cookieless="true " regenerateExpiredSessionID="true " timeout="30" sqlConnectionString="Data Source=MySqlServer;Integrated Security=SSPI;" stateNetworkTimeout="30"/>

  • Mode : Session değerlerinin nerede depolanacağının belirtilmesini sağlar.
  • Cookieless : SessionID’lerin Cookie’lerde mi yoksa URL içinde mi gömülü olarak sunucu ve istemci arasında kullanılmasının ayarlanmasını sağlar.
  • regenerateExpiredSessionID : Zamanı geçmiş olan SessionID’lerin yeniden oluşturulup oluşturulmayacağını ayarlamak için kullanılır.
  • timeout : Sessionların yaşam süresinin ayarlanmasını sağlar. Dakika cinsinden ayarlanır (örn : 30 dk).
  • sqlConnetionString : Session verilerinin nereye kaydedileceğini gösteren, modun Sql seçilmesi durumunda ayarlanması gereken ve veritabanının yerinin gösterilmesini sağlayan bağlantı cümlesidir.

Ayrıca "Page Directive" bölümlerinde olan "EnableSessionState" ile de o sayfaya özel olarak "Session State" açılabilir, kapatılabilir veya sadece okunabilir duruma getirilebilir.

Zamanı Dolmuş Session(Oturum) Tanımlayıcılarını Yeniden Oluşturmak

Cookieless Session(Çerezsiz Oturum) değerleri yeniden getirilebilir. Bu yüzden istek zamanı bitmiş olan bir SessionID ile istek yapılırsa , yapılan istek aynı SessionID ile devam ettirilir ama bu davranış istenmeyen paylaşımlara sebebiyet verebilir. Eğer bir Cookieless(Çerezsiz) SessionID ölmüşse ve yeni bir tane üretilmemişse, aynı ID çoklu tarayıcı ortamında başka kullanıcıya da verilmiş olabilir ve böylece istenmeyen veri paylaşımı ortaya çıkar. Bu durumdan Cookieless SessionID’nin yeniden üretilmesi sağlanarak kurtulunur. Onun içinde "regenerateExpiredSessionId" özelliğinin "true" yapılması gerekmektedir. Bu sayede zamanı bitip ölmüş olan SessionID yerine başka ve benzersiz bir SessionID değeri üretilmiş olur.

Session Modes (Oturum Türleri)

  • Off (Kapalı)
  • In-proc
  • State Server
  • SQL Server
  • Custom (Özel)

Off (Kapalı)

Oturum (Session) işlemlerinin gerçekleşmediği bölümdür.

<system.web>
  
<sessionState mode="Off" ></sessionState>
</system.web>

Oturum türünün “Off (Kapalı)” olması isteniyorsa, üzerinde çalışılan projenin web.config dosyasında yukarıdaki değişiklikler yapılır.

In-proc (In-process)

Bu tür ASP.Net uygulamalarının varsayılanı olarak atanmış değeridir. In-proc türündeki oturumlarda kullanıcıların oturum bilgileri uygulamanın bulunduğu sunucuların belleklerinde tutulmaktadır. Performansa dayalı Web uygulamaları için uygun bir oturum türüdür ancak uygulamanın bulunduğu sunucunun herhangi bir nedenden dolayı yeniden başlaması durumunda oturumlara ait bilgiler silinmektedir. Bu da In-proc oturum türünün önemli bir dezavantajıdır.

<system.web>
  
<sessionState mode="InProc" ></sessionState>
</system.web>

Oturum türünün “In-proc (In-process)” olması isteniyorsa, web.config dosyasında yukarıdaki değişikliğin gerçekleştirilmesi gerekmektedir.

Avantajları

  • Oturuma ait veriler uygulamanın bulunduğu sunucunun bellekleri üzerinde tutulduğu için bu verilere hızlı bir şekilde ulaşım mümkündür.
  • Bu oturum türünde verileri saklamak için verilerin serileştirilmesine gerek yoktur.
  • Uygulaması kolaydır, View State uygulamalarıyla benzerdir.

Dezavantajları

  • Uygulamanın ya da uygulamanın bulunduğu sunucunun yeniden başlatılması durumunda bütün oturum bilgileri silinir.
  • Oturum bilgileri sunucunun belleklerinde bulunduğu için oturumda bulunan kişi sayısının artması verilere erişim performansını olumsuz etkiler.
  • Web Bahçeleri (Web Garden) – Web Çiftlikleri (Web Farm) uygulamaları için uygun değildir.

State Server (Out-process)

State Server türü, Web uygulamasının bulunduğu sunucudan farklı bir sunucuda bulunur IIS’ten bağımsızdır ve tek başına çalışabilen Windows Uygulamaları kullanır. Bu oturum türü aspnet_state.exe tarafından yönetilir. State Server Web uygulamasının bulunduğu sunucuda da çalışabilir ancak Web uygulamasının çalıştığı ortamdan farklı bir bölgede çalışmaktadır. Böylece uygulamanın yeniden başlatılması durumunda oturum bilgileri korunur. Serileştirme gibi dezavantajları da vardır, oturum sahibi kişinin tekrar oturumu açması durumunda farklı bir süreç işlenir. Bu da bilgiye erişim zorluğuna ve maliyetin artmasına neden olur.

<system.web>
  
<sessionState mode="StateServerstateConnectionString="127.0.0.1:42424"
   timeout="30">
  
</sessionState>
</system.web>

Oturum türünün "State Server (Out-process)" olması için uygulamanın web.config dosyasında yukarıdaki değişiklikler bulunmalıdır.

Avantajları

  • Oturum bilgileri IIS’ten bağımsız tutulur, böylece Web uygulamasında herhangi bir sorun oluşması durumunda kullanıcıların oturum bilgileri sorunsuz bir şekilde saklanır.
  • Web Bahçeleri (Web Garden) – Web Çiftlikleri (Web Farm) uygulamaları için uygundur.

Dezavantajları

  • Serileştirme ve seriyi bozma gibi durumlardan dolayı işlem süreci yavaştır.
  • State Server’ın sürekli açık olması gerekmektedir.

SQL Server

SQL Server, oturum türleri arasında en güvenli ve güvenilebilir olanıdır. Bu oturum tipinde, kullanıcıların oturum bilgileri serileştirilir ve SQL sunucunun veritabanında saklanır. Bu türün ana dezavantajı, oturuma ait bilgilerin depolanması sırasında serileştirme ve seriyi bozma gibi yöntemlerin kullanılmasıyla sunucuya ekstra yük oluşturmasıdır. Web Çiftlikleri (Web Farm) uygulamaları için en uygun türdür.

<system.web>
  
<sessionState mode="SQLServer" timeout="30">
  
</sessionState>
</system.web>

 

Oturum türünün “SQL Server” olması istendiği durumda uygulamanın web.config dosyası yukarıdaki şekilde güncellenmiş olmalıdır.

 

Avantajları

  • Oturum bilgileri IIS’in tekrar başlatılmasından etkilenmez.
  • En güvenilir ve güvenli oturum yönetimine sahiptir.
  • Veriler ortalanarak tutulur, böylece diğer uygulamalar tarafından da bu verilere kolayca erişilebilir.
  • Web Garden (Web Bahçeleri) – Web Farm (Web Çift) uygulamaları için uygundur.

Dezavantajları

  • İşlem süresi uzundur.
  • Tutulan veriler serileştirilirken ve seri bozarken ana uygulamaya yük olur.
  • Oturum bilgileri ana uygulamadan farklı bir ortamda tutulduğu için SQL sunucunun sürekli çalışması ve veri iletişimine hazır halde bulunması gerekmektedir.

Custom(Özel)

SessionIDManager sınıfından kalıtım alarak ve CreateSessionID ve Validate metodlarını override ederek özel SessionID’ler yazılabilir ve bunların doğrulaması yapılabilir. Veya SessionIDManager sınıfını, istenilen sınıfa ISessionIDManager arayüzünden kalıtım almak şartı ile tamamen değiştirilebilir ve özel sınıf oluşturulabilir.
(Kaynak : www.bidb.itu.edu.tr)

Facebook'ta Paylaş    
Diğer ASP.Net İçerikleri       Tüm Yazılar        Ana Sayfa


  =>Soru Sorun veya Yorum Yazın...

İsim Giriniz :
  

  =>Yapılan Yorumlar...