Durum Yönetimi ve Veri Aktarımı
Web Programlama 2 - Ünite 5: Web'in Hafızası ve İletişim
Temel Handikap: "Unutkan" Web
HTTP protokolü "Stateless" (Durumsuz) bir yapıdadır. Sunucu, bir isteğe yanıt verdikten sonra o kullanıcıyı unutur. Modern uygulamalarda (Sepet, Üyelik) kullanıcının hatırlanması için Durum Yönetimi şarttır.
Durum Yönetimi (Hatırlama Teknikleri)
A. İstemci Taraflı (Tarayıcı)
Veri kullanıcının bilgisayarında saklanır. Güvenlik riski taşır, manipüle edilebilir.
-
1. Query String
site.com/Urun?id=5&renk=maviAdres çubuğunda taşınır. Güvensizdir.
-
2. Hidden Fields
<input type="hidden" ... >Form içinde gizlidir ama kaynak kodda görünür.
-
3. Cookies (Çerezler)
Tarayıcıda saklanan metin dosyalarıdır. "Beni Hatırla" ve tema tercihleri için kullanılır.
Response.Cookies.Append("Tema", "Koyu");
B. Sunucu Taraflı (Server)
Veri sunucuda saklanır, kullanıcıda sadece bir anahtar (ID) bulunur. Daha güvenlidir.
Kullanıcı siteye girdiğinde sunucu ona benzersiz bir Session ID verir. Asıl veri (Ad, Yetki) sunucu belleğinde bu ID ile tutulur.
AddSession() ve UseSession() gereklidir.
Senaryo: Güvenli Giriş (Login)
Giriş Yap
Kullanıcı adı/şifre doğruysa sunucu hafızasına not düşülür.
Session.SetString("User", "Ahmet")
Sayfa İsteği
Kullanıcı "Gizli Sayfa"ya gitmek ister.
Kontrol (Gatekeeper)
Sunucu Session'a bakar.
-> Redirect(Login)
Veri Aktarımı (Controller -> View)
İş mantığının sonucu olan verileri ekrana taşımak için 4 temel yöntem vardır.
A. Zayıf Türlü (Pratik ama Riskli)
İstediğin ismi verip değer atayabilirsin. Hata varsa çalışma zamanında patlar.
ViewBag.Mesaj = "Merhaba";
// View
@ViewBag.Mesaj
Anahtar-Değer mantığı. Okurken tip dönüşümü (casting) gerekir.
@((string)ViewData["Ad"])
RedirectToAction sonrası hayatta kalır. Tek kullanımlıktır.
B. Güçlü Türlü (Profesyonel Yöntem)
View Model
Veri, belirsiz çantalarla değil, belirli bir Sınıf (Class) yapısıyla taşınır. Hata yaparsan derleyici uyarır (Compile-time check).
ogr.Ad = "Veli";
return View(ogr); // Tepsiyi ver
<!-- IntelliSense Çalışır! -->
@Model.Ad
Hiç yorum yok:
Yorum Gönder