Mais recentemente, atualizamos o ASP.NET Core para a versão 2.1. Um dos criadores da plataforma, nosso colega David Fowler, compartilhou alguns de seus recursos úteis que poucas pessoas conhecem. Além disso, além dos 9 recursos secretos do ASP.NET Core, você também encontrará uma lista das principais inovações com todos os links úteis. Inscreva-se agora!

A versão 2.1 da plataforma ASP.NET Core aberta foi lançada e o desenvolvedor David Fowler
twittou alguns de seus recursos úteis que poucas pessoas conhecem. Obviamente, agora a plataforma é mais rápida, mas também há vários novos recursos e práticas recomendadas que vale a pena considerar com mais detalhes.
O ASP.NET Core agora trabalha com o novo modelo de hospedagem. Os aplicativos .NET se formam e
iniciam o host .
O host é responsável por iniciar aplicativos e gerenciar seu ciclo de vida. O objetivo do host genérico é separar o pipelining HTTP da API do host da web para poder criar mais scripts no host. Mensagens, segundo plano e outras tarefas não HTTP funcionam melhor com os recursos de host genérico de ponta a ponta, como configuração, injeção de dependência (DI) e log.
Isso significa que agora para scripts sem hospedagem na web, não há apenas o WebHost, mas também o host genérico. Ao mesmo tempo, o trabalho será tão conveniente quanto no ASP.NET Core, mas você também terá novos recursos, como DI, log e configuração. O código de exemplo para Host Genérico
pode ser encontrado no GitHub .
Com ele, você pode executar longas operações em segundo plano no host universal e nos aplicativos da web. O ASP.NET Core 2.1
introduziu suporte para a classe base BackgroundService, o que facilita muito a criação de um longo loop assíncrono. O código de exemplo para o Serviço Hospedado também está
no GitHub .
Crie uma tarefa em segundo plano temporária simples:
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; }
fácil!
Agora você pode hospedar o ASP.NET Core dentro de um serviço do Windows! Muitos usuários solicitaram adicionar esse recurso. Você não precisa mais do IIS para hospedar o que quiser. Dê uma olhada no
Microsoft.AspNetCore.Hosting.WindowsServices no NuGet e na
documentação detalhada sobre como hospedar seu próprio aplicativo ASP.NET Core no Windows como um serviço do Windows sem o 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(); }
Como sempre, uma implementação simples e precisa usando uma fonte no GitHub.
[assembly: HostingStartup(typeof(SampleStartups.StartupInjection))]
Será interessante para você, preste atenção neles. Você pode criar pacotes que são usados como ferramentas auxiliares para o código-fonte distribuído por fonte compartilhada. Entre nós, os chamamos de "pacotes de fontes compartilhadas". Eles são
usados no ASP.NET Core em qualquer lugar , quando algo precisa ser compartilhado, mas não deve ser acessível ao público por meio da API. Em seguida, seu código será usado, mas não haverá dependências no pacote final.
Eles são usados no CSPROJ
dessa maneira . Preste atenção ao atributo
PrivateAssets :
<PackageReference Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" PrivateAssets="All" Version="" /> <PackageReference Include="Microsoft.Extensions.ObjectMethodExecutor.Sources" PrivateAssets="All" Version="" />
Se você precisar usar um método em um tipo por meio de reflexão, e esse método puder ser assíncrono, a função
ObjectMethodExecutor otimizada e flexível, que usamos em qualquer lugar da base de código do ASP.NET Core, o ajudará.
A equipe usa esse código no MVC para chamar seus métodos de controlador. Eles usam esse código no SignalR para chamar métodos de hub. Funciona com métodos síncronos e assíncronos. Também pode trabalhar com objetos esperados personalizados e fluxos de trabalho assíncronos em F #.
Um método pequeno e frequentemente solicitado. Se você não gostar do que aparece após iniciar o driver dotnet ao hospedar o aplicativo Web (imprimir as informações de ligação), poderá usar o novo método de extensão SuppressStatusMessages.
WebHost.CreateDefaultBuilder(args) .SuppressStatusMessages(true) .UseStartup<Startup>();
Na versão 2.1, ficou mais fácil configurar parâmetros para os quais os serviços são necessários. Antes, era necessário criar um tipo obtido usando IConfigureOptions, agora você pode fazer tudo isso no ConfigureServices usando AddOptions ‹TOptions›
public void ConfigureServicdes(IServiceCollection services) { services.AddOptions<MyOptions>() .Configure<IHostingEnvironment>((o,env) => { o.Path = env.WebRootPath; }); }
Normalmente, não há necessidade de configurar o IHttpContext, mas muitos querem saber
como fazer isso , e alguns acreditam que isso deve ser feito automaticamente. Não é registrado por padrão, pois sua presença leva a uma diminuição no desempenho. No entanto, no ASP.NET Core 2.1
, o PR foi adicionado ao método de extensão, que
facilitará o processo, se você desejar.
services.AddHttpContextAccessor ();
Portanto, o ASP.NET Core 2.1
está pronto para lançamento .
Novos recursos nesta versão:
Confira a
lista de alterações no ASP.NET Core 2.1 nos documentos do ASP.NET Core para saber mais sobre esses recursos. Uma lista completa de todas as alterações na nova versão é fornecida nas
notas de versão .
Experimente! Faça
o curso de início rápido e você poderá criar aplicativos da Web básicos em 10 minutos.