Bu materyal, "Kurumsal Geliştirmeye Giriş" serisinin bir parçasıdır. Önceki makaleler:
- ağ hakkında
- yazılım mimarisi hakkında
- HTTP/HTTPS hakkında
- Maven'in temelleri hakkında
- servletler hakkında (basit bir web uygulaması yazmak)
- servlet kapsayıcıları hakkında
MVC'nin Tarihçesi
MVC'nin arkasındaki fikirler, 1970'lerin sonlarında Xerox PARC'ta çalışırken Trygve Reenskaug tarafından formüle edildi. O günlerde bilgisayarlarla çalışmak, bir derece ve sürekli olarak ciltler dolusu belgeleme çalışması gerektiriyordu. Reenskaug tarafından bir grup çok güçlü geliştiriciyle birlikte çözülen görev, sıradan bir kullanıcının bilgisayarla etkileşimini basitleştirmekti. Bir yandan son derece basit ve anlaşılır, diğer yandan bilgisayarları ve karmaşık uygulamaları kontrol etmeyi mümkün kılacak araçlar yaratmak gerekiyordu. Reenskaug, "her yaştan çocuk için" bir dizüstü bilgisayar geliştiren bir ekip üzerinde çalıştı - Alan Kay liderliğinde Dynabook ve SmallTalk dili. Bu, dostane bir arayüz kavramlarının ortaya konduğu zamandı. Pek çok açıdan, Reenskaug ve ekibi tarafından yapılan çalışma, BT alanının gelişimini etkiledi. İşte doğrudan MVC için geçerli olmayan, ancak bu gelişmelerin önemini gösteren ilginç bir gerçek. Alan Kaysöz konusu, "'84'te Apple'a ilk geldiğimde, Mac çoktan piyasadaydı ve Newsweek benimle iletişime geçti ve Mac hakkında ne düşündüğümü sordu. Ben de, 'Mac yeterince iyi olan ilk kişisel bilgisayar' dedim. eleştirilmek.' 2007'de iPhone'u duyurduktan sonra bana getirip verdi ve 'Alan, bu eleştirilecek kadar iyi mi' dedi. Ben de 'Steve, bu boyutu bir tablet kadar yap, dünyaya hükmedeceksin' dedim." 3 yıl sonra, 27 Ocak 2010'da Apple, 9,7 inç diyagonal iPad'i piyasaya sürdü. Başka bir deyişle Steve Jobs, Alan Kay'in tavsiyesine neredeyse tamamen uydu. Reenskaug'un projesi 10 yıl sürdü. Ancak MVC ile ilgili ilk yayın 10 yıl sonra gün yüzüne çıktı. Yazılım mimarisi üzerine birçok kitap ve makalenin yazarı olan Martin Fowler, Smalltalk'ın çalışan bir sürümünü kullanarak MVC üzerinde çalıştığından bahseder. Orijinal kaynaktan MVC hakkında uzun süre bilgi bulunmadığından ve diğer birkaç nedenden dolayı, bu kavramın çok sayıda farklı yorumu ortaya çıktı. Sonuç olarak, birçok kişi MVC'yi bir tasarım modeli olarak kabul eder. Daha az yaygın olarak, MVC'ye bileşik bir model veya karmaşık uygulamalar oluşturmak için birlikte çalışan birkaç modelin bir kombinasyonu denir. Ancak, daha önce de belirtildiği gibi, MVC aslında öncelikle farklı kalıplar kullanılarak çeşitli şekillerde uygulanabilen bir dizi mimari fikir/ilke/yaklaşımdır... Şimdi, MVC konseptinde gömülü olan ana fikirleri ele alacağız. ve diğer birkaç nedenden dolayı, bu kavramın çok sayıda farklı yorumu ortaya çıktı. Sonuç olarak, birçok kişi MVC'yi bir tasarım modeli olarak kabul eder. Daha az yaygın olarak, MVC'ye bileşik bir model veya karmaşık uygulamalar oluşturmak için birlikte çalışan birkaç modelin bir kombinasyonu denir. Ancak, daha önce de belirtildiği gibi, MVC aslında öncelikle farklı kalıplar kullanılarak çeşitli şekillerde uygulanabilen bir dizi mimari fikir/ilke/yaklaşımdır... Şimdi, MVC konseptinde gömülü olan ana fikirleri ele alacağız. ve diğer birkaç nedenden dolayı, bu kavramın çok sayıda farklı yorumu ortaya çıktı. Sonuç olarak, birçok kişi MVC'yi bir tasarım modeli olarak kabul eder. Daha az yaygın olarak, MVC'ye bileşik bir model veya karmaşık uygulamalar oluşturmak için birlikte çalışan birkaç modelin bir kombinasyonu denir. Ancak, daha önce de belirtildiği gibi, MVC aslında öncelikle farklı kalıplar kullanılarak çeşitli şekillerde uygulanabilen bir dizi mimari fikir/ilke/yaklaşımdır... Şimdi, MVC konseptinde gömülü olan ana fikirleri ele alacağız.MVC: Temel fikirler ve ilkeler
- VC, bir kullanıcı arayüzü ile karmaşık bilgi sistemleri oluşturmak için bir dizi mimari fikir ve ilkedir.
- MVC, şu anlama gelen bir kısaltmadır: Model-View-Controller
Adım 1. Uygulamanın iş mantığını kullanıcı arabiriminden ayırın
MVC'nin ana fikri, kullanıcı arayüzü olan herhangi bir uygulamanın 2 modüle ayrılabilmesidir: iş mantığını uygulamaktan sorumlu bir modül ve kullanıcı arayüzü. İlk modül, uygulamanın ana işlevselliğini uygulayacaktır. Bu modül, uygulamanın etki alanı modelinin uygulandığı sistemin çekirdeğidir. MVC paradigmasında bu modül M harfi yani modeldir. İkinci modül, verileri kullanıcıya görüntüleme ve uygulama ile kullanıcı etkileşimini yönetme mantığı da dahil olmak üzere tüm kullanıcı arabirimini uygular. Bu ayrımın temel amacı, sistemin çekirdeğinin (MVC terminolojisindeki "model") bağımsız olarak geliştirilip test edilebilmesini sağlamaktır. Bu ayrımı yaptıktan sonra uygulamanın mimarisi şöyle görünür:Adım 2 Modeli daha da bağımsız hale getirmek ve kullanıcı arayüzlerini senkronize etmek için gözlemci modelini kullanın
Burada 2 hedefimiz var:- Model için daha fazla bağımsızlık elde edin
- Kullanıcı arayüzlerini senkronize edin
Adım 3 Arayüzü görünüm ve denetleyici olarak ayırın
Uygulamayı modüllere ayırmaya devam ediyoruz, ancak şimdi hiyerarşide daha düşük bir seviyede. Bu adımda, (1. adımda ayrı bir modüle ayırdığımız) kullanıcı arabirimi bir görünüme ve bir denetleyiciye ayrılır. Görünüm ve denetleyici arasında kesin bir çizgi çizmek zordur. Görünüm, kullanıcının gördüğü şeydir ve denetleyici, kullanıcının sistemle etkileşime girmesini sağlayan mekanizmadır dersek, bir çelişkiye işaret edebilirsiniz. Bir web sayfasındaki düğmeler veya bir telefonun ekranındaki sanal klavye gibi kontrol öğeleri temel olarak denetleyicinin bir parçasıdır. Ancak, kullanıcı tarafından görünümün herhangi bir parçası kadar görünürler. Burada gerçekten bahsettiğimiz şey işlevsel ayırmadır. Kullanıcı arayüzünün ana görevi, kullanıcının sistemle etkileşimini kolaylaştırmaktır.- sistem bilgilerinin çıktısını alın ve kullanıcıya uygun şekilde görüntüleyin
- kullanıcı verilerini ve komutlarını girin (sisteme iletin)
- MVC paradigmasının ilkelerine göre, bir sistem modüllere bölünmelidir.
- En önemli ve bağımsız modül model olmalıdır.
- Model, sistemin çekirdeğidir. Kullanıcı arayüzünden bağımsız olarak geliştirilip test edilebilmelidir.
- Bunu başarmak için, bölmenin ilk adımında, sistemi bir modele ve kullanıcı arayüzüne ayırmamız gerekiyor.
- Ardından, gözlemci modelini kullanarak modelin bağımsızlığını destekliyoruz ve kullanıcı arayüzlerini senkronize ediyoruz.
- Üçüncü adım, kullanıcı arayüzünü bir denetleyiciye ve görünüme bölmek.
- Kullanıcı verilerini sisteme almak için gereken her şey denetleyicidedir.
- Kullanıcıya bilgi iletmek için gereken her şey görünümdedir.