wake-up-neo.net

Ist MVC ein Entwurfsmuster oder ein Architekturmuster?

Nach Sun und Msdn handelt es sich um ein Entwurfsmuster.

Laut Wikipedia handelt es sich um ein Architekturmuster

Architekturmuster sind im Vergleich zu Entwurfsmustern größer. (Wikipedia - Architekturmuster )

Oder ist es ein Architekturmuster, das auch ein Entwurfsmuster hat?

Welches ist wahr ?

101
JCasso

MVC ist eher ein Architekturmuster, aber nicht für die vollständige Anwendung. MVC bezieht sich hauptsächlich auf die Benutzeroberfläche/Interaktionsschicht einer Anwendung. Sie benötigen weiterhin eine Geschäftslogikschicht, möglicherweise eine Dienstschicht und eine Datenzugriffsschicht. Das heißt, wenn Sie in n-Tier-Ansatz sind.

51
user151323

Warum muss einer von ihnen wahr sein?

Beides kann je nach Sichtweise zutreffen.

MVC kann ein Architekturmuster sein, wenn es die Grundlage der Anwendungsarchitektur bildet.

Es kann auch als einfaches Entwurfsmuster angesehen werden, ein abstrakter Begriff, der auf jede Anwendung anwendbar ist.

38
Oded

Entwurfsmuster geben an, wie Code effektiv geschrieben werden kann (unter Berücksichtigung von Codemetriken ).

Ein paar Vorteile:

  1. Einfach zu warten
  2. Hohe Wiederverwendbarkeit
  3. Lesbar wegen Abstraktionen

Architekturmuster zeigen, wie Ressourcen effektiv genutzt werden können.

  1. Parallele Aufgaben wie Programmierer und Grafiker können parallel ausgeführt werden.
  2. Zum Erstellen einer Software können mehrere Technologien verwendet werden.

In MVC können a). Ansichten mithilfe von JavaScript-Vorlagen erstellt und auch HTML verwendet werden b). Controller können in .NET Framework und c) geschrieben werden. Modelle können in Java - geschrieben werden. Es kann ein Dienst Java verwendet werden, der nur JSON-Daten zurückgibt.

Im Entwurfsmuster kann kein Muster implementiert werden , in dem Code in mehreren Technologien geschrieben werden kann, z. B. in der AdminUser-Klasse in Java, in der Customer-Klasse in C #, Partnerklasse in PHP und ein Factory-Pattern in Ruby :); hmmm..so einfach? :)

26
vrluckyin

Ich weiß, dass es vor einiger Zeit beantwortet wurde, aber niemand hat das Buch erwähnt, das MVC berühmt gemacht hat: Pattern-Oriented Software Architecture (POSA) von Buschmann et al., Das 1996 veröffentlicht wurde. Obwohl es nicht so weit verbreitet ist wie das Design Patterns-Buch , von Gamma et al., ist POSA eines der grundlegenden Bücher, die von der Mustergemeinschaft verwendet werden.

Oh, und POSA identifiziert MVC sehr deutlich als Architekturmuster. Meine Vermutung ist, dass MS und Sun nur schlampig sind und jedes Muster als "Entwurfsmuster" bezeichnen.

6
John

Ich denke beides ist wahr. Wenn Sie sich ein bestimmtes Instanziierung von MVC in einem Framework wie Ruby on Rails) ansehen, ist diese Instanziierung eher ein Entwurfsmuster a allgemeines Konzept, es ist eher ein Architekturmuster.

3
Jim Ferrans

Wenn Sie zehn Software-Architekten in einen Raum setzen und sie über das Model-View-Controller-Muster diskutieren lassen, erhalten Sie zwölf verschiedene Meinungen. … Einige der Puristen da draußen werden unweigerlich Bedenken mit dem haben, was ich als „MVC“ bezeichne. Fühlen Sie sich frei, einen flammenden Kommentar im Nachrichtenfeld am Ende dieser Webseite zu hinterlassen. Ich werde gerne verschiedene Perspektiven auf das, was MVC bedeutet, unterhalten, aber denke daran, dass es mir egal ist.

Josh Smith

2

Zu den Entwurfsmustern innerhalb der MVC-Klassentriade (Model/View/Controller) gehören unter anderem:

  • Observer, Entkoppeln von Objekten, so dass Änderungen an einem (dem Modell) eine beliebige Anzahl von anderen (den Ansichten) beeinflussen können, ohne dass das geänderte Objekt (das Modell) Details der anderen (den Ansichten) kennen muss ).

  • Composite, mit dem wir ein Gruppenobjekt (eine zusammengesetzte Ansicht) genauso behandeln können wie eines seiner einzelnen Objekte (Ansichtskomponenten).

  • Strategy, wobei eine Ansicht eine Instanz einer Controller-Unterklasse verwendet, um eine bestimmte Antwortstrategie zu implementieren; Um eine andere Strategie zu implementieren, ersetzen Sie einfach die Instanz durch einen anderen Controllertyp.

  • Factory Method, Angabe der Standard-Controller-Klasse für eine Ansicht.

  • Decorator, Hinzufügen eines Bildlaufs zu einer Ansicht.


Referenz

  • Seiten 4 bis 6 (Abschnitt 1.2 Entwurfsmuster in Smalltalk MVC)
  • Seiten 293 bis 304 (Observer-Entwurfsmuster)
  • Seiten 163 bis 174 (zusammengesetztes Entwurfsmuster)
  • Seiten 315 bis 324 (Strategieentwurfsmuster)
  • Seiten 107 bis 116 (Factory Method-Entwurfsmuster)
  • Seiten 175 bis 185 (Dekorateur Entwurfsmuster)

Eric Gamma, Richard Helm, Ralph Johnson und John Vlissides. Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software . Addison-Wesley, Reading, MA, 1994.

2
George

MVC wurde immer als/in Präsentationsschicht in Softwarearchitekturbüchern erwähnt und eingeführt.

Lesen Sie diese Bücher:

  1. Architektur von Microsoft.NET-Lösungen für Unternehmen (Microsoft Press)

  2. Professionelle ASP.NET-Entwurfsmuster (Wrox)

  3. Enterpise Solutions Patterns mit Microsoft.NET (Microsoft Press)

  4. Muster der Unternehmensanwendungsarchitektur (Addison Wesley)

  5. Ein praktischer Leitfaden zur Unternehmensarchitektur (Prentice Hall)

2

Und laut Martin Fowler handelt es sich um GUI-Architekturen: Martin Fowler-GUI-Architekturen

Dies hängt von der Größe der Anwendung ab, da nur GUI-bezogene Klassen betroffen sind. In einer kleinen (meistens GUI) kann dies als Architekturmuster angesehen werden, während es sich in einer großen nur um ein Entwurfsmuster handelt, das Sie auf die GUI anwenden Code (könnte 10% des Apps-Codes sein).

1
Iker Jimenez

MVC ist ein Architekturmuster. Sehr deutlich angegeben und gezeigt unter http://molecularsciences.org/zend/mvc_model_view_controller

0
Nazim