dimanche 28 février 2016

Un site web ASP.NET MVC 5 de A à Z - Le M le V et le C

Avant de rentrer dans le vif du sujet nous allons parler du model MVC et faire un tour d'horizon sur ses 3 composants à savoir :

  • le Model (model)
  • la Vue (view)
  • le Controlleur (controller)


Le MVC c'est avant tout un pattern (un design pattern à la base) orienté Web.  L'idée est d'organiser le code de façon à ce qu'il soit plus maintenable, testable, et que chaque partie soit plus ou moins autonome avec une resposabilité précise, afin de diminuer le couplage entre composant.
Il faut donc comprendre que le MVC c'est avant tout conceptuel : c'est à dire que chaque composant, selon les langages, et la façon dont on décide de l'implémenter présentera des nuances mais l'idée maitresse reste la même :

  • Le controlleur a pour mission principale d'envoyer à l'utilisateur la vue contenant une composition d'un ou plusieurs model.
  • La vue représente ce qui va être renvoyé à l'utilisateur : au niveau Web c'est le contenu Html (ou autre ressource demandé par l'utilisateur) affiché en règle générale. Les vues peuvent être organisées et divisées en vues partielles.
  • Le modèle représente les données qui seront associés et affichées au niveau des vues. On parle également de View Model pour "typer" fortement le modele à une vue précise


Même si le controlleur peut renvoyer autre chose que des vues comme par exemple du json brut, il demeurt que sont rôle principal et de préparer la vue à afficher : il consolide donc les données à partir de model(s)  servant de "gabarit" de données et via des règles métiers provenant de composants dédiés (services externes/web service, couches techniques tiers, etc).
En effet, même si on peut facilement implémenter les règles métiers au niveau du controlleur, il est plus judicieux de le faire dans un composant décorelé, afin justement de bien séparer les rôles.

Jusque là, on est au niveau théorique : dans la pratique, et plus précisement en ASP.NET MVC, c'est beaucoup plus compliqué que cela :
on a au départ une requête effectué par un utilisateur via une URL saisi dans son navigateur. Entre la résolution DNS (et toutes la partie traitement réseau que je vous épargne ici) et retour du serveur répondant web répondant à la requête, il va se passer tout un tas de choses. On parle souvent de cycle de vie ou de pipe Line de la requête.
Voici en image (trouvé sur dotnetcurry) ce qui se passe de façon macro :



Voici ce qui se passe si l'on regarde de plus près :



Les grandes étapes du traitement de la requête sont donc :

  • le routing (Routing) 
  • interception de la requete pas le module de routing 
  • execution du handler MVC
  • execution du controlleur
  • rendue de la vue
Il n'est pas obligatoire de comprendre le fonctionnement interne du cycle de vie MVC en .NET, par contre vous allez vite vous y interessé quand vous allez passer à la pratique, notamment quand vous serrez confronter à certaines problématiques de sécurité, de gestion d'url, etc. Il veux mieux donc comprendre un minimum par où passe ma requête, ce qui se passe, et comment le résultat m'est rendu.

Aucun commentaire:

Enregistrer un commentaire