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ı:

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

WEB FORMLARI. Öğ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 8 Durum Yönetimi

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

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

Response : Sunucunun istemciye veri yollamasını

PROGRAMLAMA DERSİ 1. İNTERNET

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

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

MASTER PAGE SAYFASI KULLANIMI

Üst Düzey Programlama

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

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

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

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

Üst Düzey Programlama

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.

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

24 Kasım 2011 / Perşembe

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

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

1 Aralık 2011 / Perşembe

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

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

HESAP MAKİNASI YAPIMI

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

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

Genel Programlama II

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

WEB KULLANICI KONTROLLERİ ve ANASAYFA KULLANMA(Master Page)

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

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

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

Öğr. Gör. Serkan AKSU 1

App İnventor-Pide Sipariş Uygulaması

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

Basit bir web uygulaması

NESNEYE YÖNELİK PROGRAMLAMA

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

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

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

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

Sunum İçeriği. Programlamaya Giriş

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

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

HSancak Nesne Tabanlı Programlama I Ders Notları

Üst Düzey Programlama

TSOFT FACEBOOK STORE UYGULAMASI

Üst Düzey Programlama

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

Design Machin e Erişim Rehberi

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

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

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

Üst Düzey Programlama

7. Çerçeveler. Bu bölümü bitirdiğinizde,

Android Ders Notları

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

1) İlk olarak oluşturduğumuz filtre adı yazılır. (örneğin tatil mesajı, taşı vb gibi.) 2) Sonra filtre için kural belirlenir.

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

Dinamik Kodlama. [X] [X] Yeni Fonksiyon

AKINSOFT E-Mutabakat. Yardım Dosyası

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

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

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

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011

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.

MUĞLA SITKI KOÇMAN ÜNĠVERSĠTESĠ. BĠLGĠ ĠġLEM DAĠRE BAġKANLIĞI. AKADEMĠK PERSONEL KĠġĠSEL WEB SAYFASI KULLANIM KILAVUZU MUKWEB ĠÇĠNDEKĠLER TABLOSU

VKV Koç Özel İlkokulu, Ortaokulu ve Lisesi. K12Net Veli Yardım Kılavuzu

İçindekiler ADIM 1 : Üye Olma... 2 ADIM 2 : Giriş Yap ve Hatırlatma Sayfaları... 3 ADIM 3: Üye Girişi yapıldıktan sonra yapabileceğiniz işlemler...

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

Outlook ta Mail Arama

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

Kullanım Kılavuzu Milli Eğitim Bakanlığı 2010

AKINSOFT WOLVOX e-defter. Yardım Dosyası

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

Bu classı biraz açıklamak gerekirse, tam olarak şu işleri yapıyor.

B2B BAYİ PANELİ KULLANIMI

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.

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

ZİRVEDRİVEWEB YAZILIMI KULLANIM KILAVUZU

MEB E-Posta Hizmetleri ve Outlook Programı

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

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.

Üst Düzey Programlama

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

İnternet Programcılığı

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

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

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

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

Raptadmin 1.x.x Sürümleri için Kullanım Klavuzu

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

MEB (K12) e-posta Sistemi Kullanımı

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 Bir kullanıcı bir web sunucusundan herhangi bir sayfa talep ettiğinde, web sunucusu bu kullanıcı için kendi üzerine bir oturum başlatır. Session nesneleri ile kullanıcıya ait olan bu oturum boyunca sayfalar arasında bilgi taşıma işlemini gerçekleştirebiliriz. Session kullanımına verilebilecek en güzel örnek, kullanıcıların alış veriş sepetleri ile birlikte site içerisindeki sayfalar boyunca gezinebilmeleridir. Burada temel fikir kullanıcının sahip olduğu sepete ait fikirleri site içerisinde yer alan sayfalar boyunca taşıyabilmektir. İşte bunun gibi kullanıcıya ait bir takım bilgileri oturum boyunca saklamak için session nesnelerini kullanabiliriz.

ASP.NET ile SESSION Oturum aşağıdaki nedenlerden dolayı sonlanabilir: 1. Oturumun zaman aşımına uğraması (timeout) : Varsayılan olarak sunucu üzerinde açılan her oturum 20 dakikalık zaman aşımı süresine sahiptir. 2. Kullanıcının tarayıcı penceresini kapatması veya sayfaya yeni bir tarayıcı penceresi açarak ulaşması 3. Oturum kapatılmaya zorlandığında: Session nesnesine Abandon metodu uygulanarak oturum aniden sonlandırılabilir. 4. Sunucu yeniden başlatıldığında

ASP.NET ile SESSION Session nesneleri sunucu tarafından doğru istemciler ile nasıl eşleştirilir? Bir sayfa talep edildiğinde, bu istemci için otomatik olarak sunucu üzerinde 120 bitlik özel bir algoritma yardımıyla benzersiz bir tanımlama değeri oluşturulur. Daha sonra bu tanımlama değerini (SessonId) sunucu istemci bilgisayara gönderir. Varsayılan olarak istemci bilgisayar SessionId değerini bir cookie (çerez) dosyasında saklar. Aynı değer sunucu üzerinde de yer almaktadır. İstemci, kendisine ait oturum bir şekilde sonlanıncaya kadar, site içerisinde bu sessionid değeri ile tanınır.

ASP.NET ile SESSION Ancak her istemci cookie leri desteklemeyebilir. Bu durumda yapılacak ufak ayarlamalar ile SessionId değerinin URL adresine eklenmesi sağlanabilir.

ASP.NET ile SESSION Session nesnesine atanan değerler sunucu üzerindeki bellekte saklanırlar. Bu bilgiler asla istemci bilgisayara gönderilmez Bu da güvenlik açısından önemli bir avantajdır. Ancak, örneğin Dataset gibi nesnelere ait verilerin Session lar ile taşınması sunucu kaynaklarını ciddi derecede azaltır. Bellekte meydana gelen bu azalma elbetteki web sunucunun performansını olumsuz yönde etkileyecektir.

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.

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