Ahmet Çığşar | ASP.NET MVC Nedir?
1197
post-template-default,single,single-post,postid-1197,single-format-standard,qode-quick-links-1.0,ajax_fade,page_not_loaded,,qode-theme-ver-11.0,qode-theme-bridge

ASP.NET MVC Nedir?

ASP.NET MVC Nedir?

MVC’nin ne olduğunu, ne olmadığını önceki yazımda kısaca anlattım. MVC mimarisi hakkında konuşulacak teorik bilgi zaten belirli olduğundan kısa tuttum fakat bu yazı ve bu yazıdan itibaren artık Microsoft’un ASP.NET MVC çatısı hakkında konuşacağız işte bu konuda konuşulacak, söylenecek, uygulanacak çok fazla şey var 🙂 Başlayalım.

Geleneksel ASP.NET formlarını kullanıyorsanız ve “neden ASP.NET MVC kullanayım?” diyorsanız okumaya başlayabilirsiniz.

ASP.NET Formlarının Dezavantajları

ViewState : ASP.NET formlarında ViewState güzel ve sempatik işlevleri olmasına karşın kötü bir tarafı var. Çok şişman. Şöyle:  Geleneksel ASP.NET sayfalarında form, kullanıcı bilgileri ve durumları tutması ve postback anında kaybolmasını View State ile engelliyorduk. ViewState bu bilgileri base64 formatında şifreleyerek tutuyor. (ViewState kod oluşturma yapısı) Bu durum kullanıcı sayfayı ziyaret ettiğinde ve her bir istekte bulunuşunda onlarca hatta yüzlerce kilobyte’lık  verinin oluşturulması ve HTML çıktısı sayfaya eklenmesi anlamına geliyor ve  sayfayanın boyutunu artırıyor. Boyutu artan sayfa sunucuya gitmekle kalsa birde sunucudan tekrar bize geri dönüyor. (Postback) Her defasında hem sunucu tarafında ciddi bantgenişliği harcarken, kullanıcı tarafında ise sayfanın açılışı ciddi yavaşlamalara sebep oluyor.

Page Life Cycle (Sayfa Yaşam Döngüsü) : Bu yapı kullanıcı tarafı (client-side) ile server tarafı (server-side) arasında event’lerin ilişkilerini düzenleyen bir mekanizmadır.  Request-response dediğimiz yapı yani kullanıcı tarafından gönderilen istek ve sunucu tarafından bu isteğe  verilen cevap arasındaki ilişkileri düzenleyen bir yapıdır. Gelin görünki bu yapı oldukça karmaşıktır. Page life cycle’a müdahale edebilme şansımız var fakat bunu yaptığımızda kötü sürprizlerle karşılaşabilme ihtimalimiz oldukça yüksek. Öyle ki bazen ortaya çıkan hataların neden çıktığını bulamayabilirsiniz.

Serseri HTML Çıktıları : Sunucu taraflı (server-side) diller HTML çıktısı verirler bunu bilmeyenimiz yoktur.  ASP.NET sayfalarında sunucuda yorumlandıktan sonra HTML çıktısı olarak bize gelir. Fakat burada hakimiyetimiz sınırlıdır yani istediğimiz gibi bir HTML sayfasını çıktı olarak alamayabiliriz, görüntü olarak istediğimiz HTML dosyasını alsak dahi kod temizliği ve W3 standartlarına uygun HTML çıktısı almak oldukça zor bir hal alıyor ve ortaya kendi halinde, bizim belirlediğimiz disiplinden uzak, serseri HTML sayfaları oluşabilir. Özellikle CSS ve javascript işin içine girince hayalkırıklığımız artabiliyor. ASP.NET 4.x sürümü ile bu sorun bir nebze çözülmüş olsada tamamen ortadan kalktığı söylenemez.

Aşırı Code-Behind Bağımlılığı : Katmansal bir mimariyle (N-Tier vb.) web uygulaması geliştireceksiniz diyelim. Sunum ve iş katmanlarını ayırdınız iyi güzelde ASP.NET formları aslında bu yapıya oldukça ters. Sebebi bir çok mantıksal işlemleri yapacak kodları sunum katmanındaki sayfaların code-behind tarafında yazmak zorunda kalmamız. Hani katmansal mimarimiz? Ayrıca bu durum projenin daha sonra güncellemek veya eklentiler yapmak için ele alındığında işleri daha da zorlaştıracaktır çünkü dağınık bir kod yapısı bizi beklemektedir.

ASP.NET MVC Framework ile Tanışalım

Malum MVC 1979 yılından bu yana bilinen bir yazılım mimari deseni ve bir çok programlama dilinde kullanılan bir desen(kalıp).  ASP.NET MVC Framework’de Microsoft tarafından geliştirilmiş ve halen geliştirilen  ASP.NET ile MVC mimarisini kullanmamıza olanak sağlayan bir MVC çatısıdır.

ASP.NET MVC’de Model-View-Controller yapıları ve görevleri.

Model : Veritabanına erişim, class’lar, ayrıca data access layer yani veritabanı işlemleri için kullanacağımız Ado.Net, Nhibernate veya EntityFramework ile veri işlemleri burada yer alır.

View : Kullanıcının gördüğü ve arayüze dair şeyler buradadır. HTML, CSS, Javascript kodları… View bölümünde iş akışına ait bir şeyler bulunmaz. Ayrıca View bölümü sayesinde uygulamanın arayüzü uygulamanın çekirdek kısmından ayrı tutulduğundan tasarımı ve tasarımın değiştirilmesi açısından bize avantaj sağlar.

Controller : Client (kullanıcı) tarafından yapılan request (istek) controller’lar tarafından yakalanır ve işleme tabi tutulur. Bu bölüm iş akışının gerçekleştiği, arayüzden gelen kullanıcı etkileşimlerinin değerlendirildiği, işlendiği, gerekli metodların çalıştırıldığı, değişkenlerin ve nesnelerin  oluşturulduğu, model ile view bölümleri arasında iletişimin sağlandığı yerdir. ASP.NET MVC’de controller dediğimiz nesneler aslında System.Web.Mvc.Controller ‘dan miras almış minik C# class’larıdır.
Şunu unutmayalım: Her View için bir Controller vardır fakat her Controller için View şartı yoktur.

mvc_islem_sureci

Yukarıdaki şemada ASP.NET MVC mimarisinin nasıl çalıştığını gösteren aşamaları görüyoruz.

Özetle: Client (kullanıcı/ziyaretçi) tarafından başlatılan request (istek), controller tarafında işleme alınıyor ve neler yapılması gerekiyorsa, modelle irtibata geçilmesi gerekiyorsa modele giderek ilgili nesnelere ulaşıyor ve oradaki işlemlerini yaptıktan sonra tekrar controller’a geliniyor ve controller’da varsa son işlemden geçerek View’a gönderiliyor ve bizim reponse dediğimiz sunucu cevabı HTML çıktısı olarak bize geliyor.

ASP.NET MVC uygulamalarmıza bir sonraki yazımdan itibaren başlayacağız. MVC ile yeni tanışacakların özellikle okuması faydalı olacaktır.

7 Yorum Var
  • Bahri
    10:09h, 19 Nisan Cevapla

    İnternette Mvc ile ilgili çok sayıda kaynak var ancak bir çoğu karmaşık ve parça bütünlüğü de yok. Sade ve anlaşılır şekilde açıklamışsınız. Faydalandım yazılarınızdan. İlk uygulama da gayet açıklayıcı olmuş. Model, Controller ve View ile ilgili uygulamalarınızın devamını beklemekteyim 🙂 Yazılarınız için teşekkürler

    • Ahmet Çığşar
      13:54h, 19 Nisan Cevapla

      Selam Bahri,
      MVC makalelerini yazmaya karar verdiğimde amacım diğer kaynaklardaki gibi ezbere ve gereksiz teorik bilgilere fazla bulaşmadan anlaşılır bir yapıda yazmaya çalışmaktı. Bunu biraz olsun başarabildiysem ne mutlu.
      Bu arada uygulama örneklerinin olduğu yazıların devamı gelecek.

  • pd
    13:22h, 11 Haziran Cevapla

    Merhaba,
    Güzel paylaşım olmuş teşekkürler.
    Birşey sormak istiyorum, web üzerinden sipariş uygulaması oluşturmak istiorum, sql db ile bağlantılı olacak. Nereden başlaman gerekir, uygulamaya nasıl başlamalıyım mvc veya webforms mu olmalı. yardımcı olabilirseniz sevinirim.

    • Ahmet Çığşar
      21:16h, 11 Haziran Cevapla

      Merhabalar, teşekkürler.
      Bence bahsettiğiniz ölçekte bir uygulama için ASP.NET webformlarını seçmeniz daha pratik olacaktır. Nereden başlamalısınız? Tabiki öncelikle yapacağınız uygulamanın taslağını ve akış şemasını oluşturarak. Sonra veritabanını modellemek, ardından ASP.NET webformlarını hazırlamak ve ADO.NET veya LinQ ile veritabanı ile irtibatı sağlamak kalıyor.

  • ismail
    15:43h, 17 Ağustos Cevapla

    çok açıklayıcı olmuş ağzınıza sağlık. gerçekten kafamda bir şeyler belirledi sizin sayenizde.

  • Gökmen Bulut
    23:44h, 11 Ekim Cevapla

    Yazınız bana göre herkesi ve her seviyeyi kapsayan harika bir anlatıma sahip.
    Size çok teşekkür ederim.
    Devamını sabırsızlıkla bekliyorum…

  • alper topcu
    15:22h, 09 Şubat Cevapla

    hocam merhaba visual studio 2012 kulklanıyorm fakat mvc 4 ıle bır ınternet aplicaton actmda buna bır template atayamıyorm bununla ılgı yardımcı olabılırmısınız

Yorum Yapın