ASP .NET Core MVC – Les middlewares

Les middlewares sont des composants logiciels, liés les uns aux autres pour forme un pipeline, intervenant dans le processus de traitement d’une requête HTTP, pour exécuter un traitement de données. Ils sont exécutés de manière séquentielle, de manière ordonnée en fonction de leur ordre de déclaration dans la méthode Configure de la classe Startup, pour traiter la requête HTTP. Lors du traitement de la réponse HTTP, ils sont exécutés dans l’ordre inverse.

Le traitement exécuté par un middleware peut être varié :

  • Gestion des erreurs
  • Configuration de la sécurité
  • Configuration de l’accès aux fichiers statiques
  • Configuration du routage
  • Etc.

Dans une application ASP .NET Core MVC, les middlewares sont définis dans la méthode Configure de la classe Startup :

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseBrowserLink();
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }

    app.UseStaticFiles();

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

Examinons l’implémentation de cette méthode.
En fonction de l’environnement d’exécution, différents middlewares traiteront la requête et la réponse HTTP :

  • Si l’application s’exécute en mode Development, alors deux middlewares sont exécutés :
    • Un premier permettant de créer un canal de communication entre Visual Studio et les navigateurs Web exécutant les pages de l’application.
    • Un second middleware permettant d’afficher une page d’erreur détaillée lorsqu’une exception est rencontrée.
  • En revanche, si l’application est exécutée en mode Staging (recette) ou Production, alors le middleware de gestion des exceptions est exécuté.

Puis, un middleware permettant d’accéder aux fichiers statiques (fichiers CSS, images, pages HTML, …) est enregistré.
Un dernier middleware est enregistré afin de prendre en charge le routage de la requête, afin d’exécuter l’action d’un contrôleur à partir d’un modèle d’URL.

About: James RAVAILLE

Travaillant avec la plateforme Microsoft .NET depuis 2002, j’alterne les missions de formation et d’ingénierie avec cette plateforme. J’écris ce blog pour transmettre mes connaissances à tout développeur, qu’il soit débutant ou expérimenté.