QU'est-ce que MVC et quels en sont les avantages? [fermé]
J'ai trouvé Quels sont mvp et mvc et quelle est la différence mais il n'a pas vraiment répondu à cette question.
J'ai récemment commencé à utiliser MVC parce que cela fait partie du framework que moi-même et mon partenaire de travail vont utiliser. Nous l'avons choisi parce qu'il avait l'air facile et séparé le processus de l'affichage, y a-t-il des avantages en plus de cela que nous ne connaissons pas et que nous pourrions manquer?
Avantages
- L'affichage et le traitement sont séparé
contre
- aucune jusqu'à présent
11 réponses
MVC est la séparation de la model, view et controller - rien de plus, rien de moins. C'est simplement un paradigme; un idéal que vous devriez avoir à l'arrière de votre esprit lors de la conception des classes. Évitez de mélanger le code des trois catégories en une seule classe.
Par exemple, alors qu'une grille de table view devrait évidemment présenter des données une fois affichées, elle ne devrait pas avoir de code sur l'endroit où récupérer les données, ni sur sa structure native (le modèle ) comme. De même, bien qu'il puisse avoir une fonction pour résumer une colonne, la somme réelle est supposée se produire dans le contrôleur .
Une boîte de dialogue' save file ' (view) transmet finalement le chemin, une fois choisi par l'utilisateur, au controller, qui demande ensuite au model les données, et effectue l'enregistrement réel.
Cette séparation des responsabilités permet une certaine flexibilité. Par exemple, parce que la vue ne se soucie pas du sous-jacent modèle, la prise en charge de plusieurs formats de fichiers est plus facile: il suffit d'ajouter une sous-classe de modèle pour chacun.
La séparation des préoccupations est le biggy.
Être capable de séparer ces composants rend le code plus facile à réutiliser et à tester indépendamment. Si vous ne savez pas vraiment ce QU'est MVC, faites attention à essayer de comprendre les opinions des gens car il y a encore des conflits sur ce qu'est le "modèle" (que ce soit les objets métier/DataSets/DataTables ou s'il représente la couche de service sous-jacente).
J'ai vu toutes sortes d'implémentations qui s'appellent MVC mais ne sont pas exactement et comme les commentaires dans l'article de Jeff montrent MVC est un point litigieux que je ne pense pas que les développeurs seront jamais entièrement d'accord.
Un bon tour de tous les différents MVC est disponible, ici.
Je pense qu'un autre avantage de l'utilisation du modèle MVC est qu'il ouvre les portes à d'autres approches de la conception, telles que MVP / Presenter first et les nombreux autres modèles MV*.
Sans cette séparation fondamentale des "composants" de la conception, l'adoption de ces techniques serait beaucoup plus difficile.
Je pense que cela aide à rendre votre code encore plus basé sur l'interface.. Non seulement dans le projet individuel, mais vous pouvez presque commencer à développer des "vues communes" ce qui signifie que vous pouvez modéliser beaucoup plus du code "grunt" utilisé dans vos applications. Par exemple, une "vue de données" très abstraite qui prend simplement un tas de données et les jette dans une disposition de grille commune.
Modifier:
Si je me souviens bien, c'est un très bon podcast sur MV* modèles (écouté il y a un moment!)
Un con auquel je peux penser est si vous avez besoin d'un accès très rapide à vos données dans votre vue (par exemple, les données d'animation de jeu comme les positions osseuses.) Il est très inefficace de garder une couche de séparation dans ce cas.
Sinon, pour la plupart des autres applications qui sont plus pilotées par les données que par les graphiques, cela semble être un moyen logique de piloter une interface utilisateur.
Si vous suivez les podcasts stackoverflow, vous pouvez entendre Jeff (et Geoff?) de discuter de sa grandeur. http://blog.stackoverflow.com/2008/08/podcast-17/. mais rappelez-vous que l'utilisation de ces couches séparées signifie que les choses sont plus faciles à l'avenir-et plus difficiles maintenant. Et les couches peuvent rendre les choses plus lentes. Et vous n'en aurez peut-être pas besoin. Mais ne laissez pas cela vous empêcher d'apprendre ce que c'est-lorsque vous construisez de grands systèmes robustes et à longue durée de vie, c'est inestimable.
Il sépare le Modèle et la vue contrôlés par un contrôleur, En ce qui concerne le Modèle, vos modèles doivent suivre l'architecture OO, les futures améliorations et autres opérations de maintenance de la base de code devraient être très faciles et la base de code devrait être réutilisable.
Même modèle peut avoir aucun.des vues par exemple) les mêmes informations peuvent être affichées sous forme de vues graphiques différentes. Même vue peut avoir différent Non.des modèles par exemple) différents détaillés peuvent être montrés comme un seul graphique disons comme un graphique à barres. C'est ce qui est réutilisation de la vue et du modèle.
Les améliorations dans les vues et autres supports de nouvelles technologies pour la construction de la vue peuvent être implémentés facilement.
Guy qui travaille sur view dose pas besoin de connaître la base de code du modèle sous-jacent et son architecture, vice versa pour le modèle.
L'un des principaux avantages de MVC qui n'a pas été mentionné ici est que MVC fournit des URL RESTful qui permettent le référencement. Lorsque vous nommez vos contrôleurs et vos Actions à bon escient, il est plus facile pour les moteurs de recherche de trouver votre site s'ils ne regardent que les URL de votre site. Par exemple, vous avez un site de vente de voitures et une page qui affiche les voitures Lamborghini Veneno disponibles, au lieu d'avoir www.MyCarSale.com/product/6548 se référant à la page que vous pouvez choisir www.MyCarSale.com/SportCar/Lamborghini-Veneno url à des fins de référencement.
Ici est une bonne réponse aux avantages MVC et ici est un article Comment créer une Url conviviale SEO.
Le principal avantage de l'architecture MVC est de différencier les couches d'un projet dans le modèle, la vue et le contrôleur pour la réutilisabilité du code, facile à maintenir le code et la maintenance. La meilleure chose est que le développeur se sent bien d'ajouter du code entre la maintenance du projet.
Ici vous pouvez voir les quelques autres points sur principaux avantages de L'Architecture MVC .
![architecture mvc][1]
Model-view-controller (MVC) est un modèle architectural logiciel pour implémenter des interfaces utilisateur. Il divise une application logicielle donnée en trois parties interconnectées, de manière à séparer les représentations internes de l'information de la manière dont l'information est présentée ou acceptée par l'utilisateur.
MVC est juste un modèle de conception générale qui, dans le contexte du développement d'applications web lean, permet au développeur de garder facilement le balisage HTML dans la couche de présentation d'une application (la vue) séparée des méthodes qui reçoivent et gèrent les demandes des clients (les contrôleurs) et les représentations de données renvoyées dans la vue (les modèles). Il s'agit de séparer les préoccupations, c'est-à-dire de garder le code qui sert un but fonctionnel (par exemple, Gérer les demandes des clients) code qui sert un but fonctionnel entièrement différent (par exemple, représenter des données).
C'est le même principe pour savoir pourquoi quiconque a passé plus de 5 minutes à essayer de construire un site web peut apprécier la nécessité de garder votre balisage HTML, JavaScript et CSS dans des fichiers séparés: si vous videz tout votre code dans un seul fichier, vous vous retrouvez avec des spaghettis qui ne sont pratiquement pas modifiables plus tard.
Puisque vous avez demandé d'éventuels "inconvénients": Je ne suis pas autorité sur l'architecture logicielle conception, mais sur la base de mon expérience de développement dans MVC, je pense qu'il est également important de souligner que suivre un modèle de conception MVC strict et sans fioritures est le plus utile pour 1) les applications web légères, ou 2) comme couche D'interface utilisateur d'une application d'entreprise plus grande. Je suis surpris que cette spécification ne soit pas plus parlée, car MVC ne contient pas de définitions explicites pour votre logique métier, vos modèles de domaine ou vraiment n'importe quoi dans la couche d'accès aux données de votre application. Quand j'ai commencé à développer en ASP.NET MVC (c'est-à-dire avant Je savais que d'autres architectures logicielles existaient même), je me retrouverais avec des contrôleurs très gonflés ou même des modèles pleins de logique métier qui, si j'avais travaillé sur des applications d'entreprise, auraient rendu difficile la modification de mon code (c'est-à-dire plus de spaghettis).