Nouveautés d’ASP.NET Core 2.1

Cet article met en évidence les modifications les plus importantes dans ASP.NET 2.1 Core et fournit des liens vers la documentation appropriée.

SignalR

SignalR a été réécrit pour ASP.NET Core 2.1.

ASP.NET Core SignalR comprend plusieurs améliorations :

  • Un modèle simplifié de montée en puissance parallèle.
  • Un nouveau client JavaScript sans dépendance de jQuery.
  • Un nouveau protocole binaire compact basé sur MessagePack.
  • Prise en charge des protocoles personnalisés.
  • Un nouveau modèle réponse de streaming.
  • Prise en charge des clients basés sur des WebSocket nus.

Pour plus d’informations, consultez ASP.NET Core SignalR.

Bibliothèques de classes Razor

Avec ASP.NET Core 2.1, il est plus facile de générer une interface utilisateur basée sur Razor, de l’inclure dans une bibliothèque et de la partager entre plusieurs projets. Le nouveau SDK Razor permet de générer des fichiers Razor dans un projet de bibliothèque de classes qui peut être placé dans un package NuGet. Les vues et les pages dans les bibliothèques sont automatiquement découvertes et peuvent être remplacées par l’application. Grâce à l’intégration de la compilation Razor dans la build :

  • Le temps de démarrage de l’application est nettement plus rapide.
  • Les mises à jour rapides des pages et vues Razor au moment de l’exécution sont toujours disponibles dans le cadre d’un flux de travail de développement itératif.

Pour plus d’informations, consultez Créer une interface utilisateur réutilisable à l’aide du projet Class LibraryRazor.

Bibliothèque d’interface utilisateur Identity et génération automatique de modèles

ASP.NET Core 2.1 fournit ASP.NET Core Identity en tant que Razorbibliothèque de classes . Les applications qui incluent le Identity peuvent appliquer le nouveau générateur de modèles automatique de Identity de manière sélective pour ajouter le code source contenu dans la bibliothèque de classes IdentityRazor (RCL). Vous pouvez souhaiter générer le code source afin de pouvoir modifier le code et changer le comportement. Par exemple, vous pouvez demander au générateur de modèles automatique de générer le code utilisé dans l’inscription. Le code généré est prioritaire sur le même code dans la bibliothèque de classes Identityd’identité.

Les applications qui n’incluent pas l’authentification peuvent appliquer le générateur de modèles automatique de Identity pour ajouter le package de Identity de la bibliothèque de classes. Vous pouvez sélectionner le code de Identity à générer.

Pour plus d’informations, consultez Génération de modèles automatiqueIdentity dans les projets ASP.NET Core.

HTTPS

L’importance croissante accordée à la sécurité et à la confidentialité justifie l’activation du protocole HTTPS pour les applications web. La mise en œuvre du protocole HTTPS devient de plus en plus stricte sur le web. Les sites qui n’utilisent pas le protocole HTTPS sont considérés comme non sécurisés. Les navigateurs (Chrome, Mozilla) commencent à imposer l’utilisation des fonctionnalités web dans un contexte sécurisé. Le RGPD exige l’utilisation du protocole HTTPS pour protéger la confidentialité des utilisateurs. L’utilisation du protocole HTTPS en production est critique et son utilisation en développement peut aider à éviter les problèmes liés au déploiement (tels que les liens non sécurisés). ASP.NET Core 2.1 inclut un certain nombre d’améliorations qui facilitent l’utilisation du protocole HTTPS pendant le développement et sa configuration en production. Pour plus d’informations, consultez Appliquer le protocole HTTPS.

Activé par défaut

Pour faciliter le développement de sites web sécurisés, le protocole HTTPS est maintenant activé par défaut. À compter de la version 2.1, Kestrel écoute sur https://localhost:5001 quand un certificat de développement local est présent. Un certificat de développement est créé :

  • Dans le cadre de la première exécution du kit SDK .NET Core, quand vous utilisez celui-ci pour la première fois.
  • Manuellement à l’aide du nouvel outil dev-certs.

Exécutez dotnet dev-certs https --trust pour approuver le certificat.

Redirection et application du protocole HTTPS

En règle générale, les applications web doivent écouter sur les protocoles HTTP et HTTPS, mais ensuite rediriger tout le trafic HTTP vers HTTPS. Dans la version 2.1 a été introduit le middleware (intergiciel) de redirection HTTPS spécialisé, qui redirige intelligemment en fonction de la présence de ports de serveur lié ou de configuration.

Vous pouvez renforcer l’utilisation du protocole HTTPS en utilisant le protocole HSTS (HTTP Strict Transport Security Protocol). Le protocole HSTS indique aux navigateurs de toujours accéder au site via HTTPS. ASP.NET Core 2.1 ajoute un middleware HSTS qui prend en charge des options pour l’âge maximal, les sous-domaines et la liste de préchargement HSTS.

Configuration pour la production

En production, HTTPS doit être explicitement configuré. Dans la version 2.1, le schéma de configuration par défaut pour la configuration HTTPS pour Kestrel a été ajouté. Les applications peuvent être configurées pour utiliser :

RGPD

ASP.NET Core fournit des API et des modèles qui aident à satisfaire à certaines des exigences du Règlement général sur la protection des données (RGPD). Pour plus d’informations, consultez Prise en charge du RGPD dans ASP.NET Core. Un exemple d’application montre comment utiliser et tester la plupart des API et points d’extension RGPD ajoutés aux modèles ASP.NET Core 2.1.

Tests d’intégration

Un nouveau package est introduit qui simplifie la création et l’exécution de tests. Le package Microsoft.AspNetCore.Mvc.Testing gère les tâches suivantes :

  • Il copie le fichier de dépendance (*.deps) à partir de l’application testée dans le dossier bin du projet de test.
  • Il définit la racine du contenu sur la racine du projet de l’application testée afin que soient trouvés les pages/vues et fichiers statiques quand les tests sont exécutés.
  • Il fournit la classe WebApplicationFactory<TEntryPoint> afin de simplifier l’amorçage de l’application testée avec TestServer.

Le test suivant utilise xUnit pour vérifier que la page Index se charge avec un code d’état de réussite et avec l’en-tête Content-Type correct :

public class BasicTests
    : IClassFixture<WebApplicationFactory<RazorPagesProject.Startup>>
{
    private readonly HttpClient _client;

    public BasicTests(WebApplicationFactory<RazorPagesProject.Startup> factory)
    {
        _client = factory.CreateClient();
    }

    [Fact]
    public async Task GetHomePage()
    {
        // Act
        var response = await _client.GetAsync("/");

        // Assert
        response.EnsureSuccessStatusCode(); // Status Code 200-299
        Assert.Equal("text/html; charset=utf-8",
            response.Content.Headers.ContentType.ToString());
    }
}

Pour plus d’informations, consultez la rubrique Tests d’intégration.

[ApiController], ActionResult<T>

ASP.NET Core 2.1 ajoute de nouvelles conventions de programmation qui facilitent la génération d’API web propres et descriptives. ActionResult<T> est un nouveau type qui permet à une application de retourner soit un type de réponse, soit tout autre résultat d’action (à l’image d’IActionResult) tout en indiquant toujours le type de réponse. L’attribut [ApiController] a également été ajouté comme moyen d’accepter des comportements et des conventions propres aux API web.

Pour plus d’informations, consultez Créer des API web avec ASP.NET Core.

IHttpClientFactory

ASP.NET Core 2.1 inclut un nouveau service IHttpClientFactory qui facilite la configuration et l’utilisation d’instances de HttpClient dans les applications. HttpClient intègre déjà le concept de délégation des gestionnaires qui pourraient être liés ensemble pour les requêtes HTTP sortantes. La fabrique :

  • Rend plus intuitive l’inscription des instances de HttpClient par client nommé.
  • Implémente un gestionnaire Polly qui permet d’utiliser des stratégies Polly pour des fonctionnalités telles que Retry (nouvelle tentative) ou CircuitBreaker (disjoncteur).

Pour plus d’informations, consultez Lancer des requêtes HTTP.

Configuration du transport libuv Kestrel

Dans ASP.NET Core 2.1, le transport par défaut de Kestrel n’est plus basé sur Libuv, mais sur des sockets managés. Pour plus d’informations, consultez Implémentation du serveur web Kestrel : configuration du transport.

Générateur d’hôte générique

Le générateur d’hôte générique (HostBuilder) a été introduit. Ce générateur peut être utilisé pour les applications qui ne traitent pas les requêtes HTTP (messagerie, les tâches en arrière-plan, etc.).

Pour plus d’informations, consultez Hôte générique .NET.

Modèles SPA mis à jour

Les modèles d’applications monopages pour Angular et React sont mis à jour pour utiliser les systèmes de génération et les structures de projet standard pour chaque infrastructure.

Le modèle Angular est basé sur l’interface CLI Angular, tandis que le modèle React est basé sur create-react-app.

Pour plus d'informations, consultez les pages suivantes :

Pages Razor de recherche de ressources Razor

Dans la version 2.1, Pages Razor recherche les ressources Razor (par exemple, les dispositions et pages partielles) dans les répertoires suivants dans l’ordre indiqué :

  1. Dossier Pages en cours.
  2. /Pages/Shared/
  3. /Views/Shared/

Pages Razor dans une zone

Pages Razor prend désormais en charge les zones. Pour obtenir un exemple de zones, créez une application web Pages Razor avec des comptes d’utilisateur individuels. Une application web Pages Razor avec des comptes d’utilisateur individuels inclut /Zones/Identity/Pages.

Version de compatibilité MVC

La méthode SetCompatibilityVersion permet à une application d’accepter ou de refuser les changements de comportement potentiellement cassants introduits dans ASP.NET Core MVC 2.1 ou version ultérieure.

Pour plus d’informations, consultez Version de compatibilité pour ASP.NET Core MVC.

Migrer depuis la version 2.0 vers la version 2.1

Consultez Migrer depuis ASP.NET Core 2.0 vers 2.1.

Informations supplémentaires

Pour obtenir la liste complète des modifications, consultez les Notes de publication d’ASP.NET Core 2.1 .