Anasayfa RSS Email

ASP.NET MVC Framework'ü tanımak ve çalışmaya başlamak

Nedir? Ne zaman çıktı? Sürümleri? Nasıl Kullanılır?

.NET Framework ile ilk günden itibaren web uygulamları geliştirmek için ASP.NET WebForms kullanılmaktaydı. ASP.NET WebForms alt yapısının genişleyebilir yapısından faydalanarak geliştirilmiş açık kaynak kodlu ya da ticari MVC alt yapıları mevcuttu.Farklı platformlarda ya da open source bazı projelerde MVC tasarım kalıbı deneyimine sahip yazılım geliştiriciler tarafından Microsoft'dan MVC tasarım kalıbı desteği istenmekte ve beklenmekte idi. Microsoft bu bekletiye karşılık Microsoft Ekim 2007'de ASP.NET MVC Framework'den bahsetmeye başlatı (http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx) ve 2009 Nisan'ında da ASP.NET MVC Framework 1.0 release sürümü duyuruldu. (http://weblogs.asp.net/scottgu/archive/2009/04/01/asp-net-mvc-1-0.aspx)

ASP.NET Framework 1.0 ile bir çok web sitesi/uygulaması geliştirildi. Ve Microsoft web uygulaması geliştirme kanadında ki bilinen isimlerinin blogları ve twitter gibi iletişim araçları ile MVC Framework üzerinde ki desteklerinin devam ettiği gözlemlenirken Microsoft ASP.NET MVC Framework 2'nin Preview 1 sürümünü duyurdu. (http://weblogs.asp.net/scottgu/archive/2009/07/31/asp-net-mvc-v2-preview-1-released.aspx)

ASP.NET MVC Framework 1.0 ile 2 (evet 2.0 değil) birlikte çalışmaktadır. Yukarıda verdiğim linklerde verilen nasıl kurulur bilgilerini tekrar etmek niyetinde değilim. Visual Studio üzerine http://www.asp.net/mvc/download/ adresinden setup dosyasını indirerek yada Microsoft Web Platform Installer aracılığı ile kurabilirsiniz.

Microsoft ASP.NET MVC Framework açık kaynak kodludur. Yani Microsoft geliştirdiği bu frameworkün kaynak kodlarını yazılım geliştiricilere açmıştır. Burada ki stratejik kararları daha detaylı değerlendirmek gerekir. Ancak MVC framework gibi bir ortamda çalışmayı yeğleyecek kitlenin genellikle ALT.NET diye nitelendirilen sadece Microsoft tarafından sağlanmış .NET araç/kütüphane/frameworklerini kullanmayan open source sever camiasının sempatisini kazandığı bir gerçektir.

Webforms'a ne olacak? WebForms kullanmayı bırakıp MVC mi kullanmamız gerekiyor?

ASP.NET WebForms desteklenmeye devam edecektir. Ki zaten şu an piyasada component desteği ve diğer 3.parti bileşenlere bakıldığında WebForms için büyük bir destek mevcut, MVC Framework için bu destek büyüyene kadar bir çok yeni projede halen WebForms tercih edilmeye devam edecek MVC Framework ise alternatif oluşturacak ve projenizin gereksinimlerini ve tercihlerinize göre uygun yapıyı seçebiliyor olacaksınız.

Peki neden MVC Framework ne sunuyor?

  • ASP.NET WebForms ile kullandığınız master page yapısını, kullanıcı kontrollerini,session,membership vb yapıları kullanmaya devam edebiliyorsunuz.
  • ViewState yoktur. MVC Framework mimarisi ViewState mantığına ters düşmektedir.
  • MVC Framework HTML çıktısı üzerinde yazılım geliştiriciye tam kontrol sunmaktadır. Bu webforms sayfasına bir webcomponenti ekledikten sonra o kontrolün HTML çıktısının ne olacağını kontrol edememekten rahatsız olan web developerların çok seveceği bir özelliktir. Ancak webcomponentilerinin getirdiği bazı kolaylılardan şimdilik mahrum kalınması da bir dezavantaj olarak gözükebilmektedir. MVC Framework için helper methodları ve web control kütüphaneleri geliştirilmeye devam etmektedir bunların sayısı ve yetenekleri artıktıkça tüm html çıktısını kendisi yönetmek istemeyen ve web kütüphanelerin sağladığı kolaylıkları kullanmaya devam etmek isteyen yazılım geliştiriciler de MVC Framework'e daha sıkcak bakmaya başlayacaktır.
  • MVC framework test edilebilirlik sunmaktadır. WebForms uygulamaları da test edilebilirdi ancak unit testing ile değil uygulama deploy edildikten sonra kaydedilen scriptleri tekrar run ederek ve http requestlerini kaydedip tekrar etme mantığı ile çalışan test yöntemleri ile test edilebiliyordu. MVC Framework yapısı itibariyle controller sınıflarında yazılan her sayfa aksiyonun test edilebilir olmasını sağlamaktadır.
  • MVC Framework tasarımı itibariyle pluggable bir yapıdadır, dependency injection framework kütüphaneleri ile birlikte çalışılabilmektedir.
  • URL routing sistemi üzerine kurulu olan MVC Framework ile arama motorları ile uyumlu bir yapıdadır. URL routing ile tanımlanan adresler yapısına bir örnek vermek gerekir ise /kullanici/goster/1 şeklinde bir adres tanımlanabilir. Bu şekilde tanımlanan bir adrese istek yapıldığında kullanicicontroller sınıfında ki goster method çağrılır parametre olarak 1 değeri geçilir. kullanicicontroller sınıfında ki duzenle methodunu çağırmak için kullanici/duzenle/1 adresi kullanılmaktadır. Bu örneklerden anlaşıldığı gibi gelen bir http isteği webforms mimarsinden farklı olarak html markup içeren .aspx dosyasına değil doğrudan c# sınıfı olan controller sınıflarına gider, controller sınıfı ise bir aspx sayfası mı oluşturağına ya da bir nesneyi xml, json gibi mi döneceğine karar vererek view katmanını aktive eder.

Model - View - Controller kavramları


*msdn.microsoft.com


Model katmanı veriyi ve bu veriyi işlemek iş mantığı çalıştıran katmandır. Daha pratik olarak örneklendirmek gerekir ise sisteminizde ki kullanıcı entitynizi temsil eden sınıfdır, kullanıcı bilgilerine erişmek, kullanıcı kaydetmek, kullanıcıyı kaydederken işlettiğiniz iş kuralı/mantığının yer aldığı sınıflardır.

Controller katmanı http requestleri ile gelen isteklerin eşleştirildiği action methodlarının yer aldığı katmandır. Gelen bir http isteği routing tablosuna bağlı olarak doğrudan controller sınıflarına ve o sınıflarda ki action methodlarına aktarılır. Controller sınıfı içinde yer alan action method içerisinde Model katmanı da kullanılarak yapılması gereken işler (bir veriye erişmek,güncellemek vs. gibi) yapılır ve view'ın nasıl döneceğine göre bir geri dönüş türü ile view katmanı aktive edilir.

View katmanı kullanıcı arayüzünün oluşturulduğu katmandır. Model her zaman bir .aspx dosyası olmak zorunda değildir tanımlanmış başka bir viewengine ile view katmanı oluşturulabilir. ASP.NET MVC Framework ile gelen .aspx dosyaları ile çalışan standart view engin yanında internet üzerinden genellikle open source olan bazı view engine kütüphanelerine erişebilirsiniz. Bu viewengine değiştirilebilme durumu da MVC Framework'ün pluggable olan tasarımı sayesinde olmaktadır. Örnek bir kaç viewengine kütüphanesinden bahsetmek gerekir ise; Nahml (link1, link2), Spark(link1, link2), Brail (link1, link2), String Template (link1,link2).


Bundan sonra ne olacak? WebForms mu? MVC Framework mü? Hangisini seçmeliyim?

ASP.NET MVC Framework, WebForms yerine gelmiş bir teknoloji değildir. Projenizin gerekliliklerini de göz önünde bulundurarak hangisini seçeceğinize karar verirsiniz.

MVC Framework seçmenin avantajlar

  • Model, view, controller gibi katmanların ayrılması ile iş mantığı kodlarının yönetilmesi daha kolaylaşmıştır.
  • Web sitenizde yer alan farklı bölümlerin farklı yazılımcılar tarafından geliştirilmesini bir adım daha kolaylaştırmıştır.
  • Test driven development desteği vardır, TDD yapılacak ise mutlaka MVC kullanılmalıdır. Zira controllerlar webforms da olduğu gibi view etkileşimi (btnSave.Click gibi) ile çalışmamaktadır.
  • ViewState ve sunucu taraflı web componenetleri çalışmadığı için istemciye giden HTML markup çıktısı üzerinde tam kontrolünüz vardır.
  • Bir internet sitesi geliştiriyorsanız REST (Representational State Transfer) url yapısı ile çalıştığı için arama motorlarının indexlemesi ve tekrar bulabilmesi için avantaj sağlar. show.aspx?id=1 gibi bir adres yerine makale/asp.net/aspnet_ile_mvc_uygulamalari gibi bir adres arama motorları tarafından içeriğine göre daha tercih edilirdir. Bu sayede arama sonuçlarında yukarılarda çıkabilirsiniz.
  • İstemciye giden html çıktısı daha küçüktür çünkü hidden inputlar içinde, viewstate gibi veriler istemciye aktarılmaz ve tabiki geriye de post edilmez. Herkese açık ve yoğun kullanıcı trafiği olan sitelerde ölçülebilir bir performans kazandıracaktır.
  • jQuery vb. javascript kütüphaneleri ile daha kolay çalışabilirsiniz. Zira Html çıktısında oluşturulan elementlerin id değerleri tamamen sizin kontrolünüzdedir. WebForms'da her web componentinin istemci tarafında ki id si ClientID sunucu taraflı propertysi ile alınıp javascript kodlarının arasına basılması gerekiyordu.

WebForms seçmenin avantajları

  • Bir windows uygulamasında olduğu gibi olay tabanlı programlama desteği sunmaktadır. (button.click gibi)
  • İlk günlerinden itibaren gelişmiş ve büyümüş (gerek Microsoft tarafından sağlanan, gerek üçüncü parti -telerik,devexpress- vb) bir web component desteği mevcuttur. Çok güçlü yeteneklere sahip datagrid gibi listeme kontrollerine sahiptir. Bugüne kadar ASP.NET ile geliştirme yapmış yazılım geliştiriciler ise benzeri web componentlarını kullanmaya aşinadır.
  • RAD ortamlarından uygulama geliştirmiş tüm yazılım geliştiricinin aşina olduğu bir yapıda çalışmaktadır. Örneğin hiç web development yapmamış bir yazılım geliştiricinin adapte olması daha kolaydır.
  • Sayfa bazında durum yönetimi kolaydır, viewstate kullanır.

Uygulama geliştirirken unit test yapacağım, kullanıcıya giden çıktının kontrolüne sahip olmalıyım diyorsanız MVC Framework seçebilirsiniz.
Daha hızlı biçimde RAD toolları kullanarak, veri yoğunluklu ve windows forms da ki olay tabanlı yaklaşım ile uygulama geliştireceğim diyorsanız WebForms seçebilirsiniz.


Bu makalemizde MVC Framework'ü temel olarak anlamaya ve kafamızda pozisyonlandırılmasına çalıştık. Çıkış amacını anlamaya ve WebForms ile karşılaştırarak her birinin avantajlarını görmeye çalıştık.

ASP.NET MVC Framework ile ilgili makalelerim devam edecek.


@ Sunday, August 16, 2009 2:48 PM | [ asp.net mvc makale ]

Comments

No comments posted yet.

Post Comment

Title *
Name *
Email
Url
Comment *  
Please add 3 and 3 and type the answer here:
Web Statistics