ASP.NET MVC Framework

MVC;  Model, View (görünüm) ve Controller (denetleyici) kelimelerinin baş harflerininin birleştirilmesiyle oluşturulmuştur. Bir tasarım desenidir.

Model – View – Controller tasarım deseni, bir uygulamayı 3 anlamlı parçaya ayırır. Adından da anlaşılacağı şekilde model, view ve controller parçaları.

ASP.NET MVC Framework ise MVC deseni ile web uygulamaları geliştirmek için Microsoft tarafından geliştirilmiş bir framework. Geleneksel ASP.NET Web Formları desenine bir alternatiftir.

ASP.NET MVC Framework daha açık ve hafiftir ama en önemlisi test edilebilir bir Presentation tasarım desenidir.

Halihazırdaki web formları ile kullandığımız masterpage, membership ve authentication gibi özellikleri de kullanabileceğiniz bir yapıdır. Çünkü MVC Framwork de System.Web’in bir parçası olarak System.Web.Mvc isimuzayı altında tanımlıdır.

MVC, 1970’lerden beri yaygın kullanılan bir tasarım desenidir. Bazı web uygulamaları için MVC kullanmak yararlı olacaktır. Ama MVC her web projesi için uygun olmayabilir. Bu yüzden bazı web uygulamaları da postback mekanizmasını kullanan geleneksel ASP.NET uygulama desenini kullanmaya devam edecektir. Belki ikisinin kombinsyonu şeklinde uygulamalar da göreceğiz.

MVC Framework bileşenlerini ayrı ayrı açıklayalım.

Model

MVC mimarisinde, Model bileşenleri veriye ve uygulama tarafından kullanılan servislere bir arayüz sağlama görevini üstlenir. Bu yüzden Controller bileşenleri verilerin okunması, yazılması, değiştirilmesi gibi işlemlerle ilgilenmez; bunun yerine veri erişimini ve manipülasyonunu sağlayan Model bileşenleriyle iletişim kurarlar. Model bileşenleri iş mantığı (business logic) kısmının kodlandığı kısımdır.

View

Uygulamanın kullanıcı arayüzünü (UI) oluşturan bileşenlerdir.

Controller

MVC uygulamalarının merkezindeki bileşendir. Süreci yöneten ve yönledirmeleri yapan kısımdır. URL Routing gibi pek çok heyecan verici işlem bu bileşen tarafından icra edilir.

Controller, kullanıcı ile iletişimi yönetir, Model ile iletişim kurar, hangi View görüntülenecekse seçer, hazırlayıp görüntüler.

Bir MVC uygulamasında View sadece bilgileri görüntüler, kullanıcı girişlerini ve etkileşimlerini Controller yönetir.

MVC, farklı işlevleri (veri girişi, iş mantığı, kullanıcı arayüzü mantığı vb.)  birbirinden ayırıp bunları gevşek bağlaşım (loose coupling) ile ilişkilendirerek uygulama geliştirme olanağı sağlar. Bu desen, hangi çeşit mantık uygulamanın neresinde bulunacak, onu seçer.

Kullanıcı Arayüz mantığı View bileşenine aittir. İş mantığı Model bileşenine aittir. Uygulama geliştirirken bu ayrıştırma karmaşayı önler. Bir zamanda uygulamanın sadece bir bileşenine odaklanmayı sağlar. Mesela iş mantığından bağımsız olarak sadece kullanıcı arayüzüne odaklanabilirsiniz.

MVC desenini bu kadar güçlü kılan belki de ayrıştırma yeteneği ile uygulamaların birim testinin (unit test) kolay yapılmasıdır. Web formları tabanlı bir web uygulamasına göre çok daha kolay bir şekilde birim testleri uygulamayı olanaklı kılar.

ASP.NET MVC, bileşenleri arasındaki etkileşimi arayüzler (interface, nesne yönelimli programlamadaki arayüz terimini kastediyorum) üzerinden gerçekleştirir.

Web formları tabanlı ASP.NET uygulamalarının test edilebilmesi için bir web sunucuya ihtiyaç duyulur. MVC ise arayüzler yardımıyla framework’ten bağımsız olarak uygulamanın test edilmesini olanaklı kılar.

MVC uygulamasının her bir birimi arasında gevşek bağlaşım bulunması, paralel geliştirmeyi de olanaklı kılar. Mesela, bir grup View üzerinde çalışırken diğer bir grup Model’de iş mantığı üzerine çalışabilir. ASP.NET MVC bu maharetini arayüzler üzerinden sergiler.

ASP.NET  MVC Avantajları

v  Uygulamayı Model, View ve Controller bileşenlerine bölerek karmaşıklığı önler.

v  Viewstate ve sunucu taraflı form kullnamaz. Uygulamanın bütün evelerine müdahale etmek ve hakim olmak isteyen geliştiriciler için idealdir.

v  Front Controller deseni kullanır. Bütün istekleri (request) tek bir Controller tarafından karşılanıyor. Bu sayede MVC, çok esnek bir yönlendirme (Routing) altyapısına sahiptir.

v  Daha iyi Test Driven Development (TDD) desteği sağlar.

v  Geniş bir takım tarafından geliştirilen, uygulam davranışları üzerinde daha fazla kontrol gerektiren web uygulamları için ideal bir yapıdır.

Web Formları Avantajları

v  Olay modeli ile geliştirme yapmaya onanak sağlar. Yüzlerce sunucu kontrolü üzerinden binlerce olay vardır.

v  Bir sayfaya özel işlevsellikler ekleyebilen Page Controller desenini kullanır.

v  View state ve sunucu tabanlı formlar yardımıyla sayfanın durum bilgisi kolaylıkla yönetilebilir.

v  Hızlı uygulama geliştirme yapmaya müsait olduğundan küçük gruplarla yapılacak karmaşık olmayan web projelerinde iyi çalışır.

v  MVC modeline göre daha az kod gerektirir.

ASP.NET MVC Framework Özellikleri

MVC Framework yapısının özelliklerini özetleyelim.

Uygulama görevlerini (giriş mantığı, iş mantığı, arayüz mantığı) ayırır. TDD desteği var.

MVC yapısı tamamen arayüz tabanlıdır, uygulamadaki gerçek nesnelerin simulasyonlarından oluşan mock nesneleri yardımıyla test edilebilir. ASP.NET Controller nesnelerini, web uygulamasını çalıştırmadan birim testine  (unit test) sokabiliriz. .net Framework ile uyumlu olan hernagi bir test framework ile unit-test yapabilirsiniz. Visual Studio Unit Test adlı test motoru Preview 3 ile hazır gelmektedir. Ama diğer yaygın test motorları da kullanılabilir.

Esnek ve tak-çıkar özellikleri olan bir framework. Her bir bileşen, aynı işlevi yerine getiren farklı alternatifleri ile değiştirilebilir. Mevcut bileşenler kendi isteğimize göre özelleştirilebilir.

Güçlü bir URL yönlendirme (URL Routing) mekanizması var. Dosya uzanltılarına (asp, aspx vb.) ihtiyaç yoktur. SEO ve REST uyumlu URL adlandırmaları kullanılabilir.

View şablonları olarak ASP.NET sayfası (.aspx), kullanıcı kontrolü (.ascx) ya da masterpage (.master) kullanılabilir.

İç içe masterpage, in-line ifadeler (<%=%>), deklaratif sunucu kontrolleri, şablonlar, veri-bağlama (data-binding), yerelleştirme gibi mecut ASP.NET özelliklerini MVC ile de kullanabilirsiniz.

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s