18.12.2010

Model View and Controller Deseni Nedir ?

Bu yazımda büyük projelerin bundan sonra olmazsa olmazı, ilk kullandığımızda bize çok karmaşık gelecek; ama zamanla kullandıkça ne kadar çok yararlı olduğunu anlayabileceğimiz bir desenden bahsedeceğim.



MVC

        Genellikle büyük çaplı projelerde kullanılan bir desendir  ve katmanlı yapıyı destekler. Classları görevlerine göre sınıflarına ayırır peki  bu bize ne sağlar ? Öncelikle projenin kontrolü kolaylaşır binlerce satır kodu yönetmek biraz daha kolay hale gelir, performans da sağlar, daha güvenli bir yapı oluşturur. 
MVC mimarisinden dolayı; iş mantalitesini ve görünümü birbirinden izole etmiş olur.




Model: 

Veritabanıyla yapılacak tüm veri alışverişini bu katman sağlamaktadır. Oluşturduğumuz veritabanı şeması sayesinde veritabanımızdaki tüm tablolar ve ilişki olduğu başka tablolar field'larına kadar Class yapısına dönüştürülür ve bir dosyada saklanır. Sadece Controller katmanı ile çalışır. Güncel hayattan örnek vermek gerekirse mesela biz  üşüdüğümüzü hissettik. Bu durumda biyolojide az çok görmüştük ne olur ? Öncelikle 5 duyu organımızdan birisi olan deri bunu algılar, sonra sinirlerle beyne gönderir ve  beyinde gelen bilgiler incelenip üşüdüğümüz kanısına varılır ve gerekli cevap yine sinirlerle duyu organımız olan deriye aktarılır ve titreme ya da benzeri bir üşüme tepkisi gösterilir. MVC modelinin bu gerçek hayattaki işlemeden hiçbir farkı bulunmamaktadır. Buradaki olayın mantalitesi dışarıdan alınan duyular içeride(beyinde) işlenir ve geriye bir sonuç(tepki) döner ve ne olup bittiğini dışarıdaki anlayamaz, böylece bizim işlemlerimiz izole edilmiş olunur;)  


Controller: 
Kullanıcı tarafından gelen ya da kullanıcıya döndürülecek verinin işlenmesi bu katmanda yapılır. 

View: 
Kullanıcı arayüzünün bulunduğu layerdır  görevi gösterilecek olan tepkiyi (veriyi) dışarıya sunmaktır.

Kullanıcı > View > Controller > Model > Controller > View > Kullanıcı

        MVC mimarisi ilk olarak JAVA tarafından geliştirilmiştir. Bu başarılı mimariyi Microsoft'da Framework 3.5 sürümü ile piyasaya sunmuştur. Yeni sürümleri hızla geliştirilmekte olup MVC2  piyasaya sürülmüştür ve diğer yeni sürümler için çalışmalar yapılmaktadır.

Büyük projelere katkıları:
- Kod karmaşıklığını çözmek en büyük amacı olduğundan; daha düzenli, daha anlaşılır ve daha sistematiktir.
- Kod karmaşıklığı çözüldüğü için performans artmaktadır.


Kısa bir örnekle açıklamak gerekirse;
Kullanıcı http://herhangibiradres/iletisim.xml  şeklinde bir request'te bulundu benim kullandığım MVC mimarisi bu isteği aldı frameworkde nereye gideceği yazılı olduğundan bu isteğin işlenmesi gereken Controller'a gitti bu da genellikle servletlarımızdır(Java classları) burada işlendi ve return olarak bize contact.jsp'yi gönderdi ve burada da gerekli bilgiler mevcut. Kullanıcının gönderdiği request http://herhangibiradres/iletisim.xml iken geriye dönen cevap http://herhangibiradres/contact.jsp ve kullanıcın görüntülemek istediği verilerde ekranda..

Burada servleta gelen istek, isteğin orada işlenmesi ve döndürdüğü response izole edilmektedir.
Büyük web projelerinin olmazsa olmazıdır:)

Teşekkürler..