9 secrets d'ASP.NET Core

Plus récemment, nous avons mis à niveau ASP.NET Core vers la version 2.1. L'un des créateurs de la plateforme, notre collègue David Fowler, a partagé certaines de ses fonctionnalités utiles que peu de gens connaissent. De plus, en plus des 9 fonctionnalités secrètes d'ASP.NET Core, sous la coupe, vous trouverez une liste des principales innovations avec tous les liens utiles. Rejoignez-nous maintenant!



La version 2.1 de la plate-forme ouverte ASP.NET Core a été publiée et le développeur David Fowler a tweeté certaines de ses fonctionnalités utiles que peu de gens connaissent. Bien sûr, la plate-forme est désormais plus rapide, mais il existe également un certain nombre de nouvelles fonctionnalités et de meilleures pratiques qui méritent d'être examinées plus en détail.

Hôte générique .NET


ASP.NET Core fonctionne désormais avec le nouveau modèle d'hébergement. Les applications .NET se forment et démarrent l'hôte .

L'hôte est responsable du lancement des applications et de la gestion de leur cycle de vie. L'objectif de l'hôte générique est de séparer le pipeline HTTP de l'API de l'hôte Web afin de pouvoir créer plus de scripts sur l'hôte. La messagerie, l'arrière-plan et d'autres tâches non HTTP fonctionnent mieux avec les fonctionnalités de l'hôte générique de bout en bout telles que la configuration, l'injection de dépendance (DI) et la journalisation.

Cela signifie que maintenant, pour les scripts sans hébergement Web, il n'y a pas seulement WebHost, mais aussi Generic Host. Dans le même temps, le travail sera aussi pratique qu'avec ASP.NET Core, mais vous aurez également de nouvelles fonctionnalités, telles que DI, la journalisation et la configuration. Un exemple de code pour l'hôte générique peut être trouvé sur GitHub .

Interface IHOSTEDSERVICE


Avec lui, vous pouvez exécuter de longues opérations en arrière-plan à la fois dans l'hôte universel et dans vos applications Web. ASP.NET Core 2.1 a introduit la prise en charge de la classe de base BackgroundService, ce qui facilite considérablement la création d'une longue boucle asynchrone. Un exemple de code pour le service hébergé se trouve également sur GitHub .

Créez une tâche d'arrière-plan temporaire simple:

public Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Timed Background Service is starting."); _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5)); return Task.CompletedTask; } 

facile!

Services Windows sur .NET Core


Vous pouvez maintenant héberger ASP.NET Core dans un service Windows! De nombreux utilisateurs ont demandé à ajouter cette fonctionnalité. Vous n'avez plus besoin d'IIS pour héberger tout ce que vous voulez. Jetez un œil à Microsoft.AspNetCore.Hosting.WindowsServices sur NuGet et à la documentation détaillée sur l'hébergement de votre propre application ASP.NET Core sur Windows en tant que service Windows sans IIS.

 public static void Main(string[] args) { var pathToExe = Process.GetCurrentProcess().MainModule.FileName; var pathToContentRoot = Path.GetDirectoryName(pathToExe); var host = WebHost.CreateDefaultBuilder(args) .UseContentRoot(pathToContentRoot) .UseStartup<Startup>() .Build(); host.RunAsService(); } 

IHOSTINGSTARTUP - Configuration IWEBHOSTBUILDER avec attribut d'assembly


Comme toujours, une implémentation simple et précise utilisant une source sur GitHub.

 [assembly: HostingStartup(typeof(SampleStartups.StartupInjection))] 

Forfaits SOURCE PARTAGÉE


Ce sera intéressant pour vous, assurez-vous de leur prêter attention. Vous pouvez créer des packages utilisés comme outils auxiliaires pour le code source distribué via une source partagée. Entre eux, nous les appelons «packages de source partagée». Ils sont utilisés partout dans ASP.NET Core , quand quelque chose doit être partagé, mais il ne doit pas être accessible au public via l'API. Ensuite, votre code sera utilisé, mais il n'y aura pas de dépendances sur le package final.

Ils sont utilisés dans CSPROJ de cette manière . Faites attention à l'attribut PrivateAssets :

 <PackageReference Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" PrivateAssets="All" Version="" /> <PackageReference Include="Microsoft.Extensions.ObjectMethodExecutor.Sources" PrivateAssets="All" Version="" /> 

OBJECTMETHODEXECUTOR


Si vous devez utiliser une méthode dans un type par réflexion et que cette méthode peut être asynchrone, la fonction ObjectMethodExecutor optimisée et flexible, que nous utilisons partout dans la base de code ASP.NET Core, vous aidera.

L'équipe utilise ce code dans MVC pour appeler vos méthodes de contrôleur. Ils utilisent ce code dans SignalR pour appeler des méthodes de concentrateur. Il fonctionne avec des méthodes synchrones et asynchrones. Il peut également fonctionner avec des objets attendus personnalisés et des flux de travail asynchrones F #.

SUPPRESSSTATUSMESSAGES


Une petite méthode souvent demandée. Si vous n'aimez pas ce qui s'affiche après le démarrage du pilote dotnet lorsque vous hébergez l'application Web (imprimez les informations de liaison), vous pouvez utiliser la nouvelle méthode d'extension SuppressStatusMessages.

 WebHost.CreateDefaultBuilder(args) .SuppressStatusMessages(true) .UseStartup<Startup>(); 

ADDOPTIONS


Dans la version 2.1, il est devenu plus facile de configurer les paramètres pour lesquels les services sont requis. Auparavant, vous deviez créer un type obtenu à l'aide d'IConfigureOptions, maintenant vous pouvez faire tout cela dans ConfigureServices à l'aide d'AddOptions ‹TOptions›

 public void ConfigureServicdes(IServiceCollection services) { services.AddOptions<MyOptions>() .Configure<IHostingEnvironment>((o,env) => { o.Path = env.WebRootPath; }); } 

IHTTPCONTEXT avec ADDHTTPCONTEXTACCESSOR


Habituellement, il n'est pas nécessaire de configurer IHttpContext, mais beaucoup veulent savoir comment le faire , et certains pensent que cela devrait être fait automatiquement. Il n'est pas journalisé par défaut, car sa présence entraîne une baisse des performances. Cependant, dans ASP.NET Core 2.1 , PR a été ajouté pour la méthode d'extension, ce qui facilitera le processus si vous le souhaitez.

 services.AddHttpContextAccessor (); 

ASP.NET Core 2.1 est donc prêt à être publié .

Nouvelles fonctionnalités de cette version:


Consultez la liste des modifications dans ASP.NET Core 2.1 dans les documents ASP.NET Core pour en savoir plus sur ces fonctionnalités. Une liste complète de toutes les modifications apportées à la nouvelle version est fournie dans les notes de version .

Essayez-le! Suivez le cours QuickStart et vous pouvez créer des applications Web de base en 10 minutes.

Source: https://habr.com/ru/post/fr416443/


All Articles