MVC nedir? PHP, Java ve .NET de de bu kavram geçtiğini duymuştum.Yazılım dillerine göre farklılık gösterir mi?
comments
1 references
// Comments are closed.
MVC nedir? PHP, Java ve .NET de de bu kavram geçtiğini duymuştum.Yazılım dillerine göre farklılık gösterir mi?
// Comments are closed.
Tasarım desenleri dediğimiz kavramlardan birisi.
Sanıyorum web uygulamalarının hayatımıza daha çok girip, kendi kendine çalışan (standalone) uygulamaların azalmasıyla daha da popüler olan bir desen. Aslında sadece web ile sınırlı değil. Bir sunum (presentation) katmanı olan bütün uygulamalarda kullanılabilir.
Ben örneğimi jsp dosyaları üzerinden götürmeyi şu anda uygun buluyorum, ama php, asp üzerinden de aynı örnek verilebilir.
Uygulama yazmaya başladığımız zaman eğer yeterince deneyimli değilsek (benim eski kodlarıma baktığımda öyle yazdığımı görüyorum), uygulamamızın içindeki kavramsal olarak birbirinden ayrı olması gereken kısımları hep iç içe geçirmiş olduğumuz durumlarla karşılaşıyoruz ya da karşılaşacağız. Bir jsp dosyasının içinde birden veri tabanına bağlantı açıp, gelen sonuçlar üzerinde bazı işlemler yapıp göstermek gibi. Bunun nesi kötü diye düşünen arkadaşlar olabilir 🙂 Uygulamanızın kod tabanı büyüdükçe kodumuzun üzerindeki değişiklikleri yapmamız daha çok zaman almaya başlayacak. Normalde çok basit bir değişiklik yapmak istediğimiz zaman kodların karışıklığından dolayı kendi yazdığımız kodu anlamak, o kodu değiştirmek konusunda sıkıntılarımız büyümeye başlayacak. Hatta diğer bir konu eğer aynı proje içinde başka insanlar da çalışıyorsa o arkadaşlar da aynı sorunlarda boğuşacak. Daha önemli bir konu ise sadece üye tablomuzdan bir kod çekebilmek için farklı farklı kodlar yazacağız. Yani zaten olan bir kodu tekrar kullanmak (re-use) yerine tekrar tekrar yazmamız gerekmeye başlayacak. Okul okuyorsak ya da bireysel basit projeler yapıyorsak hâlâ bir faydası yokmuş, zahmete girmeye değmez gibi görünebilir. Ama birkaç yüz tablosu olan, onlarca ekranı bulunan bir uygulama yazıyorsanız olayların rengi biraz değişiyor.
Bunun için ne yapmış deneyimli abilerimiz? Demişler ki biz ekranda gösterdiğimiz kısmı (presentation/view) ve aslında bizim işimizi yapan kısmı (controller/business) birbirinden ayıralım. Aslında daha detaya inersek controller dediğimiz kısmı daha da ayırıyoruz ama ben şimdilik o kadar detaya girmeyeyim. Bu iki katman arasında da bilgilerin taşınabilmesi için kendimize modellerimizi belirleyelim. Modeller sunum katmanı bazlı olabilir, veya nasıl ihtiyaç duyuluyorsa artık. Böylelikle aslında görselimiz, iş katmanımız birbirinden temiz bir şekilde ayrılmış olur, iletişimi de modellerimiz üzerinden sağlamış oluruz. Daha temiz kod, neyi nerede arayacağın biraz daha belli.
Şimdi aslında kavram olarak basit. Biraz deneyimi olan arkadaşlarımız kendi MVC yapılarını da kurabilir. Ama piyasada kullanılan başarılı MVC uygulama çatıları bulunuyor zaten, uğraşmanıza gerek kalmayabilir. Tabii seçim sizin. Tecrübe anlamında yazılmaya çalışılabilir.
Bu yazdığımız uygulama web uygulaması mı olması gerekiyor diye düşünebiliriz. En basit anlamda yazdığımız uygulamanın bir ekran arayüzü varsa mvc uygulamanız için yeterli. Yani web olmasına gerek yok. Zira java üzerinde swing, java fx ile yazabiliriz.
Kısaca MVC deseği veren birkaç uygulama çatısı (framework) adı verelim.
Java : Spring MVC(piyasa lideri / endüstri standardı), Play (orijinalde scala ama javada da kullanılabiliyor), JSF (aslında kavramsal olarak tam MVC’ye denk geliyor mu biraz tartışılabilir, ama MVC olarak isimlendiriliyor)
.NET : Sanıyorum uzağa gitmeden direk .net MVC olması lazım. Yanlış hatırlamıyorsam Spring.net de var.
PHP : çok. Son zamanlarda revaşta olan Laravel, en bilinenlerinden Zend Framework, Cake PHP, vb…
Ruby : ROR
Python : django
Javascript : Node JS için Sails, front-end bazlı AngularJS
vs.. vs..
Hemen her dilde her ortamda bir örneğini bulabilirsiniz.
Bu view ile controller arasındaki bağlantı nasıl kurulur gibi bir soruya karşı birkaç satırlık bir kod ekliyorum. Kod Php/laravel örneği.
our_view.php
contoller.php
Kısaca bir div içinde mesaj göstermeyi planlıyoruz. İşlemlerimizi yaptık ve sonuç değerini aldık ayrıca bir de mesajımız var. View kodu zaten our_view.php, controller kodu da controller.php peki model hangisi? o da kod içinde gördüğümüz koyu yazılmış kısım. controller.php içinden our_view adındaki view dosyamızı belirledik ve view fonksiyonunun ikinci parametresi olarak bir array geçirdik. O array içinde de sonuc ve mesaj değişkenimiz var. Bu kısım da modelimiz oluyor. Biz buradan ne mesaj verirsek o mesaj görünecek.
Çok iyi oturması için biraz örnek yapmak gerekiyor sanırım. Laravel’in kullanımı kolay tavsiye ederim. Ama diğer dillerde tecrübeniz varsa tabi onlar üzerinden de örnekler yapılabilir.