9 secretos de ASP.NET Core

Más recientemente, actualizamos ASP.NET Core a la versión 2.1. Uno de los creadores de la plataforma, nuestro colega David Fowler, compartió algunas de sus características útiles que pocas personas conocen. Además, además de las 9 características secretas de ASP.NET Core, debajo del corte también encontrará una lista de las principales innovaciones con todos los enlaces útiles. Únete ahora!



Se lanzó la versión 2.1 de la plataforma abierta ASP.NET Core, y el desarrollador David Fowler tuiteó algunas de sus características útiles que pocas personas conocen. Por supuesto, ahora la plataforma es más rápida, pero también hay una serie de nuevas características y mejores prácticas que vale la pena considerar con más detalle.

Host genérico .NET


ASP.NET Core ahora funciona con el nuevo modelo de alojamiento. Las aplicaciones .NET forman e inician el host .

El host es responsable de lanzar aplicaciones y administrar su ciclo de vida. El objetivo del host genérico es separar la canalización HTTP de la API del host web para poder crear más scripts en el host. La mensajería, el fondo y otras tareas que no son HTTP funcionan mejor con las características de host genérico de extremo a extremo, como la configuración, la inyección de dependencia (DI) y el registro.

Esto significa que ahora para los scripts sin alojamiento web, no solo hay WebHost, sino también Host genérico. Al mismo tiempo, el trabajo será tan conveniente como con ASP.NET Core, pero también tendrá nuevas características, como DI, registro y configuración. El código de muestra para el host genérico se puede encontrar en GitHub .

Interfaz IHOSTEDSERVICE


Con él, puede ejecutar operaciones en segundo plano largas tanto en el host universal como en sus aplicaciones web. ASP.NET Core 2.1 introdujo soporte para la clase base BackgroundService, lo que facilita enormemente la creación de un ciclo asíncrono largo. El código de muestra para el Servicio Hospedado también está en GitHub .

Cree una tarea de fondo temporal 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; } 

facil!

Servicios de Windows en .NET Core


¡Ahora puede alojar ASP.NET Core dentro de un servicio de Windows! Muchos usuarios han solicitado agregar esta función. Ya no necesita IIS para alojar lo que quiera. Eche un vistazo a Microsoft.AspNetCore.Hosting.WindowsServices en NuGet y la documentación detallada sobre el alojamiento de su propia aplicación ASP.NET Core en Windows como un servicio de Windows sin 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 - Configuración IWEBHOSTBUILDER con atributo de ensamblaje


Como siempre, una implementación simple y precisa utilizando una fuente en GitHub.

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

Paquetes de FUENTE COMPARTIDA


Será interesante para usted, asegúrese de prestarles atención. Puede crear paquetes que se utilizan como herramientas auxiliares para el código fuente distribuido a través de una fuente compartida. Entre nosotros, los llamamos "paquetes fuente compartidos". Se usan en ASP.NET Core en todas partes , cuando algo necesita ser compartido, pero no debe ser accesible públicamente a través de la API. Luego se usará su código, pero no habrá dependencias en el paquete final.

Se utilizan en CSPROJ de esta manera . Presta atención al atributo PrivateAssets :

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

OBJECTMETHODEXECUTOR


Si necesita usar un método en un tipo a través de la reflexión, y este método puede ser asíncrono, la función ObjectMethodExecutor optimizada y flexible, que usamos en todas partes en la base de código ASP.NET Core, lo ayudará.

El equipo usa este código en MVC para invocar sus métodos de controlador. Usan este código en SignalR para invocar métodos de concentrador. Funciona con métodos sincrónicos y asincrónicos. También puede funcionar con objetos esperados personalizados y flujos de trabajo asíncronos F #.

SUPRESIÓN ESTADO MENSAJES


Un método pequeño y solicitado con frecuencia. Si no le gusta lo que aparece después de iniciar el controlador dotnet cuando aloja la aplicación web (imprima la información de enlace), puede usar el nuevo método de extensión SuppressStatusMessages.

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

Adiciones


En la versión 2.1, se ha vuelto más fácil configurar parámetros para los que se requieren servicios. Anteriormente, tenía que crear un tipo obtenido usando IConfigureOptions, ahora puede hacer todo esto en ConfigureServices usando AddOptions ‹TOptions›

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

IHTTPCONTEXT con ADDHTTPCONTEXTACCESSOR


Por lo general, no es necesario configurar IHttpContext, pero muchos quieren saber cómo hacerlo , y algunos creen que esto debería hacerse automáticamente. No se registra de manera predeterminada, ya que su presencia conduce a una disminución en el rendimiento. Sin embargo, en ASP.NET Core 2.1 , se agregó PR para el método de extensión, lo que facilitará el proceso si lo desea.

 services.AddHttpContextAccessor (); 

Entonces, ASP.NET Core 2.1 está listo para su lanzamiento .

Nuevas características en esta versión:


Consulte la lista de cambios en ASP.NET Core 2.1 en los documentos de ASP.NET Core para obtener más información sobre estas características. En las notas de la versión se proporciona una lista completa de todos los cambios en la nueva versión.

¡Pruébalo! Tome el curso QuickStart y podrá crear aplicaciones web básicas en 10 minutos.

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


All Articles