Model-View-Controller (MVC) expliqué en commandant des boissons au bar

Si vous avez été dans un bar, MVC n'est pas si difficile.

Les frameworks MVC (Model-View-Controller) sont un élément crucial de la création d'applications Web modernes. Entrez dans une salle de développeurs Web et vous serez probablement bombardé de mentions de Ruby on Rails, Angular ou Django.

Plus généralement, la logique MVC peut être utilisée pour décrire presque tous les processus de développement Web utilisant un langage tel que PHP, Ruby, Python ou JavaScript.

Cependant…

De nombreux développeurs Web naviguent dans ce monde mystérieux en piratant les mauvaises herbes avec un sourire sur leur visage. Lorsqu'un développeur senior ou un coéquipier a besoin de regarder le code de l'un de ces développeurs, il émettra un jappement immédiat, suivi d'une rapide conférence sur les pratiques de codage courantes.

Ce n'est pas une façon de vivre la vie! En fait, le modèle MVC dans le développement Web moderne peut être facilement expliqué en commandant un verre à un barman. Et oui, cela signifie que si vous avez été dans un bar, vous pouvez comprendre le modèle structurel principal partagé par toutes les applications Web.

Hacker courageusement les obstacles jusqu'à ce que la réalité frappe

Qu'est-ce que le modèle MVC?

  • Modèle : structure vos données sous une forme fiable et les prépare en fonction des instructions du responsable du traitement
  • Affichage : affiche les données à l'utilisateur dans un format facile à comprendre, en fonction des actions de l'utilisateur
  • Contrôleur : prend les commandes de l'utilisateur, envoie des commandes au modèle pour les mises à jour des données, envoie des instructions à afficher pour mettre à jour l'interface.

Ou, sous forme de diagramme:

C'était ennuyeux. Sur le bar.

Un développeur Web débutant entre dans une barre…

Vous entrez dans un bar un vendredi soir et vous approchez du barman. Comme le bar est déjà bondé, vous vous frayez un chemin à travers une foule jusqu'à ce que vous attiriez enfin l'attention du barman, et vous lâchez, «One Manhattan, s'il vous plaît!»

Vous êtes l' utilisateur et votre commande de boisson est la demande de l' utilisateur . Pour vous, le Manhattan n'est que votre boisson préférée, et vous savez de manière assez fiable que ce sera une boisson sucrée et délicieuse.

Le barman vous fait un petit signe de tête. Pour le barman, le Manhattan n'est pas une boisson savoureuse, c'est simplement une série d'étapes:

  1. Prenez le verre
  2. Ajouter du whisky
  3. Ajouter du vermouth
  4. Ajouter des amers
  5. Remuer la boisson
  6. Ajouter la cerise
  7. Demandez une carte de crédit et chargez.

Le cerveau du barman est le contrôleur . Dès que vous dites le mot «Manhattan» dans une langue qu'ils comprennent, le travail commence. Ce travail est de nature similaire à la fabrication d'une margarita ou d'un daiquiri à la fraise, mais utilise des ingrédients distincts qui ne seront jamais confondus. Le barman ne peut utiliser que les outils et les ressources qui se trouvent derrière le bar. Cet ensemble d'outils limité est le modèle et comprend les éléments suivants:

  • Les mains du barman
  • Agitateurs / équipement de mélange
  • Liqueurs
  • Mélanges
  • Des lunettes
  • Garnitures

Peut-être que dans un bar plus chic, ils pourraient avoir un assistant robot! Ou un mélangeur de boisson automatique. Cela n'a pas d'importance pour votre barman en particulier, qui ne peut utiliser que les ressources disponibles.

Enfin, la boisson finale que vous pouvez voir et consommer est la vue. La vue est construite à partir des options limitées du modèle, et arrangée et transmise via le contrôleur (c'est-à-dire le cerveau du barman).

Leçons apprises

  • Tu veux un autre verre? Crier sur votre verre vide, la vue, ne vous fera absolument aucun bien. Vous devez parler au barman.
  • Le temps passé entre le barman entendant la demande et le début de la création de la boisson doit être absolument minime. Ceci est parfois appelé «contrôleur maigre» - en d'autres termes, le contrôleur doit contenir un minimum de logique et déléguer autant que possible au modèle. Un bon barman aura non seulement des recettes mémorisées, mais préparera également les ingrédients et les outils de manière fiable tous les soirs de sorte qu'un minimum de recherche et d'organisation soit nécessaire une fois que les clients commencent à commander.
  • Le barman pourrait-il verser tous les ingrédients directement dans la bouche du client et s'attendre à ce que le client le remue et mélange la boisson? Oui, peut-être je suppose. Vous voulez conserver autant de logique que possible dans le modèle plutôt que dans la vue. En d'autres termes, il est préférable de préparer la boisson derrière le bar plutôt que de la mélanger dans la bouche du client.
  • Si vous commandez une bière, le barman n'aura guère besoin de faire quoi que ce soit. Peut-être vont-ils simplement retirer le bouchon et vous remettre la boisson. Cela étant dit, vous devez toujours demander au barman. La bière n'apparaîtra pas comme par magie devant vous.

Lier de nouveau au développement Web

Voici comment le même processus se déroule dans une application Web moderne:

  • L'utilisateur fait une demande le long d'un itinéraire, disons / home.
  • Le contrôleur reçoit cette demande et donne un ensemble spécifique d'ordres liés à cet itinéraire. Ces instructions peuvent être destinées à la vue pour mettre à jour ou servir une certaine page, ou pour que le modèle exécute une logique spécifique. Supposons que cette requête soit associée à une logique.
  • Le modèle exécute la logique, extrait d'une base de données et renvoie une réponse cohérente basée sur les instructions du contrôleur.
  • Le contrôleur transmet ensuite ces données à la vue pour mettre à jour l'interface utilisateur.

Chaque fois qu'une demande arrive, elle doit d'abord aller au contrôleur avant de pouvoir être convertie en instructions pour la vue ou le modèle. L'article wikipedia Ruby on Rails contient un aperçu supplémentaire si vous en cherchez plus.

Chaque fois que vous avez besoin d'apprendre un nouveau cadre de développement Web, vous rencontrerez ce modèle MVC cohérent. Et si un cadre particulier diffère de celui-ci, vous pouvez être sûr que les auteurs expliqueront leur nouveau modèle avec des références à MVC.

Cela devrait rendre l'apprentissage beaucoup plus facile - une fois que vous avez développé une fois avec MVC, chaque nouveau cadre peut s'intégrer dans votre zone de confort.

Avez-vous apprécié ce guide? Faites-moi savoir dans les commentaires!