MVC bir Tasarım Modeli mi yoksa Mimari bir model mi


109

Sun ve Msdn'e göre bir tasarım kalıbıdır.

Wikipedia'ya göre mimari bir model

Tasarım desenleriyle karşılaştırıldığında, mimari desenler ölçek olarak daha büyüktür. (Wikipedia - Mimari desen )

Ya da bir tasarım deseni olan mimari bir desen mi?

Hangisi doğru ?


1
Çünkü Tek Doğru Cevap olmalı ...
Mike G

Product Madness'teki Dave'e göre, MVC bir tasarım modelidir ve RobotLegs de öyle. : P
andygoestohollywood

Yanıtlar:


56

MVC daha çok mimari bir modeldir, ancak eksiksiz uygulama için değildir. MVC, çoğunlukla bir uygulamanın UI / etkileşim katmanıyla ilgilidir. Yine de iş mantığı katmanına, belki biraz hizmet katmanına ve veri erişim katmanına ihtiyacınız olacak. Yani, çok katmanlı bir yaklaşıma giriyorsanız.


16
Evet, MVC'nin Sunum katmanınız için bir mimari model olduğunu söyleyebilirim.
murki

8
"MVC çoğunlukla bir uygulamanın kullanıcı arayüzü / etkileşim katmanıyla ilgilidir" konusunda kesinlikle katılmıyorum. MVC "M" / model olduğunu muhtemelen birden kısımda bölmek istediğiniz istediğiniz işletme tabakası.
mewm

Evet bu cevap yanlış. MVC kesinlikle UI / Etkileşim ile ilgili değildir. Ön uç tarafında ve arka uç tarafında mükemmel bir şekilde mvc'ye sahip olabilirsiniz, başlangıçta genellikle sadece bir html / js veya bir .jsp veya bir .phtml vardı ve sunucu denetleyiciyi ve modeli tanımlar. Örnek JSP (görünüm), JavaBeans (Model), Servlet (denetleyici). Tüm ünlü php çerçevesi ile aynı konsept (senfoni, zend, kek vb.). Ancak günümüzde ön uç çerçeveleri arka uç uygulamasına benziyor ve modern javascript çerçeveleri mvc kullanıyor (görünümünüzü html, komut dosyanızı denetleyin ve js nesnelerinizi varlık olarak
modelleyin

40

Neden biri doğru olmak zorunda?

Bakış açısına bağlı olarak her ikisi de doğru olabilir.

MVC, uygulama mimarisinin temelini oluşturuyorsa, mimari bir model olabilir.

Ayrıca herhangi bir uygulamaya uygulanabilen soyut bir kavram olan basit bir tasarım modeli olarak da görülebilir.


27

Tasarım kalıpları, kodun nasıl etkili bir şekilde yazılacağını söyler ( Kod Ölçütleri dikkate alınarak ).

Birkaç avantaj:

  1. Bakımı Kolay
  2. Yüksek Yeniden Kullanılabilirlik
  3. Soyutlamalar nedeniyle okunabilir

Mimari desenler , kaynakları nasıl etkin bir şekilde kullanacağını söyler.

  1. Programcılar ve grafik tasarımcılar gibi paralel görev yürütme paralel çalışabilir.
  2. Bir yazılım oluşturmak için birden fazla teknoloji kullanılabilir.

MVC'de a). Görünümler javascript şablonları kullanılarak oluşturulabilir ve ayrıca html kullanılabilir b). Denetleyiciler .NET çerçevesi ve c) olarak yazılabilir . Modeller Java'da yazılabilir - yalnızca json verilerini döndüren bir java hizmeti kullanılabilir.

Tasarım modelinde ise, bir desen edemez hangi kod Java AdminUser sınıfında, C # Müşteri sınıfına Partners sınıfında Php ve :) Ruby bir fabrika deseni gibi birden teknolojilerinde yazılabilir uygulanacak; hmmm..çok kolay? :)


6

Bir süre önce yanıtlandığını biliyorum, ancak henüz hiç kimse MVC'yi ünlü yapan kitaptan bahsetmedi: Buschmann ve diğerleri tarafından 1996'da yayınlanan Desen Odaklı Yazılım Mimarisi (POSA). Tasarım Modelleri kitabı kadar yaygın olmasa da , Gamma ve diğerleri tarafından POSA, kalıp topluluğu tarafından kullanılan temel kitaplardan biridir.

Oh, ve POSA, MVC'yi mimari bir model olarak çok net bir şekilde tanımlar. Benim önsezim, MS ve Sun'ın özensiz davrandıkları ve her kalıbı bir "tasarım kalıbı" olarak adlandırdıklarıdır.


3

İkisinin de doğru olduğunu düşünüyorum. Ruby on Rails gibi bir çerçevede belirli bir MVC somutlaştırmasına bakıyorsanız , bu örnekleme daha çok bir tasarım modelidir. MVC'ye genel bir kavram olarak bakarsanız, daha çok mimari bir modeldir.


3

Model / Görünüm / Denetleyici (MVC) üçlü sınıfının içindeki tasarım modelleri aşağıdakileri içerir ve bunlarla sınırlı olmayabilir:

  • Gözlemci , nesneleri ayırarak, birindeki (modeldeki) değişiklikler, değiştirilen nesnenin (model) diğerlerinin ayrıntılarını (görünümler) bilmesini gerektirmeden diğerlerini (görünümleri) etkileyebilir.

  • Bileşik , bir grup nesnesini (birleşik bir görünüm) aynı nesnelerin tek tek nesnelerini (görünüm bileşenleri) ele aldığımız gibi ele almamızı sağlar.

  • Strateji bir görünüşüdür, belirli bir tepki stratejisi uygulamak için bir Kontrol alt sınıfının bir örneğini kullanır; farklı bir strateji uygulamak için örneği farklı türde bir denetleyiciyle değiştirmeniz yeterlidir.

  • Fabrika Yöntemi , bir görünüm için varsayılan denetleyici sınıfını belirtir.

  • Dekoratör , bir görünüme kaydırma ekleyerek.


Referans

  • Sayfa 4-6 (Bölüm 1.2 Smalltalk MVC'de Tasarım Modelleri)
  • Sayfalar 293 ila 304 (Gözlemci tasarım deseni)
  • Sayfalar 163-174 (Kompozit tasarım deseni)
  • Sayfalar 315-324 (Strateji tasarım modeli)
  • Sayfalar 107 ila 116 (Fabrika Yöntemi tasarım şablonu)
  • Sayfalar 175 ila 185 (Dekoratör tasarım deseni)

Eric Gamma, Richard Helm, Ralph Johnson ve John Vlissides. Tasarım Desenleri: Yeniden Kullanılabilir Nesne Yönelimli Yazılımın Öğeleri . Addison-Wesley, Reading, MA, 1994.


1
Teşekkürler, diğer tüm cevaplar yanlış. Kesinlikle "bir bakış açısına bağlı" değildir ve düzinelerce veya yüzlerce oy almak yanlış bir şeyi doğru yapmaz. MVC bir tasarım kalıbı değildir, kodunuzu bahsettiğiniz birkaç tasarım kalıbını kullanarak 3 katmanda yapılandırmanın bir yoludur. Sahne arkasındaki MVC'yi uygulayan tüm çerçeve, Gözlemlenebilir, Strateji ve bileşik model konseptini kullanır. MVC'yi anlamanın en iyi yolu, kendi uygulamanızı yaratmaktır ve ardından arkasındaki tasarım modellerini anlayacaksınız.
amdev

2

MVC, yazılım mimarisi kitaplarında sunum katmanı olarak hep bahsedilmiş ve tanıtılmıştır.

Bu kitapları okuyun:

  1. İşletmeler için Microsoft.NET Çözümlerinin Mimarisi (Microsoft basımı)

  2. Profesyonel ASP.NET tasarım desenleri (Wrox)

  3. Microsoft.NET Kullanan Enterpise Çözüm Modelleri (Microsoft Press)

  4. Kurumsal Uygulama Mimarisinin Kalıpları (Addison Wesley)

  5. Kurumsal Mimari İçin Pratik Bir Kılavuz (Prentice Hall)


6
neden 2 cevap? bu yanıtı
birincinize

2

Bir odaya on yazılım mimarı yerleştirirseniz ve Model-Görünüm-Denetleyici modelinin ne olduğunu tartışmalarını isterseniz, sonuçta on iki farklı fikir elde edersiniz. … Dışarıdaki püristlerin bazıları, benim “MVC” dediğim şeyden kaçınılmaz olarak endişelenecekler. Bu Web sayfasının altındaki mesaj panosuna ateşli bir yorum bırakmaktan çekinmeyin. MVC'nin ne anlama geldiğine dair farklı bakış açılarını seve seve eğlendireceğim, ancak umursamadığımı da unutmayın.

Josh Smith


1

Martin Fowler'a göre bunlar GUI mimarileri: Martin Fowler-GUI mimarileri

Sadece GUI ile ilgili sınıfları etkilediği için uygulamanın boyutuna bağlıdır, küçük bir tanesinde (çoğunlukla GUI) mimari bir model olarak kabul edilebilirken, büyük bir tanesinde sadece GUI'ye uyguladığınız bir tasarım modeli olacaktır. kod (uygulama kodunun% 10'u olabilir).


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.