MVC est-il un modèle de conception ou un modèle architectural?

109

Selon Sun et Msdn, il s'agit d'un modèle de conception.

Selon Wikipedia, c'est un modèle architectural

Par rapport aux modèles de conception, les modèles architecturaux sont à plus grande échelle. (Wikipédia - Motif architectural )

Ou est-ce un modèle architectural qui a également un modèle de conception?

Lequel est vrai?

JCasso
la source
1
Car il doit y avoir une seule vraie réponse ...
Mike G
selon Dave de Product Madness, MVC est un modèle de conception, tout comme RobotLegs. : P
andygoestohollywood

Réponses:

56

MVC est plus un modèle architectural, mais pas pour une application complète. MVC concerne principalement la couche d'interaction / interface utilisateur d'une application. Vous aurez toujours besoin d'une couche de logique métier, peut-être d'une couche de service et d'une couche d'accès aux données. Autrement dit, si vous êtes dans une approche à n niveaux.


la source
16
Ouais, je dirais que MVC est un modèle architectural pour votre niveau Présentation.
murki
8
Je ne suis pas du tout d'accord sur le fait que "MVC concerne principalement la couche d'interaction / interface utilisateur d'une application". Le modèle "M" / dans MVC est la couche métier, que vous voudrez probablement diviser en plusieurs niveaux.
mewm
Oui, cette réponse est fausse. MVC ne concerne absolument pas l'interface utilisateur / l'interaction. Vous pouvez parfaitement avoir mvc sur le côté frontal et sur le côté arrière, au début, la vue était souvent juste un html / js ou un .jsp ou un .phtml et le serveur définit le contrôleur et le modèle. Exemple JSP (vue), JavaBeans (modèle), Servlet (contrôleur). Même concept avec tous les fameux frameworks php (symphonie, zend, cake etc.). Mais de nos jours, les frameworks frontend ressemblent à des applications back-end et les frameworks javascript modernes utilisent mvc (html votre vue, contrôle votre script et modélise vos objets js en tant qu'entité)
amdev
40

Pourquoi l'un d'eux doit-il être vrai?

Les deux peuvent être vrais, selon le point de vue.

MVC peut être un modèle architectural, s'il constitue la base de l'architecture de l'application.

Il peut également être considéré comme un simple motif de conception, une notion abstraite applicable à toute application.

Oded
la source
27

Les modèles de conception indiquent comment écrire du code efficacement (en tenant compte des métriques de code ).

Quelques avantages:

  1. Facilement maintenable
  2. Haute réutilisabilité
  3. Lisible grâce aux abstractions

Les modèles architecturaux indiquent comment utiliser efficacement les ressources.

  1. L'exécution de tâches parallèles comme les programmeurs et les graphistes peut fonctionner en parallèle.
  2. Plusieurs technologies peuvent être utilisées pour créer un logiciel.

Dans MVC, a). Les vues peuvent être créées à l'aide de modèles javascript et html peut également être utilisé b). Les contrôleurs peuvent être écrits. NET Framework et c). Les modèles peuvent être écrits en Java - un service java peut être utilisé qui ne renvoie que des données json.

Dans le modèle de conception, un modèle ne peut pas être implémenté dans lequel le code peut être écrit dans plusieurs technologies telles que la classe AdminUser en Java, la classe Customer en C #, la classe Partners en Php et un modèle d'usine en Ruby :); hmmm .. si facile? :)

vrluckyin
la source
6

Je sais que cela a été répondu il y a quelque temps, mais personne n'a encore mentionné le livre qui a rendu MVC célèbre: Pattern-Oriented Software Architecture (POSA), de Buschmann et al publié en 1996. Bien que moins lu que le livre Design Patterns , par Gamma, et al, POSA est l'un des livres fondateurs utilisés par la communauté des patterns.

Oh, et POSA identifie très clairement MVC comme un modèle architectural. Mon intuition est que MS et Sun sont simplement négligents et appellent chaque modèle un «modèle de conception».

John
la source
3

Je pense que les deux sont vrais. Si vous regardez une instanciation particulière de MVC dans un framework comme Ruby on Rails, cette instanciation est davantage un modèle de conception. Si vous considérez MVC comme un concept général , il s'agit davantage d'un modèle architectural.

Jim Ferrans
la source
3

Les modèles de conception à l'intérieur de la triade de classes Modèle / Vue / Contrôleur (MVC) incluent et peuvent ne pas être limités à:

  • Observateur , découplage des objets de sorte que les modifications apportées à l'un (le modèle) puissent affecter un nombre quelconque d'autres (les vues) sans que l'objet modifié (le modèle) connaisse les détails des autres (les vues).

  • Composite , qui nous permet de traiter un objet de groupe (une vue composite) comme nous traitons l'un de ses objets individuels (composants de vue).

  • Stratégie , où une vue utilise une instance d'une sous-classe de contrôleur pour mettre en œuvre une stratégie de réponse particulière; pour implémenter une stratégie différente, remplacez simplement l'instance par un autre type de contrôleur.

  • Méthode d'usine , spécifiant la classe de contrôleur par défaut pour une vue.

  • Décorateur , ajoutant le défilement à une vue.


Référence

  • Pages 4 à 6 (Section 1.2 Modèles de conception dans Smalltalk MVC)
  • Pages 293 à 304 (modèle de conception d'observateur)
  • Pages 163 à 174 (modèle de conception composite)
  • Pages 315 à 324 (modèle de conception de stratégie)
  • Pages 107 à 116 (modèle de conception de la méthode d'usine)
  • Pages 175 à 185 (motif de décoration)

Eric Gamma, Richard Helm, Ralph Johnson et John Vlissides. Modèles de conception: éléments d'un logiciel orienté objet réutilisable . Addison-Wesley, Reading, MA, 1994.

George
la source
1
Merci, toutes les autres réponses sont fausses. Ce n'est absolument pas "dépendant d'un point de vue" et avoir des dizaines ou des centaines de votes ne rendra pas quelque chose de faux vrai. MVC n'est pas un modèle de conception en lui-même, c'est un moyen d'archiver votre code en 3 couches en utilisant plusieurs modèles de conception que vous mentionnez. Tout le cadre qui implémente MVC en arrière-plan utilise le concept d'Observable, de Stratégie et de modèle composite. La meilleure façon de comprendre MVC est de créer votre propre implémentation, puis vous comprendrez les modèles de conception derrière.
amdev le
2

MVC toujours mentionné et introduit comme / dans la couche de présentation dans les livres d'architecture logicielle.

Lisez ces livres:

  1. Architecture de solutions Microsoft.NET pour l'entreprise (Microsoft press)

  2. Modèles de conception ASP.NET professionnels (Wrox)

  3. Modèles de solutions Enterpise utilisant Microsoft.NET (Microsoft press)

  4. Modèles d'architecture d'application d'entreprise (Addison Wesley)

  5. Un guide pratique de l'architecture d'entreprise (Prentice Hall)

Saleh Rahimzadeh
la source
6
pourquoi 2 réponses? vous pouvez ajouter cette réponse comme note supplémentaire à votre première
frogatto
2

Si vous mettez dix architectes logiciels dans une pièce et que vous leur demandez de discuter du modèle Modèle-Vue-Contrôleur, vous vous retrouverez avec douze opinions différentes. … Certains des puristes auront inévitablement des scrupules à ce que j'appelle «MVC». N'hésitez pas à laisser un commentaire enflammé sur le babillard électronique au bas de cette page Web. Je serai heureux de connaître différentes perspectives sur ce que signifie MVC, mais gardez à l'esprit que je m'en fiche.

Josh Smith

Saleh Rahimzadeh
la source
1

Et selon Martin Fowler, ce sont des architectures GUI: les architectures Martin Fowler-GUI

Cela dépend de la taille de l'application, car il n'affecte que les classes liées à l'interface graphique, dans un petit (principalement GUI), il pourrait être considéré comme un modèle architectural alors que dans un énorme, ce serait juste un modèle de conception que vous appliquez à l'interface graphique. code (peut représenter 10% du code des applications).

Iker Jimenez
la source