web-dev-qa-db-fra.com

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

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.

15
Saeed M.

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.

enter image description here

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 sur les modèles de conception est Motifs de conception Gang of Four (GoF) .

enter image description here

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

25
Yusubov

Un joli modèle, que j'ai rencontré il y a quelques semaines, est [~ # ~] déplacer [~ # ~] . 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.

7
Jan_V

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 cohérente pour le développement 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 MVC / HMVC = le modèle de conception a tendance à dominer les cadres principaux disponibles (par exemple Zend , CakePHP , CodeIgniter etc.) mais il existe de nombreux modèles de conception différents qui 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 pour 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 l'autre MV = x les motifs sont (en principe au moins) tous les mêmes "motifs 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 de la mise en œuvre des 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 le meilleur moyen 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.

4
Chris

L'un des exemples les plus célèbres 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.

3
dodgy_coder

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 sont de plus en plus lourdes en JavaScript, une grande partie de leur état étant sur le client. Cela peut conduire à une résurgence des frameworks MVVM, et Knockout JS en est un exemple.

0
Daniel B

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. 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é serveur uniquement MVC de côté.

0
Bruno Schäpper

Je cherche personnellement à implémenter quelque chose qui utilise l'idée de Représentation des méthodes de ressources , bien qu'à ce stade, ce ne soit plus qu'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 s'exécutant sur un seul ordinateur par opposition aux sessions de demande/réponse à courte durée de vie). Cependant, il 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
GordonM

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

0