32 votes

Quels sont les principaux avantages du modèle MVC par rapport à l'ancien modèle à 3 couches

Je suis à la contempler, à l'aide d'un modèle MVC dans mon nouveau projet et je peux clairement voir que le principal avantage d'être en mesure de mettre la couche de données (le modèle) d'un peu plus près de la couche de présentation (la vue), ce qui permettra une augmentation de la vitesse de l'application. Mais en dehors de performance point existe-il d'autres avantages de la MVC-dessus de la vue logique de données en couches type de modèle?

EDIT: Pour ceux qui sont intéressés, je viens de téléchargé un exemple de code PHP que j'ai créé pour tester l'utilisation de MVC. Je purposly omis tous les contrôles de sécurité pour rendre le code un peu plus facile à lire. Merci de ne pas critisize trop, parce que je sais que ça pourrait être beaucoup plus raffiné et avancé, mais néanmoins cela fonctionne!!! Je serai heureux de questions et de suggestions: Voici le lien: http://www.sourcecodester.com/sites/default/files/download/techexpert/test_mvc.zip

42voto

Arjan Tijms Points 21682

La séparation des préoccupations, qui est cité comme étant un avantage de la MVC est en fait une avance d'une couche de 3-/3-système de niveau. Là aussi, la logique métier est indépendant et peut être utilisé à partir d'une présentation différente des niveaux.

Une différence principale est que dans le classique MVC le modèle peut avoir une référence de la vue. Cela signifie que lorsque des données mises à jour le modèle peut pousser ces données, éventuellement, de plusieurs points de vue. Le premier exemple est une application de bureau où les données sont visualisées dans de multiples façons. Cela peut être aussi simple que d'une table et graphe. Un changement dans le tableau (ce qui est un changement dans un point de vue) est d'abord poussé par le contrôleur pour le modèle, puis le pousse dans le dos pour le graphique (autre vue). Le graphique puis les mises à jour de lui-même.

Depuis le développement de postes de travail est sur le déclin, beaucoup de programmeurs ont ne viennent en contact avec MVC dans certaines variantes, par exemple par l'intermédiaire de l'ACI en Java EE.

Dans ces cas, le modèle presque jamais a une référence à la vue. C'est parce que le web est principalement de demande/réponse de base et après une demande a été servi, le serveur ne peut pas envoyer des informations supplémentaires. I. e. une mise à jour poussé à partir du modèle pour le client n'aurait pas de sens. Avec le reverse ajax/comet c'est en train de changer, mais de nombreux basé sur le web MVC cadres de ne pas utiliser pleinement cette.

Ainsi, dans le cas de basé sur le web MVC, le type "triangle" entre M, V et C est moins là, et que MVC variante est en fait plus proche d'un modèle n-tier que le "vrai" MVC est.

Notez aussi que certains web MVC cadres ont un niveau intermédiaire de plomberie partie entre M, V et C appelé un backing bean (Java/JSF) ou le code derrière (ASP.NET). Dans JSF le contrôleur est fourni par le cadre et la vue n'est souvent pas se lier directement à ce modèle, mais il utilise ce backing bean comme un intermédiaire. Le backing bean est très mince et fondamentalement juste pré-récupère des données à partir du modèle d'une manière et se traduit par un modèle spécifique de messages (par exemple, les exceptions) dans l'affichage des messages (par exemple, certains texte lisible).

6voto

k3b Points 5381

À côté de

  • la réutilisation de code,
  • la séparation des préoccupations,
  • moins de couplage entre les couches,

déjà mentionné par @bakoyaro et @arjan

je pense que MVC est mieux que de niveau 3 lorsqu'il est combiné avec la "convention over configuration" modèle. (c'est à dire "ruby on rails" ou Microsoft "MVC pour asp.net").

À mon avis, cette combinaison conduit à une meilleure et plus facile code maintanance.

En premier lieu, il fait l'apprentissage de la mvc-cadre un peu plus difficuilt puisque vous avez à apprendre les conventions de la les contrôleurs aller dans le dossier controllers et doit être nommé xxxxxcontroller)

Mais après avoir appris les conventions qu'il est plus facile de maintenir votre propre et d'un code étranger.

2voto

bakoyaro Points 1419

Oublier l'augmentation de la vitesse de l'application en se déplaçant à la MVC. J'ai trouvé le plus grand avantage à la facilité de réutilisation de code. Une fois que vous vous déplacez, MVC, il n'y a pas de dépendances sur la présentation de vos données, ou le stockage des données réelles.

Par exemple, vous pourriez écrire une servlet qui nous a servi .pages jsp que la couche de présentation, un jour, et le lendemain écrire un web service comme une autre couche de présentation de votre Modèle et le Contrôleur. Comme des sages si vous voulez ou devez passer votre SGBD. Car l'accès à la le Modèle est complètement séparée de tout le reste, vous auriez juste besoin de ré-écrire vos objets d'accès aux données pour renvoyer les données de votre Contrôleur peut gérer.

Par séparer les préoccupations en 3 parties distinctes, vous avez également de faciliter une véritable unité de test. La couche de Présentation peut être testé gratuitement le Modèle ou le Contrôleur, et l'inverse.

Sur une note de côté, j'ai souvent eu l'impression que le MVC abréviation était inexacte. Chaque fois que je la vois, je pense à elle comme à la Vue->Controller->Modèle. La couche de présentation n'aura jamais DAO dans le code, et le modèle n'aura jamais la logique de présentation en elle. Le Contrôleur est forcé d'agir comme un go-between.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X