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

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

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

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

MASTER PAGE SAYFASI KULLANIMI

PROGRAMLAMA DERSİ 1. İNTERNET

Üst Düzey Programlama

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

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

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

ASP.NET ile Bir Web Sitesi Oluşturma

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

Response : Sunucunun istemciye veri yollamasını

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.

24 Kasım 2011 / Perşembe

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

yeni_uye_kayit.ascx UserControl sayfamızda, kaydedilmek istenen üye eğer daha önce veritabanımızda kayıtlı ise bunu buldurup kullanıcıyı uyaralım;

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

EĞİTİM : DURUM YÖNETİMİ VE TEMALAR. Bölüm : Durum Yönetimi. Konu : View State Management (Görünüm Durumu Yönetimi) Page 1 of 43

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

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

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

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

Üst Düzey Programlama

Masa üstünde vt34.mdb dosyası var, onu projemize eklemek için, App_Data ya sağ tıkla Add Existing Item vt34.mdb adlı dosyayı seç Add

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

Üst Düzey Programlama

Programlama Yazılımı ile 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

Outlook ta Mail Arama

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

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

Görsel Programlama DERS 12. Görsel Programlama - Ders12/

Üst Düzey Programlama

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

Üst Düzey Programlama

User Control : Standart bir kullanıcı arabirimi oluşturarak; bir uygulama içinde birden fazla. Siteye User Control Eklemek : 22 Mart 2012 / Perşembe

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

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

Basit bir web uygulaması

Toplu İleti Gönderimi

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

Çözüm :RadioButtonList1 kontrolunuekliyoruz.enableautopostback iaktifleştiriyoruz..

Basit Mimari, Katmanlı Mimari ve doğrudan çalıştırma olarak üçe ayrılır.

Web Tasarımının Temelleri

Resimlerin üstüne yazı yazacağız. resimyukle.aspx sayfası oluşturuyoruz.

EC-485. Ethernet RS485 Çevirici. İstanbul Yazılım ve Elektronik Teknolojileri

Şekil 2.1. Bu bölümde ASP.Net platformumuzu açtığımızda Toolbox penceresindeki Standart bölümündeki kontrollerden bahsedeceğiz.(şekil 2.2) Şekil 2.

İNTERNET TABANLI PROGRAMLAMA

Görsel Programlama (Visual Programming) 2.Hafta

Öğr. Gör. Serkan AKSU 1

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

Bölüm 10: PHP ile Veritabanı Uygulamaları

ASP.NET Web Kontrolleri

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

HSancak Nesne Tabanlı Programlama I Ders Notları

PHP 1. Hafta 1. Sunum

MCR02-AE Ethernet Temassız Kart Okuyucu

JAVASCRIPT JAVASCRIPT DİLİ

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

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

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

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

ORT3167 İnternet Programcılığı 1 Ders1-2. Öğr. Grv. Aybike ŞİMŞEK

Internet Programming II

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

Daha komplike uygulamalar elektronik ticaret, elektronik kimlik belgeleme, güvenli e-posta,

e-fatura Başvuru Açıklamalar

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. 26 Şub Öğr. Gör.

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

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

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

MVC Kul anıcı Doğrulama ve Yetkilendirme MVC Filtreler Action Filter FilterAttribute IActionFilter FilterAttribute IActionFilter

BAY.t ENTEGRE PRO e-fatura ÇÖZÜMÜ ENTEGRATÖR KULLANIM YÖNTEMİ

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

İZMİR EKONOMİ ÜNİVERSİTESİ KÜTÜPHANE VERİTABANINA KAMPÜS DIŞINDA ERİŞİM

İZMİR EKONOMİ ÜNİVERSİTESİ KÜTÜPHANE VERİTABANINA KAMPÜS DIŞINDA ERİŞİM

KAMPÜS DIŞINDAN PROXY (VEKİL) AYARLARI İLE KAMPÜS AĞINA BAĞLANMAK

Bilgisayar Ağları ve Ağ Güvenliği DR. ÖĞR. ÜYESİ KENAN GENÇOL HİTİT ÜNİVERSİTESİ ELEKTRİK-ELEKTRONİK MÜH.

PHP (II) Formlar. Dosya İşlemleri. 2002, Sanem SARIEL PHP Ders Notları 2 1. Formlar

YZM 3215 İleri Web Programlama

Kets DocPlace LOGO Entegrasyonu

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

Web Uygulama Güvenliği Kontrol Listesi 2010

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

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

İnternet Programcılığı

5651 ve 5070 Sayılı Kanun Tanımlar Yükümlülükler ve Sorumluluklar Logix v2.3 Firewall. Rekare Bilgi Teknolojileri

App İnventor-Pide Sipariş Uygulaması

İNTERNET TABANLI PROGRAMLAMA- 8.ders VERİTABANI İLE İLGİLİ BİLGİLERİ GÖRÜNTÜLEME, KAYDETME, GÜNCELLEME VE SİLME

Algorithm of Your Life. AJAX ve...

08220 Internet Programcılığı II

Ad Soyad : Fahri Dönmez Şube No : TBIL Öğrenci No : Bölüm : Bilgisayar Mühendisliği. Web Programlama Yrd. Doç. Dr.

İl İlçe uygulaması. : Seçilen ile ait ilçeleri listeleyen program. //İl değişkeni için kodu aşağıdaki sayfadan kopyalayınız.

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

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

Coslat Monitor (Raporcu)

T.C. MİLLİ EĞİTİM BAKANLIĞI BALIKESİR / BANDIRMA İLÇE MİLLİ EĞİTİM MÜDÜRLÜĞÜ. Büro Yönetimi ve Resmi Yazışma Kuralları Kursu

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

Transkript:

Web sayfalarında sayfa ile server arasındaki iletişim, HTTP protokolü ile gerçekleştirilir. Bu protokolde sunucuya gönderdiğimiz bilgiler, kendi bilgisayarımızda kalıcı değildir. Biz bir istek gönderdiğimizde sunucuda sayfamızın bir örneği oluşturulur. Gönderdiğimiz bilgiler sunucuya gider ve orada işlenir. İşlendikten sonra sayfanın örneği, sunucudan silinir. Bu gönderdiğimiz verilere tekrar erişebilmek ve bunları taşıyabilmek için durum yönetimi kontrollerini kullanmaktayız.

Bilgiler istemci ve sunucu tarafında saklanabilir.eğer istemci tabanlı durum yönetimlerini kullanırsak her istemci için sunucuda bir yer ayrılır.bu sayfanın kullanıcısı çok olursa, bu bilgilerin server tarafında tutulması zorlaşacak ve belki de sunucu isteklere yanıt veremeyecektir.ayrıca istemci taraflı kontrolleri kullanırsak güvenlik açısından sıkıntı oluşturur.eğer Sunucu taraflı kontrolleri kullanırsak bu güvenlik sorunu en aza iner.

Bir web sayfasi sinifi her çagirildigi zaman yeniden olusturulur. Sayfa üzerinde istemci bilgilerini tutmaz. Örnegin bir textbox içine metin yazip gönder butonuna basarsaniz bu metin postback olayindan sonra görünmez çünkü sayfa her postbackte yeninde olusturulur.

Yukarda görüldügü gibi sayfa istemciye gönderilmeden önce tekrar olusturulur. Bu islem her istek için gerçeklesir. ASP.NET bu problemi çözmek için View State, Cookie, Session, Application Object gibi özellikler sunar.

State Management Türleri 1. Istemci Taraflı State Management View State Hidden Field Cookies (Çerezler) Control State 2. Sunucu Taraflı State Management Session Application Object Caching Database

Bu çözümlerden hangisini kullanacagimiza karar vermek için bazi kriterler kullaniriz. Ne kadar bilgi saklamak istiyorsunuz? Bilgileri istemcide mi yoksa sunucuda mı saklamak istiyorsunuz? Bilgileriniz önemlimi? Uygulamaniz için bant genisligi ve performans kriterleriniz nedir? Bilgileri kullanici bazlımı kaydetmek istiyorsunuz? Bilgileri ne kadar süreyle saklamak istiyorsunuz? Uygulamaniz bir Web Farm (birden fazla sunucu), Web Garden (Çok islemcili sunucu) yoksa tek islemcili bir sunucuda mi çalisiyor.

İstemci taraflı olanlar herhangi bir sunucu kaynagini kullanmazlar. Bilgileri istemci tarafında tutarlar. Sunucu taraflı olanlar ise bilgileri sucunu kaynaklarında tutarlar. Istemci taraflı mı yoksa sunucu taraflı mı state management kullanacaginizi seçmek ihtiyaçlarınıza ve yukarda verilen kriterlere bağlıdır.

VİEWSTATE ViewState nesnesi ASP.NET te form düzeyinde verileri saklamak için kullanılır. Yani Sayfa geçişleri arasında verileri saklamak için kullanılır. Asp dilinde kod yazarken postback işlemi sonrasında veriler kayboluyordu. Bunun önüne geçmek için viewstate nesnesi kullanılmaya başlandı.bu sayede sayfa postback olduğunda verilerin, form üzerinde saklanması sağlandı.kısaca açıklayacak olursak tarayıcı ve sunucu arasında bilgi alışverişi yapar. Sunucuya gönderilen değerler viewstate içinde saklanır ve tarayıcıya dönen değerler, viewstate içerisine depo edilerek gönderilir.

Örnegin bir degiskeni view state içine atmak isterseniz: string KullaniciAdi =" Akhisar Myo "; ViewState["Kullanici"] = KullaniciAdi; View State içindeki bir veriyi geri almak için ise: string KullaniciAdi = ViewState["Kullanici"].ToString(); View state içinde bilgileri object türünde saklandigi için sakladiginiz veriyi yeniden yüklerken tip dönüşümlerine dikkat etmeniz gerekir.

Viewstate sayfa bazlı tutulan bir değerdir sayfalar arası veritransferi için kullanılamaz yani ViewState["Key"] viewstate'nin değeri'ne A sayfasında bir değer atayıp B sayfasında bu değeri almaya çalışırsanız, alacağız değer NULL olacaktır.kullanımsal olarak Session'la ayrıldıkları temel noktalardan biride budur.

View State in avantajlari Kullanimi kolaydir. Sunucu kaynaklarina ihtiyaç duymaz. Sakladigi verileri kodlama yaparak daha güvenli hale getirir. View State in dezavantajlari Asiri büyüklükteki veriler için kullanildiginda performans kaybina sebep olur. Bilgileri kodlayarak gizli alanlarda tutar. Kodlamasini çözerek bilgilere ulasmak kolaydir.

Ne zaman View State kullanmaliyiz Veriler küçük boyutlu olduklari zaman çünkü gönderilen veriler sayfa içerisinde gönderilirler buda büyük boyutlu verilerde performans kaybina sebep olur. Güvenligin önemli oldugu datalari View State içine koymayin. Ne Zaman View State Kullanmamaliyiz Kullandiginiz kontrol içerigi asla degismiyorsa Kullanilan kontrol her postbackde yeniden dolduruluyorsa

Çerez (Cookie) Çerez istemci bilgisayarında veya istemci browserının hafızasında oluşturulan küçük dosyacıklardır. Bu yolla istemcinin sisteminde daha sonra kullanmak üzere küçük bilgileri saklanır. Çerezler bilgileri düz metin şeklinde saklarlar. Genel olarak çerezler kullanıcı bilgilerini tutmak için kullanılırlar.

Çerezler Nasıl Çalışır? İstemci sunucudan istekte bulunduğunda sunucu istemciye çerezleri gönderir. Gönderilen ayni çerez alt istekler içinde kullanılabilir. Birbirinden farklı siteler ve browserlar çerezleri farklı şekillerde depolarlar. Bir sayfa çerezlerdeki bir bilgiye ihtiyaç duyduğunda ilk olarak lokal sistemde arama yapar ve bulduğu çerezi sunucuya gönderir.

Avantajları Kullanımı çok kolaydır. Verilerin gönderimi browser tarafından yapılır. Dezavantajları Veriler düz metin dosyalarında saklandığı için güvenli değillerdir. Çerezlerde saklayabileceğimiz veriler için boyut sınırlaması vardır. Bu sinir 4096 byte (4KB dır). Kullanılabilecek çerez sayısı sinirlidir. Çoğu browser çerez sayısını 20 ile sınırlandırır, bazılarında ise bu rakam 300 çıkar. Yüksek güvenlik seviyesinde çalışmazlar.

Persistent ve Non Persistent Çerezler Çerezleri iki kategoriye ayırabiliriz. Persistent Çerezler ( Saklanan) Non Persistent Çerezler (Saklanmayan, Geçici)

Non Persistent Çerez Tanimlama HttpCookie cerez = new HttpCookie("KullaniciBilgileri"); cerez["kullaniciadi"] = irfan.sarica ; cerez["sifre"] = "123456"; Response.Cookies.Add(cerez); Yukarıda oluşturduğumuz çerez browser kapatılana kadar istemci bilgisayarında saklanır. Bu tür çerezlere Non Persistent Çerez(Geçici çerez) denir.

Çerezlerden Bilgi Okuma HttpCookie cerez = Request.Cookies["KullaniciBilgileri"]; string kullaniciadi,sifre; if (cerez!= null) { } kullaniciadi = cerez["kullaniciadi"]; sifre = cerez["sifre"]; Dikkat:Daha önce sisteme kaydettiğimiz çerezleri okurken çerezin sistemde olup olmadığını kontrol edin yoksa sisteminiz hata verir.

Persistent Çerezler Bu tür çerezler istemcinin hard diskinde son geçerlilik tarihine kadar saklanırlar. Bu tür çerezlerde bir geçerlilik tarihi olmalıdır. Bazen kullanıcı silene kadar istemcide saklanırlar. Non Persistent Çerezler Bu tür çerezlere geçici çerezlerde denir. Eğer çerez tanımlamasında bir geçerlilik süresi yoksa bu çerezler istemci browserının hafızasında saklanırlar. Yukarıda vermiş olduğumuz örnek geçici bir çerez örneğiydi. İki tür çerezi oluşturma ve kullanma aşamalarında herhangi bir farklılık yoktur. Aralarındaki tek fark persistent türü çerezlerde geçerlilik süresinin verilmiş olmasıdır.

Persistent Çerez Tanimlama HttpCookie cerez = new HttpCookie("KullaniciBilgileri"); cerez["kullaniciadi"] = irfan.sarica ; cerez["sifre"] = "123456"; cerez["gecerlilik"] = "5 Gün"; cerez.expires = DateTime.Now.AddDays(5); Response.Cookies.Add(cerez);

QUERYSTRİNG QueryString ile taşınacak olan veri, URL aracılığı ile diğer sayfalara taşınabilir. Taşınacak veriler, sayfanın adı yazıldıktan sonra? işareti ile başlayan kısımda anahtar-değer şeklinde taşınmaktadır. Bu yöntem kullanım kolaylığı ve sunucuya getirdiği yükün az olması nedeni ile pek çok yazılımcının tercihi olmaktadır ve hemen hemen her site bu yöntemi kullanmaktadır.

protected void Button1_Click(object sender, EventArgs e) { Response.Redirect("Sayfa2.aspx?veri1=irfan&veri2=Sarica"); } protected void Page_Load(object sender, EventArgs e) { string metin= Request.QueryString["veri1"]; string metin2 = Request.QueryString["veri2"]; Response.Write(metin + " " + metin2); } Burada butona tıklandığında Response.Redirect içerisinde bulunan veri1 ve veri2 değişkenlerindeki bilgileri sayfa2 ye yollar. Sayfa2.nin load olayında ise bu bilgiler alınarak değişkenlere atılır ve ekrana yazılır.sayfa1 de gönderilecek 2 parametre birbirinden & simgesi ile ayrılır. Sayfa2 deveriler, Request.QueryString ile alınır

Avantajları Kullanımı çok kolaydır. Verilerin gönderimi isi browser tarafından yapılır. Sunucuya getirdiği yük çok azdır. Dezavantajları QueryString ile taşınan veriler kullanıcılar tarafından görüntülenebilmektedir ve dolayısıyla bir güvenlik açığı oluşturmaktadır

SESSION (OTURUM) Sunucudan bir sayfa talep edildiğinde, web sunucusu her kullanıcı için bir oturum başlatır. Session nesneleri ile kullanıcı bilgilerini oturum boyunca sayfalar arasında taşıyabiliriz. Örneğin alışveriş sitelerinde sepete eklenenleri session ile sayfalar arasında taşıyabiliriz. Session da taşınan veriler tüm sayfalardan erişilebilir.

Session; oturum zaman aşımına uğradığında, kullanıcı pencereyi kapattığında, kullanıcı oturumu kapattığında sonlanır. Session içerisinde çok kritik veriler saklanabilmektedir ve bu sebeple işleminiz bittikten sonra Session mutlaka sonlandırılmalıdır. Kod içerisinde Session.Abandon(); kodu ile Session sonlandırabiliriz.

Session da veri aktarma yöntemi, viewstate ile benzerlik gösterir. Session[ keyadi ]=deger veya Session.Add( keyadi,deger) ile session nesnesine değerler atanır. Veri okurken de Session[ keyadi ] ile okuma yapılır.

Örnek Uygulama Sayfamız ilk yüklendiğinde eğer oturum açmış bir kullanıcı yoksa sadece hoş geldin yazsın. Eğer oturum açan biri ise hoş geldin kullanıcının ad ı yazsın. Bunun için Default.aspx sayfamıza 1 label 1 textbox ve 1 buton ekliyoruz. Eğer oturumu açık olan biri giriş yaptıysa Label üzerinde hoş geldin kullanıcı adı yazacak. Eğer yok ise Textbox a kullanıcı adı girilecek ve oturum aç butonuna basılınca Profil.aspx sayfasına gidilecek. O sayfada ise Hoş geldin Mehmet tarzında bir mesaj verilecek ve oturum kapatılacak yani session nesnesinin içerisi temizlenecek.

Dafault.aspx

Default.aspx sayfamızdaki Oturum aç butonunun Click olayına aşağıdaki kodu yazın

Profil.aspx

APPLICATION OBJECT Sitenin genelini ilgilendiren bilgilerin tutulabildiği nesne Application nesnesidir. Application nesnesi global bir değişken gibi düşünülebilir. Siteye erişen her kullanıcı aynı bilgileri görüp değiştirebilmektedir. Application nesnesinde de veri saklanırken, tıpkı Session ve ViewState nesnelerinde olduğu gibi anahtar-değer çiftleri kullanılır. Session ve ViewState nesnelerinde her anahtarda tutulan değer kullanıcıya özgü bir değerken, Application nesnesinde tutulan değer tüm kullanıcılar için ortak olmaktadır.

Application nesnesine veri eklerken Application.Add( key, deger ) ya da Application[ key ] = deger sözdizimi kullanılırken, Application nesnesinden veri okumak için Application[ key ] sözdizimi kullanılmaktadır.

Global.asax dosyasında 5 adet olay yakalayıcı metod bulunur. Bu metodlar, yanındaki olaylar olduğunda tetiklenir Application_Start =>Uygulama ilk defa çalıştırılırken tetiklenir Application_End =>Uygulama bilinçli bir şekilde kapatılırken tetiklenir Application_Error =>Uygulamada bir hata oluştuğunda tetiklenir Session_Start =>Web sitesinde yeni bir oturum açıldığında tetiklenir Session_End =>Web sitesinde bir oturum sonlandığında tetiklenir

Kaynakça http://www.mehmetkirazli.com/asp-net-durumyonetimi/ http://www.yazilimmutfagi.com/10103/web/aspnet/cerezler-cookie-hakkinda-bilgi-ve-asp-net-decerez-cookie-kullanimi.aspx