MVC Mimarisi nedir? - suckerman7/JavaRestAPI-Demo GitHub Wiki
MVC MİMARİSİ NEDİR?
MVC, (Model-View-Controller) Yazılım Mühendisliği sektöründe önemli bir yere sahip olmakla birlikte yazılım mimari desenlerinin en önemli yapıtaşlarından biridir. MVC, ilk olarak 1979 yılında Tygve Reeskaug tarafından oluşturulmuş ve ondan beri her projenin yazılım geliştirmesinde kullanılmıştır.
Ayrıca son dönemlerde Microsoft’un MVC desenini ASP.NET teknolojisiyle birleştirmesi sayesinde daha da popüler olmuştur. Fakat çoğu insanın düşündüğü aksine, MVC Microsoft tarafından çıkarılmamıştır. Ama bu desen, ASP.NET çıkmadan önce birçok (.NET) yazılım geliştiricisi bilmediği (ve bilip ama kullanmadıkları) için bu desene olan ilginin artmasında ASP.NET’in büyük bir rolü mevcuttur.
MVC deseni, 3 katmandan oluşmakta ve her bir katmanı diğerlerinden bağımsız olarak çalışabilme kapasitesindedir. Bundan dolayı çoğunlukla büyük çaplı projelerde onların yönetimini ve kontrolünün daha kolay olması için MVC tercih edilmektedir. Ayrıca MVC ile geliştirilen projelerin detaylarına birçok kişi eş zamanlı olarak daha kolayca çalışabilir.
Şimdi de bu üç katmandan bahsedeceğim:
MODEL:
Model, MVC’de projenin iş mantığını oluşturduğumuz bölümdür. İş mantığıyla beraber doğrulama ve veri erişim işlemleri de bu bölümde gerçekleştirilmektedir. Model, tek katmandan oluşabileceği gibi kendi içinde birden fazla katmandan da oluşabilir. Modelin katmanlara ayrılması ve iç yapılandırması, projenin büyüklüğü ve yazılım geliştiricilerinin planlanmasına bağlıdır. Eğer proje büyük çaplıysa modeli birden fazla katmana ayırmak projenin yönetimine oldukça katkı sağlayacaktır.
VIEW:
View, MVC’de projenin arayüzünü oluşturduğumuz bölümdür. Bu bölümde ayrıca projenin kullanıcılara sunacağı HTML dosyaları da yer almaktadır. Geliştirilen projelerde kullanılan dosya uzantıları, projeyi geliştirirken kullanılan yazılım dillerine bağlıdır. Projenin büyüklüğüne göre dikkat etmemiz gereken noktalardan biriyse klasörlemedir.
Eğer bir web projesi üzerinde uğraşıyorsanız, projede yer alan View’ların hiyerarşisi, ileride yaşanabilecek karışıklıkların olmaması için dikkatlice hazırlanmalıdır. Kimi yazılım geliştiriciler web projelerinde HTML dosyalarıyla birlikte Javascript, CSS gibi formatlı dosyaları ve resimleri aynı klasörde barındırmayı tercih ederler. Başta ufak bir ayrıntı gibi gözükse bile projenin geliştirme süreci ilerleyince sıkıntı çıkaracaktır.
View’in en önemli görevlerinde biri de kullanıcılardan alınan istekleri controller’lara iletmektir.
CONTROLLER:
Ve son olarak Controller’dan bahsedelim. Bu katmanın göreviyse MVC ile yapılan projenin iç süreçlerini kontrol etmektir. Controller sayesinde View ile Model arasında bağlantı kurulur ve kullanıcılardan gelen istekler burada değerlendirilip gelen isteğin detayına göre hangi işlemlerin yapılacağı ve kullanıcıya hangi View’in döneceği belirtilir.
MVC’NİN YAŞAM DÖNGÜSÜ:
MVC’nin parçaları olarak bahsettiğimiz katmanları bir araya topladıktan sonra şimdi de MVC’nin çalışma prensibini inceleyelim:
- HTTP Request: Sizin her ASP.NET MVC uygulamasını görüntülemesini sağlayacak isteklerin bütünüdür.
- Routing: ASP.NET MVC uygulaması ne zaman istek yaparsanız, yaptığınız yanıt UrlRoutingModule denilen HTTP Module'u tarafından durdurulur. Bu module bir isteği durdurunca gelen istek RouteTable’dan hangi Controller tarafından üstleneceğine karar verir.
- Controller: RouteTable’dan gelen Route bilgisine göre Controller, çalıştıracağı Action’a göre belli bir View’i çalıştırır. Fakat View, Controller tarafından tayin edilmez, onun yerine Controller tarafından ViewResult olarak geri döner.
- ViewResult: Bu aşamanın amacı, View’i render etmek için aktif ViewEngine’i çağırmaktır.
- ViewEngine: Bir CSHTML dosyası oluşturduğumuz zaman içerisinde yer alan script ve markuplar, Razor ViewEngine tarafından bazı ASP.NET API’larını sayfalarımızı HTML formatına çevirmek için kullanırız.
- View: ViewEngine tarafından HTML’e çevirilen kodlar kullanıcıya sunulur.
- Response: Ve en son olarak ise View, HTTP üzerinden kullanıcıya gösterilir.
MVC NE İŞE YARAR?
Yukarıda MVC’nin ne olduğunu, MVC’yi oluşturan 3 katmanı ve MVC’nin nasıl çalıştığından bahsettik. Şimdi asıl soru, MVC’nin ne işe yaradığıdır:
- MVC’yi kullanarak büyük projelerdeki kodların okunması kolaylaşır. Bu model sayesinde kodların güncellenmesi ve üzerlerine eklenme yapılması mümkün olur.
- Masaüstü, web ve mobil uygulamaların tasarımı ve geliştirilmesi için gerekli olacak bütün temel parçaları sağlar.
- Frontend, Backend ve Database gibi projelerin farklı kısımlarının birbirlerine karışmasının önüne geçer.
- Kodun test edilmesine olanak sağlar ve böylece hata oranı da azalır. MVC modeli amacı farklı olan tüm kodları uygun bir biçimde gruplandırır ve kodu daha kolay okunulabilir hale getirir. Ancak tüm sınıf ve nesneler birbirlerinden bağımsızdır.
- Ve en son olarak, MVC ile yazılan kodlar kolaylıkla farklı projelerde kullanılabilir.
MVC WEB FRAMEWORKLERİ:
Şimdi konumuzu kapatırken MVC’nin yer aldığı ve çoğunlukla kullanılıp tercih edilen Web Frameworklerini aşağıda listeleyeceğim:
- Ruby on Rails
- Django
- CherryPy
- Spring MVC
- Catalyst
- Rails
- Zend Framework
- Fuel PHP
- Laravel
- Symphony