Existe-t-il un modèle de conception, sauf MVC pour le Web?


15

Je veux savoir s'il existe des modèles de conception pour le Web en plus de MVC?

Je sais qu'il existe des modèles de conception tels que: Registry, Observer, Factory, ActiveRecord, ... et MVC un ensemble d'autres modèles de conception et structure de dossiers.

Existe-t-il un modèle de conception comme MVC est un ensemble d'autres modèles de conception?

Edit: mon langage de programmation est PHP.


Il y a toujours le modèle BBOM .
zzzzBov

1
@ Mr-Moqadam, veuillez jeter un oeil - meta.stackexchange.com/questions/5234/…
Yusubov

Je pense que les réponses ci-dessous répondent à toutes les facettes de votre question. Vous pourriez accepter le meilleur et aider la communauté.
Arpith

Qu'en est-il du modèle de flux de FB.
Muhammad Umer

Voir aussi Afficher d'abord .
nawfal

Réponses:


25

Il existe différents modèles de développement logiciel; MVP, MVVM, MVC, etc. sont quelques-uns des plus connus. Cependant, vous devez définir le problème ou la technologie spécifique que vous souhaitez résoudre ou utiliser.

entrez la description de l'image ici

Chacun de ces modèles est bon pour résoudre certains ensembles spécifiques de problèmes. Par exemple, le modèle MVP (Model View Presenter) aide à introduire la séparation des problèmes dans le développement d'ASP.NET WebForms. Il consiste à répartir les responsabilités de collecte, d'affichage et de stockage des données d'une page Web en objets distincts: un objet Model, un objet View et un objet Presenter.

Le livre de recettes général le plus célèbre des modèles de conception est Gang of Four (GoF) .

entrez la description de l'image ici

Edit: je suppose que vous êtes plus intéressé à implémenter des modèles de conception sur la plate-forme .NET


1
+1 allons-nous vivre avec MVC défini comme un motif, ou une technique qui verra bientôt ou presque voir son successeur?
Indépendant

6
+1 mais MVP, MVVM et MVC sont toutes des variantes du même thème: séparer (g) ui de la logique du modèle et avoir une tierce partie (contrôleur, présentateur) comme intermédiaire entre eux.
Marjan Venema

2
@ Mr-Moqadam: MVC ressemble à une exagération et compliqué au premier abord. Il fait ce que vous devez faire, séparant l'interface utilisateur, la logique et les données. La seule chose qui est sûre dans le développement logiciel est le changement. Et en règle générale; 20% est en développement, 80% est en maintien. De ce point de vue, MVC en vaut certainement la chandelle. C'est aussi le schéma le plus élémentaire pour y parvenir, je suppose.
Bruno Schäpper

3
@ Mr-Moqadam: Non, cela vous aide beaucoup, même si vous êtes seul. Et surtout dans les grands projets.
Bruno Schäpper

1
@ Mr-Moqadam Qui a déjà dit que MVC est un modèle de développement d'équipe? Je développe depuis longtemps seul en utilisant PHP et MVC est obligatoire pour moi afin de maintenir les choses maintenables. Avez-vous essayé d'utiliser des frameworks PHP?
Songo

7

Un joli motif, que j'ai rencontré il y a quelques semaines, est MOVE . Il semble un peu plus sophistiqué que MVC, mais est basé sur le même principe. Un inconvénient de MVC est que vos contrôleurs peuvent devenir vraiment très gros. En utilisant le modèle MOVE, vous gérerez un peu ce problème.

D'autres modèles, nommés par les autres, sont également de bonnes alternatives.


Je pensais que MVC encourageait l'utilisation de contrôleurs minces?! Vous connaissez le dicton "contrôleurs minces et modèles Fat"
Songo

C'est le cas, mais en réalité, les contrôleurs ont tendance à grossir.
Jan_V

2
C'est parce que vous mettez la logique du domaine dans les contrôleurs, ce qui n'était pas l'intention du type de MVC Krassner & Pope original. Les contrôleurs de la manière originale concernent la gestion des entrées, par exemple. connecter les clics de souris sur les coordonnées (X, Y) dans une opération de modèle (comme augmenter la température dans une application de thermostat). Cela dit, la majeure partie de la couche contrôleur au sens MVC est entièrement automatisée et donc invisible pour le développeur d'applications dans un cadre.
Aadaam

est MOVE comme flux
Muhammad Umer

4

La première chose à établir est exactement ce que vous devez faire, pour décider si un cadre et / ou un MVC (ou un autre modèle de conception) serait avantageux.

Les cadres sont là pour fournir une plate-forme de développement cohérente tout en fournissant généralement des solutions aux exigences de programmation courantes (telles que l'interaction avec la base de données, la création et la validation de formulaires, l'authentification des utilisateurs, etc.)

Pour PHP au moins, le modèle de conception MVC / HMVC a tendance à dominer les cadres principaux disponibles (par exemple Zend , CakePHP , CodeIgniter, etc.) mais il existe de nombreux modèles de conception différents que l'on pourrait utiliser.

MVC est si populaire car il offre un moyen établi et compris de séparer la logique de modélisation et de traitement des données de la couche vue / présentation (ce qui est considéré comme souhaitable afin de produire des applications robustes et évolutives).

Il est important de noter (et comme l'a exprimé @Marjan Venema dans un commentaire à la réponse de @ ElYusubov) que MVC, MVP, MVVM et les autres modèles MV x sont (en principe au moins) tous le même `` modèle de conception ''.

Des modèles de conception généralement différents servent tous (souvent subtilement) des objectifs différents et, dans plusieurs cas, ont été développés avec un langage spécifique à l'esprit. Cependant, un véritable «modèle de conception» n'est pas une règle stricte et rapide pour la programmation et est en réalité davantage une compréhension philosophique / généalogique d'une mise en œuvre de programmes et des exigences de conception et des fonctions logiques.

La recherche est le meilleur moyen de découvrir les différents principes de programmation et les meilleures pratiques, voici quelques liens Wikipédia pour vous aider à démarrer:

Dans la pratique, rien ne vous empêche d'implémenter votre propre `` modèle '', l'OMI la meilleure façon est d'apprendre en faisant, pour moi au moins je n'ai pas complètement compris le modèle MVC jusqu'à ce que je commence à essayer d'écrire un site Web en l'utilisant.

Une fois que vous avez compris certains des concepts et des meilleures pratiques de programmation, vous pouvez les utiliser pour créer votre propre système afin de résoudre les problèmes spécifiques auxquels vous êtes confronté et pour répondre à vos besoins, qu'il soit conforme ou non à un `` modèle '' établi.

Si vous n'avez aucun ensemble spécifique de problèmes à résoudre, alors apprendre l'un des cadres communs est votre meilleur pari.


3

Un des exemples les plus connus est Knockout.js qui est un framework javascript qui utilise le modèle de conception MVVM . Il y a un excellent article ici sur le débordement de pile comparant le framework MVC Backbone.js vs Knockout.js .

Un sidenote est que le modèle de conception MVVM provient de Microsoft en tant que spécialisation du modèle de conception PM de Martin Fowler. MVVM est largement utilisé par les applications WPF.


Page non trouvée!
Muhammad Umer

1
@MuhammadUmer Merci, j'ai mis à jour le lien. Malheureusement, StackOverflow a supprimé cette question de plus de 1000 points. Heureusement, la machine de retour n'a pas de système de modération strict.
dodgy_coder

Pas du tout surpris ... je m'attends à ce que tous les sites soient comme ça aussi.
Muhammad Umer

0

Comme l'a souligné ElYusubov, le cadre ASP.Net a depuis longtemps des modèles MVP et MVVM, si vous recherchez des exemples relativement courants. L'une des principales différences entre MVC et MVVM est la façon dont vos entités sont mises à jour; MVC est mieux adapté à l'approche traditionnelle sans état ou semi-sans état des applications Web. Le cadre ASP.Net a essayé de contourner cela en gardant votre état intégré dans un formulaire (afin qu'il puisse être restauré à chaque demande), ce qui a rendu les modèles MVP et MVVM plus sensés.

Avec HTML5, les applications deviennent de plus en plus lourdes en JavaScript, une grande partie de leur état étant sur le client. Cela peut entraîner une résurgence des frameworks MVVM, et Knockout JS en est un exemple.


0

La plupart des modèles à l'état sauvage sont MVC, ou une certaine saveur de MVC. Après tout, il est logique de diviser vos données (modèle), la représentation (vue) et l'interaction avec elle (contrôleur). Si vous regardez MVC tel qu'il a été fondé dans les années 80, vous découvrirez qu'il n'a jamais été conçu pour être un framework web. Ainsi, je l'ai trouvé bien surchargé sur le Web.

Un autre modèle bien connu serait l'architecture orientée services (SOA). Construit sur cela, une approche moderne serait d'avoir un MVC (ou une saveur) sur votre serveur, uniquement pour exposer un service avec lequel vous pouvez travailler. Du côté client, il y aurait une autre application de style MVC, par exemple une application Web propulsée par HTML5 et JavaScript (Twitter ou Linked In par exemple). L'application cliente utiliserait votre service côté serveur (la "Vue" du serveur) comme modèle. À mon humble avis, ce serait l'état de l'art et poussera probablement côté MVC uniquement côté MVC.


0

Personnellement, je cherche à implémenter quelque chose qui utilise l'idée de représentation des méthodes de ressources , bien qu'à ce stade, ce soit surtout une expérience plus que toute autre chose. Il présente certains points convaincants en ce qu'il modélise une demande / réponse HTTP mieux que MVC (qui est destiné aux applications à longue durée de vie fonctionnant sur un seul ordinateur par opposition aux sessions de demande / réponse à courte durée de vie). Cependant, cela présente l'inconvénient que si vous mettez des méthodes dans vos ressources pour gérer GET, POST, PUT, DELETE, etc., vos ressources deviennent couplées au frontal. Je pense que je vais séparer cela en une autre couche.


0

Il y a plus de 1000 façons, sauf MVC, certains d'entre eux sont similaires à MVC et certains totalement différents

par exemple :

  1. Modèle-Modèle-Vue - MTV
  2. Modèle – vue – présentateur - MVP
  3. Modèle hiérarchique - vue - contrôleur HMVC
  4. Vue du modèle ViewModel- MVVM

etc


1
cela ne semble pas offrir quoi que ce soit de substantiel par rapport aux points avancés et expliqués dans les 7 réponses précédentes
gnat

c'est le plus simple et la question je pense.
Saurabh Chandra Patel
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.