Bir çoğumuzun RoR ile duyduğu kimimizin yeniden farkına vardığı yapı olan MVC ilk olarak 1979 senesinde Trygve Reenskaug adlı şahıs tarafından açıklanmış. Biz kısaca açıklarsak MVC yapısı kod ile görünümü birbirinden ayırmak amaçlı kullanılır. Yani bir olaya ait yordamları ayıran sistem (controller) bunu işler (model) ve kişiye yansıtır (view).
bundan sonrası kullanacağım terimler şu şekilde olacaktır:
controller = denetleyici
model = şablon
view = görünüm
yol, yordam:

hepsi birbiriyle ilintili
Denetleyici, şablon ve görünüm birbirleriyle direkt ilişki içerisindedir. Örn. denetleyici kullanıcıdan istekleri "görünüm" üzerinden alır, şablonda işler, görünüm işlenen verileri kullanır.
bir örnek:
mvc yapısına ait bir örneği bildirgeç üzerinde verelim. örneğin bu yazıyı kaydederken yapacağımız olayları mvc yapısında düşünelim.
- "yazıyı kaydet" düğmesine bastık. (görünüm)
- denetleyici yazıyı kaydete basıldığını anladı. (denetleyici)
- bu bilgi şablona iletildi. (şablon)
- şablon denetleyiciden gelen bilgiler doğrultusunda veriyi işledi. (şablon)
- şablondan alınan bilgiler tasarım halinde kullanıcıya yansıtıldı. (görünüm)
sadece web'te mi var mvc?
mvc yalnızca web için kullanılmaz. örneğin bir delphi, bir visual basic, bir qt4, bir java swing, bir cocoa da mvc yapısına örnektir. ilk olarak mvc'de zaten smalltalk için uygulama arayüzü için düşünülmüş.
bundan sonrasında mvc biçemli yazılım geliştirebileceğimiz alt yapıları tanıyacağız sırayla.
bir değişiklik olmazsa hatta sıra şu şekilde olacak:
- ruby on rails (ruby)
- cakephp (php)
- monorail (mono, .net)
- django (python)
- struts (jsp)
- symfony (php)
...
- muarifer
- 3 yorum var
- 23 Kasım 2006 13:30
« önceki yazı Elma'nın kurtları ortaya çıkıyor... |
sonraki yazı » Wireless üzerinden enerji gönderi mi mümkün mü? |
Yorumlar
mvc temel olarak "kod ile görünümü birbirinden ayırmak" için değil, "kod ile görünümün yaptığı işleri birbirinden ayırmak" için kullanılır.
amaç, iş mantığı için kullanılan yapıyı (model) herhangi bir gui,webservice gibi iletişim kanalından bağımsız hale getirmektir.
örnek vermek gerekirse, verilen iki tarih için pillinetwork'e bağlanan kullanıcıları listeleyen bir rapor olsun.bu rapora browser,desktop application,webservice gibi farklı view'lardan erişebileceğimiz fazedelim.bu kanalların hepsi için aynı ya da her biri için farklı controllerlar kullanılabilir.farzedelim ki bizim controller'ımız bir servlet olsun.bu servlet öncelikle view tarafında yapılsa bile, sorguyu yapmak için gerekli olan parametrelerin geçerli,doğru olup olmadığını kontrol eder (ör: ilk tarih son tarihten küçük mü,o ay 31 gün sürüyor mu,o gün tatil mi vs..)
bu parametre olarak verilen tarih, faklı formatlarda olabilir (ör: dd/mm/yyyy veya mm/dd/yy gibi) controller bu veriyi modelin istediği formata çevirir ve model içerisinden gerekli method'u çağırır.model kendi içerisinde başka modellere,controllera vs. ye gidebilir bu bizi ilgilendirmez.daha sonra gelen sonucu controller alır tekrar view a iletir.burada yine örnek olarak tarih browser için faklı,webservice için faklı olarak izlenmek istenebilir bu işi de yine view katmanı yapar.model katmanı burada parametlerin nasıl geldiği ile ve sonuçların nasıl gösterildiği ile ilgilenmez.
bu kadar zahmete niye girilir peki dersek, dağıtık yapılarda faklım modellere faklı view'lar,servisler ile ulaşmak gerekebilir, bu katmanlar birbirinden bağımsız şekilde geliştirilmiş olabilir.eğer bu katmanlar mvc mantığı ile gelişrilmişse birbirine entegrasyonu,bakımı kolay ve sorunsuz olur.bunları birbirine bağlamak için ise dependency injection gibi yöntemler kullanılabilir.
java swing ise tek başına bir mvc framework'u değil, mvc için kullanılabilecek bir view katmanıdır.
| bestanealtcizgi | |
|
|
(0 puan) |
|
| 23 Kasım 2006 14:14 |
symfonyi öne alsak biraz :) hani ötekilerden iyi sanki. yahoo bookmarks filan kullanmaya başlamış. gerçi ben kendi framework yapımı oluştumayı deniyorum ama ilham almaya açığım :)
| zee | |
|
|
(0 puan) |
|
| 23 Kasım 2006 17:37 |
@bestanealtcizgi;
gerekli düzeltmeler ve daha detaylı/doğru bilgi için teşekkürler.
| muarifer | |
|
|
(0 puan) |
|
| 24 Kasım 2006 21:58 |
pillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.
İlgili Yazılar
- Adım Adım Ruby On Rails Uygulaması Geliştirimi ... (7)
- Açık Kaynak Django Projeleri (1)
- yazılım geliştiririm tek başıma (0)
- Ruby Artık Cebinizde. Ruby For Symbian (0)
- geçmişten bugüne programlama dilleri (4)
- Kodlarımızı Yarıştıralım: Az Harf Çok Puan (1)
- netbeans ruby desteklerse (0)
- Yazılım Geliştirme Egzersizleri (0)
- Yılın Programlama Dili: Ruby (0)
- Ruby On Rails 1.2 (4)
Bu Yazıyı Tutanlar
Beğendiğiniz bir yazıya "tuttum" demek için başlığın yanındaki yıldıza tıklayabilirsiniz.


