![]() |
Neste artigo estou transcrevendo um texto que apresenta as novidades da ASP .NET Core 2.0 que foi disponbilizada recentemente em Preview 1. |
![]() |
Ja está disponível a ASP.NET Core 2.0 Preview 1, e , você já pode começar a criar aplicativos com ASP.NET Core 2.0. Hoje (maio/2017), ela ainda esta na versão Preview 1, e a versão final, deverá ser lançada no terceiro trimestre de 2017.(Q3-2017).
Para construir aplicações usando a ASP.NET Core 2.0, você precisa instalar o Visual Studio 2017 Preview 3. Esteja preparado para algumas mudanças de código e algumas novas peças. Neste artigo vou compilar um resumo das principais novidades da ASP.NET Core 2.0 em comparação com o ASP.NET Core 1.1.
| ASP .NET Core 2.0 Preview 1 |
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<UserSecretsId>aspnet-ASPNETStandard2App-78010062-13D5-415D-B52E-86D936DA3176</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-preview1-final" />
</ItemGroup>
</Project>Nota: Quando a ASP.NET Core foi introduzida, houve muito destaque sobre o fato dela ser modular e trazer apenas o que era necessário. Muitos desenvolvedores gostaram disso, pois reduz o tamanho da aplicação. Então com isso voltamos ao que era antes ?
A equipe do projeto ASP .NET Core diz que não, pois você vai poder continuar seguindo a maneira tradicional de incluir os pacotes necessários. Então, por que esse grande pacote foi introduzido ? Bem, eles dizem que manter, atualizar e remover pacotes indesejados requer um esforço extra e que você tem que lembrar o nome do pacote.
Realmente isso é uma atitude que incomoda pois agora você vai ter aquele pacotão com tudo que você precisa e também não precisa na sua aplicação pois o .NET Core SDK já possui todos os pacotes incluídos dentro do Microsoft.AspNetCore.All. A vantagem é que esta tudo lá e você não vai precisar mais baixar os pacotes. (será que isso é mesmo uma vantagem ??? )
E sobre a implantação? Bem, se houver recursos que você não precisa em sua aplicação, eles dizem que os novos recursos de corte de pacotes excluirão os binários em sua saída de aplicativo publicada por padrão.
| ASP .NET Core 1.1 | ASP .NET Core 2.1 Preview 1 |
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
|
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
|
BuildWebHost é uma expression bodied function
(expressão de função de corpo ) introduzida no C# 6. Este método
chama um método estático CreateDefaultBuilder que adiciona o Kestrel,
a configuração do IIS, as fontes de configuração padrão, os provedores de
registro e a raiz de conteúdo. Assim, em vez de ter fazer tudo isso, o
CreateDefaultBuilder o faz o trabalho por você.
| ASP .NET Core 1.1 | ASP .NET Core 2.1 Preview 1 |
public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
public IConfigurationRoot Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
app.UseMvc();
}
}
|
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseMvc();
}
}
}
|
Como você
pode ver, o construtor já não possui mais o IHostingEnvironment, em vez
disso, toma a dependência IConfiguration
injetada e define a propriedade Configuration para acesso posterior, se
necessário. Outra alteração está no método Configure, pois o registro não
faz mais parte desse método.
@page
@{
var mensagem = "Ola, Mundo!";
}
<html>
<body>
<p>@mensagem</p>
</body>
</html>
|
Elas
devem usar a diretiva @page como a primeira diretriz. Você pode escrever
uma página Razor : com modelo inline (usando a diretiva @functions), com
modelos de página separados (denominados Pages Models) e sem modelos. O
roteamento também funciona bem nestas páginas. Visite o site da
documentação
oficial para mais detalhes.
| ASP .NET Core 1.1 | ASP .NET Core 2.1 Preview 1 |
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AuthenticationScheme = "MyCookieMiddlewareInstance",
LoginPath = new PathString("/Account/Unauthorized/"),
AccessDeniedPath = new PathString("/Account/Forbidden/"),
AutomaticAuthenticate = true,
AutomaticChallenge = true
});
app.UseMvc();
}
|
public void ConfigureServices(IServiceCollection services)
{
services.AddCookieAuthentication(o => o.LoginPath = "/api/login");
}
public void Configure(IApplicationBuilder app)
{
app.UseAuthentication();
app.UseMvc();
}
|
Como você pode ver, o método Configure() agora apenas adiciona o middleware de autenticação ao pipeline sem especificar nenhuma opção configurável para o mecanismo de autenticação. A tabela a seguir mostra as mudanças de nome de alguns dos middleware de autenticação.
| ASP.NET Core 1.1 | ASP.NET Core 2.0 |
|---|---|
| app.UseOpenIdConnectAuthentication | services.AddOpenIdConnectAuthentication |
| app.UseJwtBearerAuthentication | services.AddJwtBearerAuthentication |
| app.UseFacebookAuthentication | services.AddFacebookAuthentication |
Para mais
detalhes veja este link :
https://github.com/aspnet/Announcements/issues/232
Bem, essas foram as mudanças mais importantes, para mais detalhes sobre outras alterações visite este endereço : https://github.com/aspnet/Announcements/milestone/12
Resta
aguarda e ver o que vai vingar e o que vai azedar...
![]()
fonte : http://www.talkingdotnet.com/whats-new-in-asp-net-core-2-0/
|
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: