saturday 2017
COSA C'È DI NUOVO IN ASP.NET CORE 2.0
Andrea Dottor
@dottor
UN PÒ DI STORIA
• Active Server Pages (ASP)1999
• ASP.NET2002
• ASP.NET 22005
• ASP.NET MVC2008
• ASP.NET Web API2012
• ASP.NET vNext2014
• ASP.NET 5 RC12015
• ASP.NET Core 1.02016
• ASP.NET Core 2.02017
ASP.NET CORE (RECAP)
Possibilità di essere eseguito in ambiente Windows, Mac e Linux
Unico controller per View e API
Pipeline modulare, leggera e altamente performance
Dipendenze modulari.
E' stata eliminata la System.Web
Ogni funzionalità è in una dll/package separato (Session, Cache, …)
Framework di Dependency Injection integrato
ROADMAP
Ecco cosa ci aspetta dopo ASP.NET Core 2.0 (secondo quanto scritto su GitHub)
COSA C'È DI NUOVO IN ASP.NET CORE 2.0?
E' la versione .NET più veloce di sempre
Può essere eseguito sia su .NET Framework 4.6.1 che su .NET Core 2.0
Semplificata configurazione e nuovi templates
Incremento di performance
.NET CORE 2.0 IMPLEMENTA .NET STANDARD 2.0
API disponibili in .NET Standard 1.6 più di 13k
API disponibili in .NET Standard 2.0 più di 32k
~70% dei packages Nuget usano API compatibili
.NET CORE 2.0 TEMPLATES
Updated Templates
 Aggiunto template di progetto non MVC (Razor Pages)
New SPA templates
 Codice sorgente dell'app cliente presente nella cartella ClientApp, che viene poi
compilato/generato dentro alla folder wwwrootdist
 Basati su TypeScript e Webpack
 Server-side rendering
New "dotnet new" templates
 https://github.com/dotnet/templating/wiki/Available-templates-for-dotnet-new
DEMO SPA Template
SEMPLIFICAZIONE
CONFIGURATION AND LOGGING CHANGES
Da ASP.NET Core 2.0, IConfiguration, ILogger, ILoggerFactory,
IHostingEnvironment sono già da subito disponibili tramite DI
IConfiguration viene ora iniettato by default utilizzando il meccanismo di DI
Il codice per configurare la ILoggerFactory è stato spostato in fase di startup e
non più in Configure
MONITOR AND PROFILE WITH NO CODE CHANGES
Se pubblicato in un Azure App Service, non è
necessario eseguire modifiche al codice per
avere il performance profiling, error reporting
e la diagnostica di Azure Application Insights
Gli stessi log sono disponibili anche su Visual
Studio 2017 facendo "Add – Application
Insights Telemetry"
Questo possibile grazie all'implementazione di
IHostingStartup
 void Configure(IWebHostBuilder builder)
COOKIE TEMPDATA
TempData ora utilizza di default i cookie per salvare le informazioni
In ASP.NET Core 1.x di default utilizzava la sessione (si doveva abilitare)
E' possibile utilizzare nuovamente la sessione nel caso si debba memorizzare
parecchie informazioni
RAZOR PAGES
Abilitando MVC vengono abilitate anche le Razor Pages
 Utilizzando services.AddMvc()
Stesse caratteristiche e funzionalità dei View component
Possono avere un model che estende PageModel
 Metodo OnGetAsync
 Metodo OnPostAsync
Sviluppo più simile a MVVM (o a WebForm )
DEMO Razor Pages
PERFORMANCE
AUTOMATIC PAGE AND VIEW COMPILATION ON PUBLISH
Le view e le Razor-page in fase di pubblicazione dell'applicazione vengono
ora compilate di default
 Riduzione di 2.X dell'output
 Miglioramento del tempo di startup dell'applicazione
 I file vengono compilati in dll, e non più come file .cshtml
 La precompilazione può essere disabilitata
MICROSOFT.ASPNETCORE.ALL
Nelle applicazioni che hanno come target ASP.NET Core 2.0 è
possibile referenziare il metapackage Microsoft.AspNetCore.All
con tutti i vantaggi del .NET Core Runtime Store
Permette di referenziare TUTTI i package di ASP.NET Core e di Entity
Framework Core, ma senza dover fare il download dei singoli package
I package sono installati direttamente con il .NET Core SDK (.NET Core
Runtime Store)
Questi assembly sono già "pre-JIT'ted" (pre-compilati) così da velocizzare
il tempo di startup
CONCLUSIONI
MIGRARE DA ASP.NET 1.X
Guida per la migrazione:
 https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/
Attenzione se avete personalizzato i template (scaffolding), vanno
aggiornati
 https://forums.asp.net/p/2128119/6164188.aspx?Re+Migration+1+1+to+2+0+Scaffold+multiple+problems
In alcuni casi, la precompilazione delle View può non funzionare
 Risolto nella 2.0.1 https://github.com/dotnet/core-setup/issues/2981
 Risolto nella 2.1.0 preview 1
https://github.com/aspnet/MvcPrecompilation/issues/102
CONTROLLI TI TERZE PARTI
Telerik
https://www.telerik.com/aspnet-core-ui
Devexpress
https://www.devexpress.com/products/net/controls/asp/mvc-core.xml
Syncfusion
https://www.syncfusion.com/products/aspnetcore
HTTP://CUSTOMERS.MICROSOFT.COM/EN-US/STORY/RAYGUN
Andrea Dottor
Email: andrea@dottor.net
Www: www.dottor.net
Twitter: @dottor

Cosa c'è di nuovo in asp.net core 2 0

  • 1.
    saturday 2017 COSA C'ÈDI NUOVO IN ASP.NET CORE 2.0 Andrea Dottor @dottor
  • 2.
    UN PÒ DISTORIA • Active Server Pages (ASP)1999 • ASP.NET2002 • ASP.NET 22005 • ASP.NET MVC2008 • ASP.NET Web API2012 • ASP.NET vNext2014 • ASP.NET 5 RC12015 • ASP.NET Core 1.02016 • ASP.NET Core 2.02017
  • 3.
    ASP.NET CORE (RECAP) Possibilitàdi essere eseguito in ambiente Windows, Mac e Linux Unico controller per View e API Pipeline modulare, leggera e altamente performance Dipendenze modulari. E' stata eliminata la System.Web Ogni funzionalità è in una dll/package separato (Session, Cache, …) Framework di Dependency Injection integrato
  • 4.
    ROADMAP Ecco cosa ciaspetta dopo ASP.NET Core 2.0 (secondo quanto scritto su GitHub)
  • 5.
    COSA C'È DINUOVO IN ASP.NET CORE 2.0? E' la versione .NET più veloce di sempre Può essere eseguito sia su .NET Framework 4.6.1 che su .NET Core 2.0 Semplificata configurazione e nuovi templates Incremento di performance
  • 6.
    .NET CORE 2.0IMPLEMENTA .NET STANDARD 2.0 API disponibili in .NET Standard 1.6 più di 13k API disponibili in .NET Standard 2.0 più di 32k ~70% dei packages Nuget usano API compatibili
  • 7.
    .NET CORE 2.0TEMPLATES Updated Templates  Aggiunto template di progetto non MVC (Razor Pages) New SPA templates  Codice sorgente dell'app cliente presente nella cartella ClientApp, che viene poi compilato/generato dentro alla folder wwwrootdist  Basati su TypeScript e Webpack  Server-side rendering New "dotnet new" templates  https://github.com/dotnet/templating/wiki/Available-templates-for-dotnet-new
  • 8.
  • 9.
  • 10.
    CONFIGURATION AND LOGGINGCHANGES Da ASP.NET Core 2.0, IConfiguration, ILogger, ILoggerFactory, IHostingEnvironment sono già da subito disponibili tramite DI IConfiguration viene ora iniettato by default utilizzando il meccanismo di DI Il codice per configurare la ILoggerFactory è stato spostato in fase di startup e non più in Configure
  • 12.
    MONITOR AND PROFILEWITH NO CODE CHANGES Se pubblicato in un Azure App Service, non è necessario eseguire modifiche al codice per avere il performance profiling, error reporting e la diagnostica di Azure Application Insights Gli stessi log sono disponibili anche su Visual Studio 2017 facendo "Add – Application Insights Telemetry" Questo possibile grazie all'implementazione di IHostingStartup  void Configure(IWebHostBuilder builder)
  • 13.
    COOKIE TEMPDATA TempData orautilizza di default i cookie per salvare le informazioni In ASP.NET Core 1.x di default utilizzava la sessione (si doveva abilitare) E' possibile utilizzare nuovamente la sessione nel caso si debba memorizzare parecchie informazioni
  • 14.
    RAZOR PAGES Abilitando MVCvengono abilitate anche le Razor Pages  Utilizzando services.AddMvc() Stesse caratteristiche e funzionalità dei View component Possono avere un model che estende PageModel  Metodo OnGetAsync  Metodo OnPostAsync Sviluppo più simile a MVVM (o a WebForm )
  • 15.
  • 16.
  • 17.
    AUTOMATIC PAGE ANDVIEW COMPILATION ON PUBLISH Le view e le Razor-page in fase di pubblicazione dell'applicazione vengono ora compilate di default  Riduzione di 2.X dell'output  Miglioramento del tempo di startup dell'applicazione  I file vengono compilati in dll, e non più come file .cshtml  La precompilazione può essere disabilitata
  • 18.
    MICROSOFT.ASPNETCORE.ALL Nelle applicazioni chehanno come target ASP.NET Core 2.0 è possibile referenziare il metapackage Microsoft.AspNetCore.All con tutti i vantaggi del .NET Core Runtime Store Permette di referenziare TUTTI i package di ASP.NET Core e di Entity Framework Core, ma senza dover fare il download dei singoli package I package sono installati direttamente con il .NET Core SDK (.NET Core Runtime Store) Questi assembly sono già "pre-JIT'ted" (pre-compilati) così da velocizzare il tempo di startup
  • 19.
  • 20.
    MIGRARE DA ASP.NET1.X Guida per la migrazione:  https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/ Attenzione se avete personalizzato i template (scaffolding), vanno aggiornati  https://forums.asp.net/p/2128119/6164188.aspx?Re+Migration+1+1+to+2+0+Scaffold+multiple+problems In alcuni casi, la precompilazione delle View può non funzionare  Risolto nella 2.0.1 https://github.com/dotnet/core-setup/issues/2981  Risolto nella 2.1.0 preview 1 https://github.com/aspnet/MvcPrecompilation/issues/102
  • 21.
    CONTROLLI TI TERZEPARTI Telerik https://www.telerik.com/aspnet-core-ui Devexpress https://www.devexpress.com/products/net/controls/asp/mvc-core.xml Syncfusion https://www.syncfusion.com/products/aspnetcore
  • 22.
  • 23.
    Andrea Dottor Email: andrea@dottor.net Www:www.dottor.net Twitter: @dottor