Yeniden merhaba arkadaşlar. Bir ASP.NET MVC yazı dizisinde daha birlikteyiz. Geçen hafta Microsoft'un ASP.NET MVC'den önceki Web geliştirme platformlarından da bahsederek ASP.NET MVC'ye küçük bir giriş yapmıştık. Bu hafta ASP.NET MVC'ye adını veren MVC yani Model-View-Controller mimari deseninden bahsedeceğim.
Model-View-Controller bir uygulamanın farklı parçalarının birbirinden katı bir şekilde izole edilmesini teşvik eden bir mimari desendir. Bu ayrım daha çok "Separation of Concerns" diye bilinir ve yazılımda farklı kavramların, işlerin birbirinden ayrılması anlamına gelir. Tüm yönleriyle MVC ve doğal olarak ASP.NET MVC bu birbiriyle benzeşmeyen uygulama parçalarının birbirlerinden izole edilmesi yaklaşımını amaç edinmiştir.
Uygulamaları bu yaklaşımla tasarlamak kısa ve uzun vadede birçok fayda sağlamaktadır:
Geliştirme:
Bileşenlerin birbirlerine doğrudan bağlı olmaması, onların izole edilmiş bir şekilde daha kolay geliştirilmesine olanak sağlar. Bir bileşen etkileşimde bulunduğu diğer bir bileşeni etkilemeden değiştirilebilir.
Test Edilebilirlik:
Bir test sırasında asıl uygulamanın verilerine dokunmadan geçici verilerle uygulamanın test edilmesi sağlanabilir. Örneğin veri tabanına çağrı yapılması önlenerek, veri tabanı çağrılarını yapan bileşenin statik veri döndüren bir bileşenle değiştirilmesi sağlanabilir. Bileşenlerin geçici olarak değiştirilebilmesi test sürecini ciddi derecede kolaylaştırır.
Bakım:
İzole edilmiş bileşen yaklaşımı değişikliklerin çok az sayıda bileşene uygulanacağı anlamına gelir bu sayı genelde birdir. Değişikliğin kapsamının küçük olması yapılan değişikliğin riskini azaltır, bu da iyi bir şeydir.
MVC, uygulamaları üç ana katmana ayırır: Model, View ve Controller. Bu katmanlar, her birinin sorumlu olduğu kendilerine has bazı görevlere sahiptirler ve en önemlisi diğer katmanların bu görevleri nasıl yerine getirdiğiyle ilgilenmezler.
Model'ler:
Model bileşeni veriyi temsil eder. Uygulamanın veri alanıyla ilgili mantığını uygulayan parçasıdır. Model'ler uygulamadaki bir varlığın özelliklerini ve davranışlarını kapsar. Örneğin, Ürün adında bir nesne bir uygulamadaki ürünü temsil edebilir ve ÜrünAdı, ÜrünKodu gibi özelliklere sahip olabilir. Genellikle model nesneleri model durumunu veri tabanlarından alır ve veri tabanlarında saklar.
View'lar:
View model veya model'leri görsel bir sunuma dönüştürmekle sorumludur. Web uygulamalarında bu, kullanıcının tarayıcısında görüntülenecek HTML'in oluşturulması anlamına gelir. Tabii ki view'lar farklı formlara sahip olabilirler. Mesela aynı model HTML, PDF, XML hatta excel dokümanı olarak temsil edilebilir. View'lar "Separation of Concerns" mantığından dolayı verinin nasıl alındığıyla değil, sadece verinin nasıl gösterileceğiyle ilgilenmelidir. Kısacası view'lar kullanıcı arayüzünü temsil etmektedir.
Controller'lar:
Controller adından da anlaşılacağı gibi, uygulamanın işleyişini kontrol eder, view ve model arasında koordinatör gibi davranır. Controller kullanıcıdan girdiyi alır, sonra bazı işlemler gerçekleştirmek için model ile çalışır ve sonucu view'a aktarır. Diğer bileşenlerde olduğu gibi controller, verinin nasıl alındığıyla ya da sonucun kullanıcıya nasıl aktarıldığıyla ilgili bir bilgiye sahip değildir. Kısacası controller kullanıcı etkileşimini sağlayan bileşendir.
MVC çok başarılı olduğunu kanıtlamıştır. Bugün, içlerinde Ruby on Rails, CakePHP ve Django'nun da yer aldığı birçok popüler web uygulaması geliştirme platformu tarafından kullanılmaktadır. Java dünyasında da oldukça popüler olan MVC, Struts ve Spring gibi framework'lerde de kullanılmaktadır.
Bugünlük yazım burada sona eriyor. Bu hafta bir alt yapı olması açısından Model-View-Controller'ın işleyiş biçiminden bahsettim. Haftaya ASP.NET Web Formları'yla ASP.NET MVC arasında karşılaştırma yaptığım bir yazı paylaşacağım. Daha sonraki haftalarda da ASP.NET MVC ile elle tutulur, gözle görülür şeyler yapmaya başlayacağız. Haftaya görüşmek üzere hoşça kalın.
Kaynaklar:
- http://www.asp.net/mvc/tutorials/older-versions/overview/asp-net-mvc-overview
- Programming ASP.NET MVC 4 - O'Reilly
0 yorum :