ASP.NET DURUM YÖNETİMİ (State Management)

Slides:



Advertisements
Benzer bir sunumlar
Web uygulamalarında yeni bir yaklaşım AJAX
Advertisements

SGB.NET’İN TEKNİK ALTYAPISI
PHP VE MYSQL.
Bilgisayar Açılış Parola Talep İşlemleri
C# - Metotlar.
FİHRİST İdari Davalar Projesinde, dava açan kişilerin sicil,ad ve soyadları ile idari davalar şubesinde bu dosyalardan sorumlu memurların sicil,ad.
PHP ile Lab Örnekleri Lab Çalışması.
WEB SERVİCE İDRİS YÜRÜK MAHMUT KAYA.
Tuğba DEMİREL
HTTP’yi (istemci tarafı) kendi kendinize deneyin
YARDIM MASASI Internet Explorer tarayıcısı açılır ve Yardım Masası adresi yazılarak sayfası açılır. Gelen.
İSİM UZAYLARI.
Dizi (array) değişkenleri
Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu
AĞ PROTOKOLÜ.
BTP 108 BİLGİSAYAR AĞ SİSTEMLERİ AĞ KAVRAMI Birden çok bilgisayarın birbirine bağlı olarak kullanılmasıyla oluşturulan çalışma biçimine bilgisayar ağı.
Çerez(Cookie) Kullanımı Oturum Yönetimi
NESNEYE YÖNELİK PROGRAMLAMA
HTML (HYPER TEXT MARKUP LANGUAGE) TEMEL ETİKETLERİ
NESNE TABANLI PROGRAMLAMA -METOTLAR-
 HTML nin en önemli araçlarından biri de bilgi girişinde kullanılan form kontrolleridir.  Formlar, web sayfası tasarlayan kişi veya şirketlerle internet.
METODLAR.
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 8: Windows Formları
HAZİRAN ASP ACTIVE SERVER PAGES Demet AMİNCİ Selçuk YUVARLAK Yusuf ŞENEL Endüstri Mühendisliğinde Bilgisayar Uygulamaları Dersi Projesi, 2004.
Chapter 13: Handling Events. 2Microsoft Visual C# 2012, Fifth Edition Olay İşleme Olay – Bir nesne için ilginç bir şey olduğu zaman oluşur. – Programın.
WEB TASARIMININ TEMELLERİ HTML. HTML FORMLARI VE BİLGİ GİRİŞİ FORM, FORM ELEMANLARI BARINDIRAN BİR ALANDIR. FORM ELEMANLARI KULLANICILARDAN BİLGİ GİRİŞİNE.
MESAJ KUTUSU.
PHP İş Başında (Formlarla PHP)
Demet AYDIN METODLAR Demet AYDIN
 Bilgisayarlar arasında bilgi alışverişini, dosya iletimini sağlamaktadır.  Bu protokol kullanılarak, internet üzerinde bulunan herhangi bir bilgisayarda.
T.C. MİLLİ EĞİTİM BAKANLIĞI Büro Yönetimi Öğretmeni Fatma GEZ BALIKESİR / BANDIRMA – İLÇE MİLLİ EĞİTİM MÜDÜRLÜĞÜ Büro Yönetimi ve Resmi Yazışma Kuralları.
Görsel Programlama III Ders 8 Öğr.Gör. Mustafa KARABULUT.
İnternet Teknolojisi Temel Kavramlar
İKMAP İnternet 1 Ders Notu
BİLGİSAYAR MUHASEBE YAZILIMLARI
ASP.NET Web FORMS -> MVC FRAMEWORK
ASP.NET 2.Hafta Ahmet Haşim YURTTAKAL.
Web Tarayıcıları ve Arama Motorları
TEMEL php Dersleri - Ders 1 Değişgenler
ÇOK KATMANLI MİMARİLER. Katman: Ortak işi yapan kodların bir yerde toplanması Örneğin hemen hemen her projemizde veri tabanı kullanırız, bunun için veritabanı.
Modül 1: Giriş. Genel Bakış Temel.NET kavramları Geliştirme ortamında gezinti Bir C# projesi oluştur Use Visual Studio.NET Veriye eriş Hata ayıkla ve.
Modül 2: Formlar ve Kontroller ile Çalışmak. Programlama Kavramları Formlar ile Çalışmak Kontroller ile Çalışmak Kodu Biçemlemek Genel Bakış Visual Studio.NET.
MOB İ L UYGULAMA GEL İ ŞT İ RME Hafta 11. VER İ LER İ SAKLAMA Android sistemlerinde hazırlanacak projelerde verileri saklamak için android sisteminin.
KIRKLARELİ ÜNİVERSİTESİ
Dosya sistemi, bilgisayarın sabit disk üzerindeki verileri düzenlemek için kullandığı temel yapıdır. Disk depolamanın temel birimidir. Disklerin kullanılabilmesi.
Çiğli İlçe Milli Eğitim Müdürlüğü
WEB’DEN KİŞİSELLEŞTİRİLMİŞ KART DOLUMU KILAVUZU. WEB’DEN DOLUM AŞAMALARI Webden dolum için öncelikle internet tarayıcımızın adres Kısmına
XML ve XML WEB SERVİSLERİ Volkan ALTINTAŞ. XML Bağımsız bir kuruluş olan W3C tarafından tasarlanmıştır. Herhangi bir kurumun tekelinde değildir. Kişilerin.
SUNUM KONU BAŞLIKLARI->
VİRÜSLER VE DİĞER ZARARLI YAZILIMLAR. Virüs, casus yazılımlar (spyware), solucan, adware vb. zararlı yazılımlar (malware), reklam, sanal suçlar, bazen.
Çiğli İlçe Milli Eğitim Müdürlüğü
DOĞRULAMA KONTROLLERİ
Virüsler ve Diğer Zararlı Yazılımlar
Asp.Net Veritabanı İşlemleri
MUHASEBE YEDEKLEME.
Visual C# - Görsel Programlama – II Örnek Sorular ve Cevaplar
DOMAIN SERVER DOMAIN NEDIR ?
PROXY SERVER YASİN ÇAKIR
VİRÜS ÇEŞİTLERİ VE BULAŞMA YÖNTEMLERİ. VİRÜS NEDİR? Bilgisayar virüsleri, aslında "çalıştığında bilgisayarınıza değişik şekillerde zarar verebilen" bilgisayar.
2. VISUAL BASIC PROGRAM YAPISI
VİRÜSLER VE DİĞER ZARARLI YAZILIMLAR
MS SQL VERİTABANININ HOST HESABINA TAŞINMASI SAVAŞ TUNÇER.
İNTERNET PROGRAMCILIĞI 2
Bilgisayar Bilimi Problem Çözme Süreci-2.
Amazon Web Servisleri ve Javascript Dilinin Birlikte Kullanımı
AC500 Eğitim Sunumları 3. Değişken Tanımlama.
Asp.Net Veritabanı İşlemleri
Genel PHP Akademik Bilişim 2003 Adana, Şubat 2003 Hidayet Doğan
Milli Eğitim Bakanlığı Eğitek Haydar TUNA Teknik Öğretmen ve Yazar
Sunum transkripti:

ASP.NET DURUM YÖNETİMİ (State Management)

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 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 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 İ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 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 de veriler, 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’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 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 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-durum-yonetimi/ http://www.yazilimmutfagi.com/10103/web/asp-net/cerezler-cookie-hakkinda-bilgi-ve-asp-net-de-cerez-cookie-kullanimi.aspx