Tam o sırada, başka bir pillinetwork sitesi olan 10marifet.org'da: "Penguenler Üşümesin!"

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
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.

  1. "yazıyı kaydet" düğmesine bastık. (görünüm)
  2. denetleyici yazıyı kaydete basıldığını anladı. (denetleyici)
  3. bu bilgi ÅŸablona iletildi. (ÅŸablon)
  4. ÅŸablon denetleyiciden gelen bilgiler doÄŸrultusunda veriyi iÅŸledi. (ÅŸablon)
  5. ş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üş.

sonrası?
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:
  1. ruby on rails (ruby)
  2. cakephp (php)
  3. monorail (mono, .net)
  4. django (python)
  5. struts (jsp)
  6. symfony (php)
    ...
Spacer
Spacer
 | 3 yorum var 
 | 23 Kasım 2006 13:30 

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  |  (1 puan) 23 Kasım 2006 17:37

@bestanealtcizgi;
gerekli düzeltmeler ve daha detaylı/doğru bilgi için teşekkürler.

muarifer  |  (1 puan) 24 Kasım 2006 21:58

üye olunpillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.

Bu Yazıyı Tutanlar

Beğendiğiniz bir yazıya "tuttum" demek için başlığın yanındaki yıldıza tıklayabilirsiniz.

Bu yazıyı rapor et. Kural dışı içeriğe rastladığınızda editörlerimize rapor ederek müdahale edilmesini sağlayabilirsiniz. (Hangi durumlarda rapor edebilirim?)
bildirgec.org bölümleri
pillinetwork hesabınızla giriş yapın.

son yorumlar

bildirgecinfo

bildirgec.org içeriği kullanıcıları tarafından üretilen kolektif bir blogdur.

network siteleri

RSS Dosyası
pillikutu