Model görünüm denetleyici - Model–view–controller

MVC desenindeki etkileşim şeması

Model görünüm denetleyici (genellikle olarak bilinir MVC) bir yazılım tasarım deseni[1] yaygın olarak geliştirmek için kullanılır Kullanıcı arayüzü ilgili program mantığını birbirine bağlı üç öğeye böler. Bu, bilginin dahili temsillerini, bilginin kullanıcıya sunulma ve kullanıcıya kabul edilme yollarından ayırmak için yapılır.[2][3]

Geleneksel olarak masaüstü için kullanılır grafik kullanıcı arayüzleri (GUI'ler), bu model tasarım için popüler hale geldi Web uygulamaları.[4] Şuna benzer popüler programlama dilleri JavaScript, Python, Nesne Pascal / Delphi, Yakut, PHP, Java, C #, ve Swift doğrudan web veya mobil uygulama geliştirme için kullanılan MVC çerçevelerine sahip olmak kutudan dışarı.

Bileşenler

Modeli
Desenin merkezi bileşeni. Uygulamanın kullanıcı arayüzünden bağımsız dinamik veri yapısıdır.[5] Uygulamanın verilerini, mantığını ve kurallarını doğrudan yönetir.
Görünüm
Grafik, şema veya tablo gibi bilgilerin herhangi bir temsili. Yönetim için bir çubuk grafik ve muhasebeciler için bir tablo görünümü gibi aynı bilgilerin birden çok görünümü mümkündür.
Kontrolör
Girişi kabul eder ve model veya görünüm için komutlara dönüştürür.[6]

Uygulamayı bu bileşenlere bölmeye ek olarak, model-görünüm-kontrolör tasarımı aralarındaki etkileşimleri tanımlar.[7]

  • Model, uygulamanın verilerini yönetmekten sorumludur. Kontrolörden kullanıcı girdisi alır.
  • Görünüm, modelin belirli bir formatta sunulması anlamına gelir.
  • Denetleyici, kullanıcı girdisine yanıt verir ve veri modeli nesneleri üzerinde etkileşimler gerçekleştirir. Denetleyici girdiyi alır, isteğe bağlı olarak doğrular ve girdiyi modele iletir.

Diğer yazılım modellerinde olduğu gibi, MVC bir soruna "çözümün özünü" ifade ederken, her sistem için uyarlanmasına izin verir.[8] Belirli MVC tasarımları, buradaki geleneksel açıklamadan önemli ölçüde farklılık gösterebilir.[9]

Tarih

Grafik kullanıcı arayüzlerinin erken geliştirilmesindeki ufuk açıcı bilgilerden biri olan MVC, yazılım yapılarını kendi açısından tanımlayan ve uygulayan ilk yaklaşımlardan biri oldu. sorumluluklar.[10]

Trygve Reenskaug MVC'yi tanıttı Smalltalk Xerox'u ziyaret ederken -79 Palo Alto Araştırma Merkezi (PARC)[11][12] 1970 lerde. 1980'lerde Jim Althoff ve diğerleri Smalltalk-80 sınıf kitaplığı için bir MVC sürümü uyguladılar. Ancak daha sonra 1988 tarihli bir makale Nesne Teknolojisi Dergisi (JOT) MVC'yi genel bir kavram olarak ifade eder.[13]

MVC modeli sonradan gelişti,[14] gibi değişkenlere yol açan hiyerarşik model-görünüm-denetleyici (HMVC), model görünüm bağdaştırıcı (MVA), model-görünüm-sunucu (MVP), model-görünüm-görünüm modeli (MVVM) ve MVC'yi farklı bağlamlara uyarlayan diğerleri.

MVC modelinin web uygulamalarında kullanımı, piyasaya sürüldükten sonra popülaritesini artırdı. Sonraki 's WebObjects 1996 yılında, orijinal olarak Amaç-C (Smalltalk'tan büyük ölçüde ödünç alınmış) ve MVC ilkelerinin uygulanmasına yardımcı oldu. Daha sonra, MVC modeli, WebObjects, Java. Java için sonraki çerçeveler, örneğin İlkbahar (Ekim 2002'de piyasaya sürüldü), Java ve MVC arasındaki güçlü bağı sürdürdü. Çerçevelerin tanıtımı Django (Temmuz 2005, için Python ) ve Raylar (Aralık 2005, için Yakut ), her ikisi de hızlı dağıtım üzerinde güçlü bir vurgu yapan MVC'nin uzun süredir popüler olduğu geleneksel işletme ortamının dışındaki popülerliğini artırdı. MVC web çerçeveleri artık MVC olmayan web'e göre büyük pazar paylarına sahip araç takımları.[kaynak belirtilmeli ]

Web uygulamalarında kullanın

Başlangıçta masaüstü bilgi işlem için geliştirilmiş olmasına rağmen, MVC yaygın olarak bir tasarım olarak benimsenmiştir. Dünya çapında Ağ büyük uygulamalar Programlama dilleri. Birkaç web çerçeveleri kalıbı uygulayan yaratılmıştır. Bunlar yazılım çerçeveleri yorumlarında farklılık gösterir, esas olarak MVC sorumluluklarının istemci ve sunucu.[15]

Bazı web MVC çerçeveleri bir zayıf müşteri neredeyse tüm modeli, görünümü ve denetleyici mantığını sunucuya yerleştiren yaklaşım. Bu, aşağıdaki gibi çerçevelere yansıtılır Django, Raylar ve ASP.NET MVC. Bu yaklaşımda, müşteri ikisinden birini gönderir köprü istek veya form denetleyiciye gönderimler ve ardından görünümden eksiksiz ve güncellenmiş bir web sayfası (veya başka bir belge) alır; model tamamen sunucuda mevcuttur.[15] Gibi diğer çerçeveler AngularJS, EmberJS, JavaScriptMVC ve Omurga MVC bileşenlerinin kısmen istemcide yürütülmesine izin verin (ayrıca bkz. Ajax ).[kaynak belirtilmeli ]

Ayrıca bakınız

Referanslar

  1. ^ https://www.youtube.com/watch?v=o_TH-Y78tt4&t=1667
  2. ^ Reenskaug, Trygve; Coplien, James O. (20 Mart 2009). "DCI Mimarisi: Nesne Tabanlı Programlamanın Yeni Bir Vizyonu". Artima Geliştirici. Arşivlenen orijinal (html) 23 Mart 2009. Alındı 3 Ağustos 2019. Daha derin bir şekilde, çerçeve, bilginin temsilini kullanıcı etkileşiminden ayırmak için mevcuttur.
  3. ^ Burbeck (1992): "... kullanıcı girdisi, dış dünyanın modellenmesi ve kullanıcıya görsel geri bildirim, açıkça birbirinden ayrılır ve üç tür nesne tarafından yönetilir."
  4. ^ Davis, Ian. "MVC'nin Faydaları Nelerdir?". İnternet Simyası. Alındı 2016-11-29.
  5. ^ Steve Burbeck (1992) Smalltalk-80'de Programlama Uygulamaları: Model – Görünüm – Denetleyici (MVC) nasıl kullanılır
  6. ^ Basit MVC Örneği (Model – Görünüm – Denetleyici) Soyutlama için Mimari Model
  7. ^ Buschmann, Frank (1996) Desen Odaklı Yazılım Mimarisi.
  8. ^ Gamma, Erich vd. (1994) Tasarım desenleri
  9. ^ Moore, Dana vd. (2007) Profesyonel Zengin İnternet Uygulamaları: Ajax ve Ötesi: "MVC'nin başlangıcından bu yana, modelin birçok yorumu yapıldı. Konsept, çok çeşitli sistemlere ve mimarilere çok farklı şekillerde uyarlandı ve uygulandı."
  10. ^ Model – Görünüm – Denetleyici Geçmişi. C2.com (2012-05-11). Erişim tarihi: 2013-12-09.
  11. ^ Notlar ve Tarihsel belgeler MVC'nin mucidi Trygve Reenskaug'dan.
  12. ^ "DynaBook gereksinimleri hakkında bir not", Trygve Reenskaug, 22 Mart 1979, SysReq.pdf.
  13. ^ Krasner, Glenn E .; Pope, Stephen T. (Ağustos-Eylül 1988). "Smalltalk-80'de model görünüm denetleyicisi kullanıcı arabirimi paradigmasını kullanmak için bir yemek kitabı". Nesne Teknolojisi Dergisi. SIGS Yayınları. 1 (3): 26–49. Ayrıca "Smalltalk-80 Sistemindeki Model – Görünüm – Denetleyici Kullanıcı Arabirimi Paradigmasının Açıklaması "(Rapor), ParcPlace Systems; Erişim tarihi: 2012-06-05.
  14. ^ MVC ve diğer UI mimarilerinin evrimi Martin Fowler'dan.
  15. ^ a b Leff, Avraham; Rayfield, James T. (Eylül 2001). Model / Görünüm / Kontrolör Tasarım Desenini Kullanarak Web Uygulaması Geliştirme. IEEE Kurumsal Dağıtılmış Nesne Hesaplama Konferansı. sayfa 118–127.

Kaynakça