Skip to content

12. Conclusion

Ce document a présenté la construction d'une application web MVC avec le framework [ASP.NET Core MVC] : une application dont les pages HTML sont fabriquées par le serveur, avec des vues [Razor], sans framework [JavaScript] côté navigateur. Il a suivi pas à pas la progression du cours [NestJS], lui-même issu du cours Introduction à ASP.NET MVC par l'exemple : des contrôleurs et du routage vers les vues, les formulaires, l'internationalisation, la sécurité et l'accès aux données, puis une étude de cas complète.

La boucle est ainsi bouclée : on revient à la plate-forme [.NET] du cours d'origine, dans sa version moderne. Les correspondances entre les trois frameworks sont nombreuses :

ASP.NET MVC (2013)
NestJS (2026)
ASP.NET Core MVC (2026)
contrôleur, action ([ActionResult])
[@Controller], [@Get], [@Post]
[Controller], [[HttpGet]], [[HttpPost]], [IActionResult]
modèle d'action, [[Required]], [[Range]]...
classe DTO, décorateurs de [class-validator]
liaison de modèle, [[Required]], [[Range]]... (inchangés)
[ModelState.IsValid]
[validate()] et réaffichage du formulaire
[ModelState.IsValid] et réaffichage du formulaire
vues [Razor] ([.cshtml]), [_Layout.cshtml]
vues [Handlebars] ([.hbs]), [layout.hbs]
vues [Razor] ([.cshtml]), [_Layout.cshtml], [_ViewStart.cshtml]
vues partielles, helpers HTML
partiels [{{> nom}}], helpers
vues partielles, méthodes C#, Tag Helpers, classe mère des vues
[TempData] (dans la session)
message flash dans un cookie
[TempData] (dans un cookie chiffré)
session
cookies (jeton JWT, langue) : serveur sans état
cookies (jeton JWT, langue) : serveur sans état
filtres d'action, [[Authorize]]
middlewares, gardes, intercepteurs, filtres
middlewares, filtres, [[Authorize(Roles = ...)]], [JwtBearer]
fichiers de ressources ([.resx])
dictionnaires JSON, helper [t]
dictionnaires JSON, [@T(...)], [UseRequestLocalization]
[Entity Framework]
[TypeORM]
[Entity Framework Core]
injection de dépendances (bibliothèque tierce)
modules, [@Injectable]
intégrée : [AddSingleton], [AddScoped], [AddTransient]

Par rapport à [NestJS], on retiendra surtout :

  • le typage de [C#] est vérifié jusqu'au bout : un paramètre d'action déclaré [int] est réellement converti en entier, une vue déclare le type de son modèle ([@model]) et une faute de frappe dans une vue est une erreur de compilation ;
  • beaucoup de choses sont fournies par le framework sans bibliothèque supplémentaire : validation, messages flash ([TempData]), localisation, pages d'erreur, injection de dépendances ;
  • [Razor] autorise du code [C#] dans les vues : c'est un confort, qui demande de la discipline pour que les vues restent de simples mises en forme.

L'étude de cas montre qu'une application HTML classique, sans [JavaScript] indispensable, reste une solution simple et robuste : chaque page est une URL, le bouton « précédent » du navigateur fonctionne, et le serveur contrôle tout. Le peu de [JavaScript] utilisé (les fenêtres de confirmation) améliore le confort sans être nécessaire au fonctionnement.

Pour aller plus loin, on pourra consulter la documentation d'[ASP.NET Core] (learn.microsoft.com/aspnet/core) et celle d'[Entity Framework Core] (learn.microsoft.com/ef/core), et comparer cette application à sa sœur [NestJS].