Merhaba arkadaşlar,
Bu yazımda, sizlere tarihi 1970’lere kadar dayanan bir tasarım şablonundan (design pattern) bahsedeceğim. Business process management (BPM) sürecinde, en temel şablonlardan (pattern) biri olan MVC, klasik Web Form’lara nazaran birçok avantajı da beraberinde getiriyor.
Bunlardan bahsetmeden önce Model View Controller’ın mimari yapısını inceleyelim.
Veri üzerindeki işlemlerin kontrol edildiği katmandır. Controller‘dan gelen emirler doğrultusunda veriyi işleme gerçekleştirilir. Data erişim senaryolarıyla ya da kendi object modelimizle ulaşıp kullandığımız veri ile ilgili işlemleri de bu şekilde katmanlara bölmüş oluyoruz.
User Interface bu katmanda hazırlanır. Controller ya da Model katmanlarından gelen bilgi son kullanıcıya sunulur. Tabii ki, Web 2.0 teknolojileriyle görüntü zenginleştirilebilir.
Uygulama içerisindeki karar mekanizması bu katmanda belirlenir. Sürecin yönetimi ve diğer katmanlar arasındaki iletişim de yine bu katman aracılığıyla sağlanır.
MVC‘nin Avantajları
- Bize sunduğu Model, View ve Controller katmanlarının yanı sıra, bunları da kendi içinde gerek gördüğümüzde parçalayabiliriz. Bu bağlamda n-tier mimarilerin kullanıldığı projeler geliştirmeye imkan sunar ve ilerde doğabilecek değişiklikler için de kolaylık sağlar.
- Modüler ve katmanlı yapısı sayesinde takım çalışmasına imkan sunar. Bunun yanında, yine bu katmanlı yapı bize yarım kalan projelerde ya da yazılım ekibinin değiştiği projelerde yeni yazılımcıların projeye entegrasyonunu son derece kolaylaştıracaktır.
- Data erişim senaryosu konusunda geliştirilen ORM Toolları (Entity Framework, NHibernate, LINQ,… ) ile iç içe çalışabilmesi ve bunu Model katmanında yapıyor olması da önemli bir avantaj.
- XML ‘in JavaScript üzerinden işlenmesine dayanan JSON‘la da kullanımı geliştirilmiştir.
- Test süreçlerinin daha da önem kazandığı büyük projelerde tercih edilebilir çünkü test driven development (TDD) desteği vardır.
- Datanın sık kullanıldığı projelerde vazgeçemediğimiz DevExpress, Telerik gibi component desteği de mevcuttur.
- MVC mimarisinin, Microsoft tarafında uygulanmış hali olan ASP.NET MVC Framework’teki bazı avantajlardan bahsedecek olursak;
- Rooting mekanizması bunlardan bir tanesi. MVC ‘nin modüler yapısı sayesinde oluşturduğunuz sayfaların arama motorlarınca indekslenmesi oldukça kolaylaşıyor. Dolaysıyla Web sitelerimiz arama motorlarında ön sıralarda çıkıyor.
- Klasik Web Form’lardaki gibi user controller, masterpage’ler kullanılabilir.
- MVC’de ViewState‘ler tutulmadığı için sayfaların boyutu da oldukça azalmaktadır. Web Form’larda bütün inputların değerleri ViewState’lerde tutulduğu için performans açısından MVC’nin gerisindedir.
- MVC ‘deki “page life cycle” da Web Form’lardan çok farklıdır. Web Form’larda sayfa üzerindeki herhangi bir tetiklemeden sonra postback işlemi başlar ve ilgili event çalışır. Bu döngü, büyük uygulamalarda içinden çıkılmaz bir hale gelebiliyor. MVC ile bu problem de kalkmış oluyor.
Şimdi örnek bir uygulama hazırlayalım.
Visual Studio 2010 ile Web kategorisi altında ASP.NET MVC 2 Web Application projesi açtığımızda Solution Explorer’da hazır gelen yapıyı inceleyecek olursak;
Controllers, Models ve Views klasörlerine yukarıda bahsettiğim şekilde, geliştireceğimiz proje doğrultusunda ilgili class’ları hazırlıyoruz. Yani object modelimizi ve veri tabanı işlemlerini yaptığımız class’lar Models klasöründe, buralardaki metotlarımızı yöneten class’ları Controllers klasörüne ve ekranlarımızı da Views klasörü altına yerleştiriyoruz. Ayrıca Scripts klasöründe validation (doğrulama) kontrolleri, JQuery ve AJAX için hazırlanan JavaScript kütüphaneleri de hazır geliyor.
Bu uygulamada, örnek olması için, örnek veri tabanı olan AdventureWorks üzerindeki Contact tablosunu ekrana getiren bir sayfa hazırladım. Hazırladığım class’ların resimleri:
Ve son olarak ekran görüntüsü:
MVC ile oluşturulan sayfaların en önemli özelliklerinden biri hızlı geliyor olmalarıdır. Bu mimariyle oluşturulan sitelerden olan http://www.bilyoner.com hız konusundaki beklentilerin boşa çıkmadığını ispatlıyor.
Umarım faydalı olmuştur. Herkese iyi çalışmalar. Tekrar görüşmek dileğiyle...