DURUM YÖNETİMİ (STATE MANAGEMENT) Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu



Benzer belgeler
DURUM YÖNETİMİ (STATE MANAGEMENT) Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

REQUEST QUERY STRING. Sayfalar: default.aspx ve sorgu_sayfasi.aspx. default.aspx sayfası: sorgu_sayfasi.aspx sayfası:

WEB FORMLARI. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 8 Durum Yönetimi

MASTER PAGE SAYFASI KULLANIMI

State Yönetimi. Bir web sayfası ile sunucu arasındaki etkileşim ;

ASP.NET ile Bir Web Sitesi Oluşturma

GEÇERLİLİK KONTROLLERİ VALİDATİON CONTROLS. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

Web sayfalarında sayfa ile server arasındaki iletişim, HTTP protokolü ile gerçekleştirilir. Bu protokolde sunucuya gönderdiğimiz bilgiler, kendi

ASP.NET SAYFA DETAYLARI. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

Response : Sunucunun istemciye veri yollamasını

PROGRAMLAMA DERSİ 1. İNTERNET

Üst Düzey Programlama

WEB FORM ELEMANLARI. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

Durum Yönetimi. Olan sayfalar ekleyelim. BasitSayac.aspx

ASP.NET TEMELLERİ. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 3 Asp.NET Doğrulama Kontrolleri

İçindekiler Tablosu Talep Destek Yönetim Sistemi Programı...3

Programlama Yazılımı ile Web Sitesi Oluşturma

24 Kasım 2011 / Perşembe

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 9 Tema Kullanımı

SESSİON KULLANIMI. .Aşağıdaki Kodları da SessionDevam.asp adıyla kaydedelim. Language=VBScript Codepage="1254"%>

1 Aralık 2011 / Perşembe

8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

İNTERNET PROGRAMCILIĞI HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

Üst Düzey Programlama

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR

HESAP MAKİNASI YAPIMI

Oluşturmak istediğimiz OU ye bir isim veriyoruz. Name kısmına ISTANBUL yazıyoruz,

TSOFT FACEBOOK STORE UYGULAMASI

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Üst Düzey Programlama

Başlangıç; Sayfa 1. Sanal pos tanımlandığında üye numarası admin kullanıcı adı parolası ile Garanti Bankasından tarafınıza iletilecektir.

Outlook ta Mail Arama

ÇANKIRI KARATEKİN ÜNİVERSİTESİ ZİMBRA E-POSTA SİSTEMİ KULLANICI DOKÜMANI

Öğr. Gör. Serkan AKSU 1

GRAFİK TASARIM. ACTION SCRIPT 3.0 Ders1 YARD. DOÇ. DR. MEHTAP YALÇINKAYA

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

4. Bağlantı (Köprü) Oluşturma

WEB KULLANICI KONTROLLERİ ve ANASAYFA KULLANMA(Master Page)

9. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Mikro Ayarları. Mikro Programının kurulu olduğu veritabanı ve web servisi için bağlantı ayarlarının yapıldığı menüdür.

Testimizin ilk sayfası: bu kısımda kullanıcıdan adını girmesini ve teste başlamasını istiyoruz.

Kurumsal Grup E-Posta Eğitim Dokümanı

Design Machin e Erişim Rehberi

Üst Düzey Programlama

Sunum İçeriği. Programlamaya Giriş

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

AKINSOFT WOLVOX e-defter. Yardım Dosyası

TÜRKİYE NOTERLER BİRLİĞİ

Basit bir web uygulaması

App İnventor-Pide Sipariş Uygulaması

Avrasya Üniversitesi. Tuncay AYDEMİR

Cookie s. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 17 Ara 2013

ÇANKAYA ÜNİVERSİTESİ WEBMAIL KULLANIM KLAVUZU

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Güvenlik Java ve Web Uygulama Güvenliği

1. Mutabakat.zip dosyası açılır. 2. Mutabakat klasörü içindeki Mutabakat.exe dosyası çalıştırılır.

UZAKTAN EĞİTİM YÖNETİM SİSTEMİ (MMYO)EĞİTMEN YARDIM KILAVUZU

Üst Düzey Programlama

EBA İŞ SÜREÇLERİ TEDARİKÇİ ÖDEME TALEBİ Ver 1.0

2. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

NECMETTİN ERBAKAN ÜNİVERSİTESİ E-POSTA YARDIM BELGESİ

İnternet Programcılığı

HSancak Nesne Tabanlı Programlama I Ders Notları

Sol tarafta yer alan Click here to activate your account linkini seçiniz.

Genel Programlama II

U y g u l a m a A i l e s i (Abakus 360, T-Panel, T-CRM) Tarayıcı Ayarları. IPera İletişim Teknolojileri

NESNEYE YÖNELİK PROGRAMLAMA

SM 100 Terazi Ayarları. Digi SM 100. SM 100 Terazi Ayarları

1 Organizasyon Tanımlama

ORDU ÜNİVERSİTESİ E-POSTA KULLANIM ÖZELLİKLERİ

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 4 MasterPage

INPUTBOX KULLANIMI. Komut Düğmesine uygulanan algoritma örneği

Üst Düzey Programlama

Başlangıç Ayarları.

UZAKTAN EĞİTİM SİSTEMİ ÖĞRENCİ EKRANLARI KULLANIM KILAVUZU

Android Ders Notları

SAYFALAR ARASI LİNK VERME VE BİLGİ TAŞIMA YÖNTEMLERİ

ZİRVEDRİVEWEB YAZILIMI KULLANIM KILAVUZU

WEB PROGRAMLAMA. DERS NOTLARI / JavaScript e Giriş YARD. DOÇ. DR. MEHTAP YALÇINKAYA

Üst Düzey Programlama

Vega Ayarları. Vega Programının kurulu olduğu veritabanı ve web servisi için bağlantı ayarlarının yapıldığı menüdür.

Enlil programını açtığımızda karşımıza gelen ilk ekrandır.bu ekranda özel tanımlanmış kullanıcı kodu ve parola ile programa giriş sağlanmaktadır.

Yeni bir kitap kaydı girişi için ekran kontrollerinin açılmasını sağlar. Klavyenizin F3 tuşuna basarakta bu işlemi gerçekleştirebilirsiniz.

T.C. istanbul ÜNiVERSiTESi ÖĞRENCi BiLGi SiSTEMi. ÖĞRETiM ELEMANI KULLANIM KILAVUZU

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

PERKON PDKS Kurulum ve hızlı başlangıç rehberi

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

Yönetim Anasayfa : Tanımlar : Parametreler : Seo yolu izlenerek dinamik seo modülüne erişebilirsiniz.

Dinamik Kodlama. [X] [X] Yeni Fonksiyon

RUT-GENEL 05: DataRut Genel-Uygulama Tablo Özelleştirmeleri

01 HAZİRAN 2015 İZİBİZEDEFTER SON KULLANICI KLAVUZU

Tavsiye Edilen Önhazırlık Temel SQL Server 2000 bilgisi edinmek.

CELAL BAYAR ÜNİVERSİTESİ KÜTÜPHANE VERİTABANLARINA ÜNİVERSİTE DIŞINDAN ERİŞİM

General myzyxel.com myzyxel.com Servis Yönetim Servis Name Content Filter Name Password myzyxel.com Submit Redirected URL

ÜSKÜDAR ÜNVERSİTESİ EBYS KULLANIM KILAVUZU

Transkript:

DURUM YÖNETİMİ (STATE MANAGEMENT) Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

Durum Yönetimi Geleneksel bir HTML sayfasında oluşturulan form elemanlarında, örneğin bir TextBox doldurup, Gönder butonuna tıklandığında, o TextBox kontrolünün içi boşaltılır.(sayfa gönderilmeden önceki veriler muhafaza edilmiyor) Ancak belki biz o doldurduğumuz veri ile ilgili işlem yapmaya devam edecektik ve tekrar doldurmak zorundayız. Oysa ASP.NET ile bunun gibi bir durum söz konusu değildir. ASP.NET çeşitli teknikler sunarak, kullanıcının girmiş olduğu verilerin sayfa postback olduğunda korunmasını sağlar. Buna sayfadaki mevcut durumu koruma (Maintain State) denir.

Mevcut Durumu Koruma Örnek sayfada textbox a gireceğimiz isim hem label kontrolünde hem de response.write tarafından gösterilecek. Şimdi ismimizi girip Gönder butonuna tıklayalım:

Mevcut Durumu Koruma Burada dikkat etmemiz gereken ilk nokta Gönder butonuna basıp sayfayı gönderdiğimiz halde girilen isim verisi halen TextBox da duruyor Kodlarımızda Textbox nesnesinin ontextchanged olayını yani metnin değişmesi durumunu ifade eden bildirimi kullandık Dolayısıyla isim girdisi değişmeden gönder butonuna basıldığında sunucu herhangi bir olay gerçekleşmediğini görüp olay yordamını çalıştırmaz. Son girilen ismi hiç değiştirmeden gönder butonuna tıkladığınızda sadece Label kontrolündeki mesaj görünecektir. Olay yordamı işletilmiyor. Çünkü eğer işletilmiş olsa response.write dan gelen mesaj da gözükmeliydi. Ancak sayfadaki Textbox ve Label girdisi korunmuş. İşte mevcut durumu koruma tam anlamıyla budur.. Sunucu postalama anındaki verileri korumuş ve geri postalama da (Post Back) hepsini yerli yerine koymuş

Mevcut Durumu Koruma Bu durum, web programlama da geliştiricinin ekstra kod yazmadan, kullanıcının girdiği verileri koruması anlamında bir ilk olup, programcı ve kullanıcıya büyük kolaylık sağlamaktadır. Yukarıdaki örneğimizde TextBox kontrolüne girilen isimde bir değişiklik yapıp tekrar gönder butonuna tıklayalım Bu defa hem label kontrolünden hem de response.write dan gelen mesaj görüntülenecektir. Yani sunucu olayın gerçekleştiğini algılamış ve yordamı çalıştırmıştır. Peki sunucu bu değişimi veya değişmezliği nasıl algılamaktadır?

VIEWSTATE Sayfa ilk defa talep edildiğinde oluşturulan ve sayfanın kaynak kodlarına eklenen; sayfa ve web kontrollerine ait bütün değerleri tek bir string olarak toplayıp, kodlayarak içerisinde barındıran gizli bir form elemanıdır. ViewState yalnızca sunucu taraflı formlarda oluşturulur. Diğer bir ifade ile form tanımlamanız <form runat=server> şeklinde olmalıdır. ViewState değerleri, ziyaretçinin bilgisayarında saklanır ve sunucuda hiçbir yer kaplamazlar.

VIEWSTATE İN YÖNETİMİ ViewState yönetilebilir bir özelliktir. Diğer bir ifadeyle ViewState değerine sayfa ve kontrol verilerinin eklenip eklenmeyeceğine müdahale edebilirsiniz. Bunu 3 şekilde yapabiliriz: 1. Uygulama Kapsamında: Bunun için web.config dosyasında Şeklinde bir ifadeye yer vermeliyiz. Böylece web uygulamamızdaki bütün sayfalarda ViewState e durum bilgisi değerleri eklenmesi engellenir. 2. Sayfa Kapsamında Sayfa başlık bildirimine koyacağımız şeklindeki bir ifadeyle, sadece o sayfa ve bütün kontrolleri için durum bilgisi değerleri ViewState e eklenmez. 3. Kontrol Kapsamında <asp:kontrol_ismi EnableViewState="false".../> şeklinde bir ifade ile sadece belirttiğimiz kontrolün durum bilgisinin ViewState değerine eklenmesini engelleriz

VIEWSTATE I KULLANMAMAK ViewState i (durum bilgisini) neden kullanmak istemeyebiliriz? Bunun 3 temel nedeni olabilir: Sayfa kendisine geri dönüşüm yapmayacak (PostBack) olabilir. Bu durumda kontrol elemanlarında herhangi bir kıyaslama gereği de yoktur. Dolayısıyla ViewState kullanmak gereksizdir. Kontrol elemanlarında herhangi bir olay yakalama söz konusu değilse, durum bilgisini tutmanın bir anlamı yoktur. Kontrol elemanı dinamik veri girilebilir özellikte değilse veya bir veri kaynağına bağlıysa durum bilgini tutmanın bir anlamı yoktur. Gerekmediği durumlarda durum bilginin tutulması engellenmeli, sayfa boyutu gereksiz yere arttırılmamalıdır

STATEBAG Bazı durumlarda programcı, sayfadaki herhangi bir durumu muhafaza etmek ve saklamak amacıyla ViewState mekanizmasını kendi girdileri için kullanabilir. Bu durumda StateBag denilen ve form postalandığı zamanki değerleri tutan bir nesne kullanılır. Kullanıcının girmediği, düzenlenmiş bilgileri saklamak için kullanılan bir nesnedir. İşleyişi aynen ViewState sisteminde olduğu gibidir. Yani bunlarda sayfadaki mevcut ViewState gizli form elemanına diğer kontrollerden gelen veriler gibi kodlanmış veriler ekler. Bu değişkenlere ViewState Değişkenleri denir ve yazımı aşağıdaki gibidir: ViewState ["degisken_ismi"] = değer

STATEBAG Sayfamıza bir label kontrolü ve bir buton ekleyerek Sayfanın yüklenmesi olayı ile butonun tıklanması olayında aşağıda verilen metotların çalıştırılmasını sağlayalım :

STATEBAG Bu örnekte sayfanın ilk defa yüklenip yüklenmediği kontrol ediliyor (Page.IsPostBack ile). Eğer ilk defa yükleniyorsa saat isimli ViewState değişkenine o anki zaman değeri atanıyor. Gönder butonuna tıkladığımız zaman, sayfa PostBack yapacak ve bu sefer koşul doğrulanmayacak ve dolayısıyla saat ViewState ine herhangi bir değer atanmayacaktır. Ancak bu ViewState değişkeni halihazırda sayfa yüklendiği zamanki değeri tutmaktadır.

Durum Yönetimi ASP.NET ile hem istemci hem de sunucu taraflı durum yönetimini başarılı bir şekilde yapabiliriz. Durum yönetimi araçları aşağıdaki gibi sıralanabilir: İstemci Taraflı: ViewState QueryString Cookie Sunucu Taraflı SessionState ApplicationState

QUERYSTRING QueryString sayfalar arası değer ya da değerleri taşıma işlemini gerçekleştirir. Bu değerler URL üzerinden taşınmaktadır. Diğer bir ifadeyle Browser'dan sunucuya veri aktarır. QueryString ler? ile başlar ve birbirlerinden & işareti ile ayrılırlar. http://deneme.com/ogrenci.aspx?isim=emine&soyisim=tuncel QueryString ile bir ya da yukarıdaki örnekte de olduğu gibi birden fazla verinin taşınması sağlanabilir. Taşınacak veriler elle girilebileceği gibi veritabanı gibi başka bir kaynaktan da alınabilir.

ASP.NET ile QueryString Oluşturulması Veri Gönderimi QueryString oluştururken Response nesnesi kullanılır. Response nesnesi bir formdan veya bir sayfadan başka bir sayfaya veri aktarımında oldukça kullanışlıdır. Özellikle Redirect metodu ile kullanılır. Redirect, farklı bir sayfaya yönlendirme yapmak amacıyla kullanılan Response nesnesinin bir metodudur. Response.Redirect("default.aspx") Aktarmak istenen veri özel bir bildirimle yazılır.

ASP.NET ile QueryString Oluşturulması Veri Gönderimi İki sayfamız olsun. Birisi default.aspx, diğeri veriyi göndereceğimiz ogrenci.aspx sayfası Veri göndermenin 2 yöntemi vardır: - Veriyi direkt olarak göndermek; Anasayfada (Default.aspx) bir butona tıklandığında isim:emine, soyisim:tuncel verilerini ogrenci.aspx sayfasına gönderelim

ASP.NET ile QueryString Oluşturulması Veri Gönderimi - Veriyi kontrolden alarak göndermek; Ana sayfa da (Default.aspx) bir butona tıklandığında TextBox1 ve TextBox2 kontrollerinde bulunan değerlerin ogrenci.aspx sayfasına taşınmasını sağlayalım

ASP.NET ile Gelen QueryString in İstenmesi Veri Alımı Querystring in istenmesi için kullanılan metot Request.QueryString() dir Bir önceki örneğimizden ana sayfadan butona tıklandığında isim ve soy isim değişkenlerine ait değerleri ögrenci.aspx sayfasına aktardık. Şimdi ogrenci.aspx sayfasından bu verileri elde edelim: Bir butonumuz olsun ve butona tıklandığında isim değişkeninin değerini göstersin

ASP.NET ile Cross-Page Posting (Başka Sayfa Kontrollerini Elde Etme) Bir önceki sayfadan istenilen değerlere ulaşmak için Cross Posting kullanılır. Böylelikle sayfalar arası devamlılık ve durum yönetimi sağlanmış olur. CrossPagePosting.aspx sayfamızı oluşturalım: Bu sayfada bir Label, Textbox ve Buton kontrolü bulunmaktadır. Buton kontrolünün PostBackUrl özelliği ile CrossPageCevap.aspx sayfasına yönlendirme yapıyoruz

ASP.NET ile Cross-Page Posting (Başka Sayfa Kontrollerini Elde Etme) CrossPageCevap.aspx sayfasının Page_Load olayına aşağıda verilen kodları yazalım PreviousPage.FindControl ifadesiyle bir önceki sayfada id si txtad olan TextBox kontrolünü elde edip tip dönüşümü yapıyoruz. Diğer bir ifadeyle yeni sayfamıza elde ettiğimiz kontrolün bir TextBox elemanı olduğunu bildiriyoruz. Ve sonrasında onun metin (text) değerini elde ediyoruz. PreviousPage.Title ifadesi ile de bir önceki sayfada title etiketleri arasında yazan ifadeyi elde ediyoruz

ASP.NET İLE COOKİES HTTPCOOKİE NESNESİ ASP.NET de oturum boyunca, yani kullanıcının sunucuya bağlı olduğu sürece (hatta ileriki bir zamanda bağlandığı durum için) kullanabileceğimiz özel değişken tanımlamaları vardır. Bunlar Cookie ve Session değişkenleridir. Cookie, kullanıcının bilgisayarında tutulan ve sunucunun kullanıcılar hakkında bir takım bilgiler elde edebildiği değerleri saklayan küçük dosyalardır. Bu değerler, sayfadan sayfaya geçerken veya ileriki bir zamanda kullanılmak için, kullanıcının Password, kullanıcı ismi, tercihleri gibi bir takım özel bilgileri olabilir. Bu bilgiler browser açık olduğu sürece veya bizim daha önceden belirlediğimiz zaman süresince Cookie dosyalarında saklanır.

ASP.NET İLE COOKİES HTTPCOOKİE NESNESİ Bu Cookie dosyaları sayesinde ileriki bir zaman da bile kullanıcının tercihlerini bilebilir ve sayfalarımızı buna göre düzenleyebiliriz. Cookie' ler web sitesi ile kullanıcısı arasındaki bağlantıyı sürekli kılar ve kullanıcı her seferinde aynı bilgileri girmek zorunda kalmaz. Örneğin daha önceden alış-veriş yaptığınız bir siteye uzun bir zaman sonra tekrar girdiğinizde, site sizi tanır(isminiz ve tercihlerinizle hitap eder) ve buna göre bir sayfa oluşturur. İşte bu Cookie 'ler sayesinde olur.

ASP.NET İLE COOKİES HTTPCOOKİE NESNESİ HttpCookie nesnesi, Cookie lerin oluşturulması, oluşturulmuş Cookie lere erişimi kısacası Cookie' ler ile ilgili tüm işlemlerin yapılmasını sağlar. Cookie tanımlaması yaşam sürelerine göre ikiye ayrılır. 1- Kalıcı Olmayan Cookie: Cookie'nin oturum süresince yani tarayıcının kapanmasına kadar geçen zaman boyunca yaşamasını sağlayabiliriz. 2- Kalıcı Cookie: Cookie'nin oturum sonlansa bile yaşamasını sağlayabiliriz. Böylece girilen değerler günlerce Cookie olarak saklanabilir..

Cookie lerin Oluşturulması Cookie ler temel olarak iki şekilde oluşturulur. Birinci yöntemde her bir değer için ayrı bir Cookie oluşturulurken ikinci yöntemde bir Cookie ismi altında farklı anahtarlar ile farklı değerdeki Cookie ler oluşturulabilir. Bir Cookie'nin oluşturulması aşağıdaki gibi yapılır: Bu bildirim ile adı renk olan ve Kırmızı değerini tutan bir Cookie oluşturulmuştur. Artık renk Cookie si oturum boyunca (browser kapatılıncaya kadar) bu değerde olacaktır. Oluşturulan bir Cookie'nin değerinin tekrar elde edilmesi ise aşağıdaki şekilde yapılacaktır: Bu bildirim ile renk adındaki Cookie değeri elde edilip istenen bir yerde kullanılabilir.

Cookie lerin Oluşturulması Örnek olarak bir sayfada Cookie oluşturup, elde ettiğimiz bu Cookie değerini farklı bir sayfada kullanalım: cookieolustur.aspx sayfasını aşağıdaki gibi hazırlayın Giriş butonunun Click olayına aşağıdaki kodları yazalım:

Cookie lerin Oluşturulması Link butonun Click olayına aşağıdaki kodları yazalım: Not: Response nesnesinin Redirect metodu belirtilen sayfaya yönlendirme yapmak için kullanılır

Cookie lerin Oluşturulması cookiegoster.aspx sayfasını aşağıdaki gibi hazırlayın Cookie Değerlerini Elde Et butonunun click olayına aşağıdaki kodları yazalım:

Kalıcı Cookie Cookie ler aksi belirtilmedikçe, oturum süresince geçerlidir. Bunun anlamı browser kapatılınca silinir ve hiçbir geçerliliği kalmaz. Cookie lerin geçerlilik süresini Expires yöntemi ile yönetmek mümkündür Response.Cookies["renk"].Expires=DateTime.Parse("22/02/2013"); bildirimi ile renk adındaki Cookie nin belirtilen tarihe kadar kullanıcının bilgisayarında saklanmasını sağlayabiliriz Expires tanımlamasını göreceli bir tarih vererek de yapabilirsiniz: Response.Cookies["renk"].Expires = DateTime.Now.AddMonths(1); Bildirimi ile oluşturulan Cookie 1 ay ziyaretçinin bilgisayarında saklanır, daha sonra silinir.

Cookie lerde Anahtar Kullanımı Cookie oluşturmanın diğer yolu aynı Cookie ismi altında farklı anahtarlar ile farklı değerler tutan Cookie oluşturmaktır Bu ifadenin yazılışı aşağıdaki gibidir: Response.Cookies["Cookie ismi"]["anahtar isim"] = "değer" Response.Cookies["ziyaretci"]["parola"] = "12345"; Ziyaretçi isimli Cookie miz parola anahtar ismi ile oluşturuluyor, bu yöntemde ziyaretçi adı ile oluşturulan Cookie ye başka değerler de atamak mümkün Yukarıda oluşturulan Cookie nin elde edilmesi: Request.Cookies["ziyaretci"]["parola"]; Bildirimi ile olur. Anahtar isimlendirme ile oluşturulan Cookie ler anahtar ismi ve değeri ile bir dizi oluştururlar.

Cookie lerde Anahtar Kullanımı Örnek olarak yine iki sayfamız olsun. İlk sayfada anahtar kullanımı ile cookie leri oluşturup, diğer sayfada oluşturduğumuz Cookie değerlerini elde edelim. CookieOlustur_2.aspx sayfasında Page_Load yordamı altına aşağıdaki kodları yazalım: CookieGoster_2.aspx sayfasında Page_Load yordamı altına aşağıdaki kodları yazalım:

ASP.NET ile SESSION Session, bir web sunucusuna bağlandığımızda bize verilen bir kimliktir. Session kelime anlamı olarak oturum demektir ve Session değişkenlerinin ömürleri de bir oturum süresindedir. Bir oturum ise, browserın açılıp kapanmasına kadar geçen süredir. İstemci sunucuya bağlandığı zaman, sunucu, sadece o istemciye özel bir Session ID numarası atar ve bunu bir Cookie de saklar Böylece bir oturum boyunca sadece o kullanıcıya özel değerleri saklar ve elde eder. Örnek olarak kullanıcı adınız ve şifrenizle girdiğiniz bir web uygulamasında, sayfalar arasında gezinmeniz, yeni pencere açmanız gibi durumlarda SessionID değeri ile sunucu tarafından tanınırsınız ve doğru sayfalara erişebilirsiniz.

ASP.NET ile SESSION Sunucu tarafından istemciye verilen bu SessionID değerine erişmek mümkündür Bunun için ASP.NET sayfanızda Session. SessionID bildirimini yazmanız yeterlidir. Sayfayı yenilemeniz ya da farklı bir pencere açmanız durumunda bu ID değişmeyecektir. Çünkü oturumunuz sonlanmamıştır. Ancak tarayıcınızı kapatıp geri açtığınızda oturumunuz sonlanacağı için yeni bir SessionID değeriyle karışılacaksınız.

ASP.NET ile SESSION Bir Session oluşturmak için aşağıdaki bildirimlerden biri kullanılır: Session.Add(değişken_ismi, değer); veya Session["değişken_ismi"] = değer; Oluşturulan session a Session["değişken_ismi"] yazarak erişebilirsiniz.

ASP.NET ile SESSION Örnek olarak 3 sayfamız olsun. Default.aspx, sayfa2.aspx ve sayfa3.aspx. Default.aspx sayfasını aşağıdaki gibi oluşturalım: Default.aspx sayfasında Page_Load yordamı altına aşağıdaki kodları yazalım: Default.aspx sayfasında Session a Ekle butonunun click olayı altına aşağıdaki kodları yazalım:

ASP.NET ile SESSION sayfa2.aspx ve sayfa3.aspx sayfalarında ise Page_Load yordamı altında oluşturulan session değerini almak için gereken aşağıdaki kodları yazalım Sayfalar arasında dolaştığınızda ya da sayfayı yinelediğinizde size atanmış olan session ID nin değişmediğini göreceksiniz. Bu session ID ancak browser ı kapatıp tekrar sayfayı yüklediğinizde yenilenecektir.

ASP.NET ile SESSION Session lar oturum sonlandığında iptal edilirler ve bir oturum 2 şekilde sonlanabilir Kullanıcı tarafından browser kapatıldığında ya da tanımlanmış bir süre aşıldığında Diyelim ki bir kullanıcı browser ı açtı, sayfayı yükledi ve uzunca bir süre sayfada bir eylem gerçekleştirmedi. Bu durumda belirli bir süre sonra (bu süre hiçbir şey belirtilmemiş ise 20 dakikadır) oturum kendiliğinden sonlandırılır (timeout) Oturumun sonlanacağı süre yani Timeout süresi değiştirilebilir. Bunun için aşağıdaki şekilde bir bildirim yapılmalıdır: Session.Timeout = dakika_degeri; Session nesnesini aniden sonlandırmak için ise Abondan metodu kullanılır. Session.Abandon();

ASP.NET ile SESSION Varsayılanda 20 dakika olan bu timeout süresini arttırmamak için bir çok neden vardır: Sunucuya kullanıcılar bağlandığında her biri için ayrı bir session nesnesi ve takibi oluşturulur, başka bir ifadeyle, her bir kullanıcı için sunucunun hafızasında bir yer işgal edilir. Kullanıcı 1 dk. bile sitede kalsa, geri kalan 19 dk. boyunca bu kullanıcı için session nesnesi sunucuda tutulur Biz bu değeri ne kadar arttırırsak süre o kadar uzar ve sunucu üzerindeki yük artar Bunun yanında e-ticaret sitelerinde, alışveriş esnasında, kullanıcı bilgilerini saklayan Session değişkenlerinin zamanını çok kısa tutmak veri kaybına neden olabilir. Session zamanını ayarlarken sunucunuzun yük durumunu, sitenizin ve ziyaretçilerinizin karakteristiğini göz önünde bulundurmalısınız. Ancak birçok durum için 20 dk. ideal bir süredir.

ASP.NET ile SESSION Varsayılanda 20 dakika olan bu timeout süresini arttırmamak için bir çok neden vardır: Sunucuya kullanıcılar bağlandığında her biri için ayrı bir session nesnesi ve takibi oluşturulur, başka bir ifadeyle, her bir kullanıcı için sunucunun hafızasında bir yer işgal edilir. Kullanıcı 1 dk. bile sitede kalsa, geri kalan 19 dk. boyunca bu kullanıcı için session nesnesi sunucuda tutulur Biz bu değeri ne kadar arttırırsak süre o kadar uzar ve sunucu üzerindeki yük artar Bunun yanında e-ticaret sitelerinde, alışveriş esnasında, kullanıcı bilgilerini saklayan Session değişkenlerinin zamanını çok kısa tutmak veri kaybına neden olabilir. Session zamanını ayarlarken sunucunuzun yük durumunu, sitenizin ve ziyaretçilerinizin karakteristiğini göz önünde bulundurmalısınız. Ancak birçok durum için 20 dk. ideal bir süredir.

COOKİE siz SESSION KULLANIMI Sunucu tarafından ziyaretçilere atanan SessionID ler geçici cooie dosyalarında saklanır. Bazı istemci tarayıcılar Cookie desteğine sahip değildir ve ya bu özellikleri bilerek kapatılmıştır. Peki böyle bir durumda istemci bilgisayar kendisi için sunucuda açılan oturum ile nasıl eşleştirilir? Bu sorun, ASP.NET_SessionId değerinin site içinde hareket edilen sayfaların linklerine eklenerek çözülmüştür. Asp.Net bunu bizim için otomatik olarak yapmaktadır. Tek yapmamız gereken web.config dosyasında sessionstate elemanında, Cookieless özelliğine true değerini atamaktır. Eğer örneğimizi bu haliyle denersek sayfalar arası gezinirken Session_ID bilgisinin otomatik olarak URL bilginin önüne eklendiğini görürüz

ASP.NET ile APPLICATION STATE Application, ziyaretçiden ziyaretçiye değişmeyen, her ziyaretçi için geçerli olan değişkenlerdir. Herhangi bir ziyaretçi Application değişkeninin değerini 1 arttırıp 10 yaptığında, artık bu değer o sitenin tüm kullanıcıları için 10 dur

ASP.NET ile APPLICATION STATE Application State Oluşturma: Application State Değeri Alma: Application State Silme: Oluşturmuş olduğumuz Application State'ler Sunucu taraflı saklandığı için Sunucumuz üzerinde yük oluşturacaktır. Bu yüzden kullanmaya ihtiyacımız olmadığı durumlarda Application State'leri silmemiz gerekir. Application State Tamamını Silme:

ASP.NET ile APPLICATION STATE Application State lerin kullanımı hakkında en iyi örneklerden biri sitedeki online ziyaretçi sayısını hesaplama uygulamasıdır. Oturum yönetiminde işimize yarayacak iki olay vardır. Session_Start ve Session_End olayları. Bir istemci bir web sunucusunda bir oturum başlattığında uygulamaya ait global.asax dosyasında yer alan Session_Start olayı çalışır. Oturum herhangi bir neden ile sonlandığında ise yine global.asax dosyasındaki Session_End olayı çalışır. Bu olaylar yardımıyla, uygulamanızda oturum halinde bulunan kullanıcı sayısını bir başka deyişle sayfadaki ziyaretçi sayısını öğrenebilirsiniz. Sitemize giren her kullanıcı Global.asax içindeki SessionStart'ı çalıştırmış olur ve sitemizden çıkan her kişide Session_End'i çalıştırmış olur. Biz Session_Start'a gelen her kullanıcı için Online Ziyaretçi sayımızı 1 artıracağız. Session_End'e gelen her kullanıcı için ise Online Ziyaretçi sayımızı 1 azaltacağız. Böylece Online Ziyaretçi sayımızı güncel olarak tutmuş olacağız.

ASP.NET ile APPLICATION STATE Öncelikle aşağıda verilen yolu izleyerek global.asax dosyasını sitemize ekleyelim:

ASP.NET ile APPLICATION STATE global.asax dosyasında aşağıda verilen tanımlamaları yapalım: Uygulamanın başladığını ifade eden Application_Start() olayının altında online ziyaretçi sayımızı tutacak bir application nesnesi tanımlayıp 0 değerini atıyoruz. Uygulamanın sonlandığını ifade eden Application_End() olayının altında online ziyaretçi sayısı için tanımlamış olduğumuz application nesnesini siliyoruz

ASP.NET ile APPLICATION STATE Yeni bir oturumun başladığını ifade eden Session_Start() olayının altında eğer online ziyaretçi sayısı olarak isimlendirdiğimiz Application nesnesinin değeri 0 ise yani ilk kez oturum açılıyor ise Application değerini 1 yapıyoruz. Eğer ilk kez oturum açılmıyor ise var olan değeri 1 arttırıyoruz.

ASP.NET ile APPLICATION STATE Var olan bir oturumun sonlandığını ifade eden Session_End() olayının altında Application nesnesi içinde saklanan değeri 1 azaltıyoruz. Kodda dikkat ederseniz Application nesnesinin değerini deger isimli değişkene alırken (int) tür dönüştürme operatörünü kullandık. Bunun sebebi, Application nesnesininde Session nesnesi gibi verileri object tipinde saklıyor olmasıdır. Dolayısıyla Session veya Application nesnelerinin değerlerini okurken uygun tür dönüşümlerini açıkça yapmamız gerekmektedir.

ASP.NET ile APPLICATION STATE Bu şekilde Online Ziyaretçi sayımız bizim için sürekli olarak hesaplanacaktır. Burada oluşturduğumuz Application["onlineziyaretcisayisi"] nesnemizi istediğimiz bir sayfada kullanabilir ve görüntüleyebiliriz. Örneğin application.aspx adında bir sayfa açıp sayfanın Page_Load yordamı altında yapacağımız aşağıdaki tanımlama Label kontrolünde online ziyaretçi sayısını gösterecektir. Her sayfada görünmesini istiyorsanız MasterPage'iniz içinde kullanabilirsiniz.

KAYNAK C# ile ASP.NET Zafer Demirkol