![]()  | 
    
     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: