O slideshow foi denunciado.

ASP.NET Core - dove siamo arrivati

0

Compartilhar

Carregando em…3
×
1 de 37
1 de 37

Mais Conteúdo rRelacionado

Livros relacionados

Gratuito durante 30 dias do Scribd

Ver tudo

Audiolivros relacionados

Gratuito durante 30 dias do Scribd

Ver tudo

ASP.NET Core - dove siamo arrivati

  1. 1. saturday 2018 ASP.NET CORE DOVE SIAMO ARRIVATI Andrea Dottor @dottor
  2. 2. Millions of developers have used (and continue to use) ASP.NET 4.x to create web apps. ASP.NET Core is a redesign of ASP.NET 4.x, with architectural changes that result in a leaner, more modular framework. ASP.NET Core provides the following benefits:  A unified story for building web UI and web APIs.  Architected for testability.  Razor Pages makes coding page-focused scenarios easier and more productive.  Ability to develope and run on Windows, macOS, and Linux.  Open-source and community-focused.  Integration of modern, client-side frameworks and development workflows.  A cloud-ready, environment-based configuration system.  Built-in dependency injection.  A lightweight, high-performance, and modular HTTP request pipeline.  Ability to host on IIS, Nginx, Apache, Docker, or self-host in your own process.  Side-by-side app versioning when targeting .NET Core.  Tooling that simplifies modern web development. WHY USE ASP.NET CORE? https://docs.microsoft.com/en-us/aspnet/core/?view=aspnetcore-2.1
  3. 3. ASP.NET Core 2.x can target .NET Core or .NET Framework. ASP.NET Core apps targeting .NET Framework aren't cross-platform—they run on Windows only. Generally, ASP.NET Core 2.x is made up of .NET Standard libraries. Apps written with .NET Standard 2.0 run anywhere that .NET Standard 2.0 is supported. ASP.NET Core 2.x is supported on .NET Framework versions compatible with .NET Standard 2.0:  .NET Framework 4.7.1 and later is strongly recommended.  .NET Framework 4.6.1 and later. ASP.NET Core 3.0 and later will only run on .NET Core. ASP.NET CORE TARGETING .NET FRAMEWORK https://docs.microsoft.com/en-us/aspnet/core/?view=aspnetcore-2.1
  4. 4. Cross-platform. Gira su macOS, Linux, e Windows. Migliori performance Possibilità di avere applicazioni Side-by-side che utilizzano versioni diverse del Framework Nuove API Open source VANTAGGI DI .NET CORE RISPETTO AL .NET FRAMEWORK
  5. 5. CONCLUSIONI
  6. 6. Supporto "facilitato" a WCF  Ad oggi la configurazione va spostata nel codice Identity Server / Autenticazione OAuth  Ci si deve appoggiare a componenti di terze parti COSA MANCA
  7. 7. TEMPLATE DI PROGETTO
  8. 8. TEMPLATE DI PROGETTO
  9. 9. Razor Pages is the recommended way to build UI for web apps in ASP.NET Core
  10. 10. SECURE BY DEFAULT
  11. 11. Nuovo middleware per forzare un redirect da HTTP a HTTPS  app.UseHttpsRedirection(); Se l'app è dietro ad un proxy che gestisce in automatico il redirect verso HTTPS, questo middleware non è necessario IIS10 gestisce in modo automatico il redirect verso HTTPS  <hsts enabled="true" max-age="31536000" redirectHttpToHttps="true" /> In versioni precedenti ad IIS10 è possibile installare il modulo HttpRedirect HTTPS
  12. 12. Nuovo middleware per forzare un redirect da HTTP a HTTPS  app.UseHttpsRedirection(); Se l'app è dietro ad un proxy che gestisce in automatico il redirect verso HTTPS, questo middleware non è necessario IIS10 gestisce in modo automatico il redirect verso HTTPS  <hsts enabled="true" max-age="31536000" redirectHttpToHttps="true" /> In versioni precedenti ad IIS10 è possibile installare il modulo HttpRedirect HTTPS
  13. 13. OWAST (Open Web Application Security Project) lavora agli standard HSTS per aumentare la sicurezza delle applicazioni web HSTS si basa sullo scambio dell'header 'Strict-Transport-Security' che informa il browser di utilizzare sempre connessioni https verso l'applicativo/dominio/path  Strict-Transport-Security: max-age=31536000; includeSubDomains; Esiste un middleware per abilitare questa funzionalità  app.UseHsts(); Da non utilizzare in sviluppo  Di default il browser mantiene l'informazione per 30 giorni (parametrizzabile) HTTP STRICT TRANSPORT SECURITY PROTOCOL (HSTS) https://www.owasp.org/index.php/HTTP_Strict_Transport_Security_Cheat_Sheet
  14. 14. Non utilizzare RequireHttpsAttribute nei controller delle API Alcuni browser o applicazioni non gestiscono il redirect da HTTP a HTTPS  Chiudere la connessione e ritornare un 400 (Bad Request) Le API non dovrebbero essere in ascolto in HTTP ma solo in HTTPS REDIRECT HTTP VERSO HTTPS
  15. 15. GDPR
  16. 16. I progetti/template di default sono già predisposti per visualizzare la Cookie Privacy Policy.  Nel file startup.cs è possibile configurare il tutto.  Viene aggiunta una nuova partial contenente il testo da visualizzare nella barra  _CookieConsentPartial.cshtml  Pagina Pages/Privacy.cshtml con il testo della Privacy Policy Se l'utente non accetta il consenso, solo i cookie marcati come essenziali vengono inviati al client TempData funziona con i cookie, e se il tracking è disabilitato, questo non viene creato  Forzare in configurazione che il cookie del TempData è essenziale La sessione funziona solamente con tracking abilitato. GDPR - COOKIE POLICY
  17. 17. CREATE COOKIE ESSENTIAL
  18. 18. Un utente autenticato può ora cancellare il proprio account o scaricare un file contenente le proprie informazioni personali. E' ora presente un attributo utile a decorare le proprietà dell'utente che contengono dati personali  PersonalDataAttribute Il download produce un json con le sole proprietà marcate con l'attributo PersonalData  Eventuali altre informazioni vanno gestite manualmente GDPR - PERSONAL DATA
  19. 19. PERSONALDATAATTRIBUTE
  20. 20. ASP.NET IDENTITY
  21. 21. Con ASP.NET Core 2.1, ASP.NET Identity viene ora iniettata come Razor Class Library.  Il codice/view/pagine non sono presenti all'interno del progetto ma sono in un assembly separato.  Meno codice di default presente all'interno del progetto Viene data la possibilità di personalizzare le pagine esistenti utilizzando lo scaffolding, e quindi facendoci generare la pagina che vogliamo editare  Se una pagina è presente all'interno del progetto (nel path corretto), questa sostituisce quella di default. IDENTITY UI LIBRARY & SCAFFOLDING
  22. 22. Identity viene esposto come un'area dal nome "Identity"  Gli url alle varie pagine cambia ASP.NET IDENTITY AREA
  23. 23. IDENTITY UI LIBRARY & SCAFFOLDING
  24. 24. API
  25. 25. Attributo che viene valutato se abilitata la compatibilità con la versione 2.1  services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); Validazione automatica del model Se non rispetta la validazione, viene automaticamente ritornato uno status code 400 Bad Request al client Si evita di dover inserire sempre lo stesso codice in ogni action delle API Utilizzo degli RouteAttribute diventa una necessità "Actions are inaccessible via conventional routes defined in UseMvc or by UseMvcWithDefaultRoute in Startup.Configure." Inference rules per gli argomenti delle action Non è più obbligatorio specificare gil atributi FromBody, FromRoute, … per gli argomenti nel caso rispettino le convenzioni ANNOTATION API WITH APICONTROLLERATTRIBUTE
  26. 26. Attributo che viene valutato se abilitata la compatibilità con la versione 2.1  services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); Validazione automatica del model  Se non rispetta la validazione, viene automaticamente ritornato uno status code 400 Bad Request al client  Si evita di dover inserire sempre lo stesso codice in ogni action delle API Utilizzo degli RouteAttribute diventa una necessità  "Actions are inaccessible via conventional routes defined in UseMvc or by UseMvcWithDefaultRoute in Startup.Configure." Inference rules per gli argomenti delle action  Non è più obbligatorio specificare gil atributi FromBody, FromRoute, … per gli argomenti nel caso rispettino le convenzioni ANNOTATION API WITH APICONTROLLERATTRIBUTE
  27. 27. Se abilitata la compatibilità con la versione 2.1  services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); Validazione automatica del model  Se non rispetta la validazione, viene automaticamente ritornato uno status code 400 Bad Request al client  Si evita di dover inserire sempre lo stesso codice in ogni action delle API Utilizzo degli RouteAttribute diventa una necessità  "Actions are inaccessible via conventional routes defined in UseMvc or by UseMvcWithDefaultRoute in Startup.Configure." Inference rules per gli argomenti delle action  Non è più obbligatorio specificare gil atributi FromBody, FromRoute, … per gli argomenti nel caso rispettino le convenzioni APICONTROLLER
  28. 28. Se abilitata la compatibilità con la versione 2.1  services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); Validazione automatica del model  Se non rispetta la validazione, viene automaticamente ritornato uno status code 400 Bad Request al client  Si evita di dover inserire sempre lo stesso codice in ogni action delle API Utilizzo degli RouteAttribute diventa una necessità  "Actions are inaccessible via conventional routes defined in UseMvc or by UseMvcWithDefaultRoute in Startup.Configure." Inference rules per gli argomenti delle action  Non è più obbligatorio specificare gil atributi FromBody, FromRoute, … per gli argomenti nel caso rispettino le convenzioni 15/09/2018 28 APICONTROLLER [FromBody] is inferred for complex type parameters. [FromForm] is inferred for action parameters of type IFormFile and IFormFileCollection. [FromRoute] is inferred for any action parameter name matching a parameter in the route template. [FromQuery] is inferred for any other action parameters.
  29. 29. MICROSOFT.ASPNETCORE.APP
  30. 30. Il metapackage Microsoft.AspNetCore.All è considerato come deprecato, a favore di Microsoft.AspNetCore.App Microsoft.AspNetCore.App:  Rimosse librerie di terze-parti tranne Json.NET, Remotion.Linq e IX-Async.  Include tutti i packages di ASP.NET Core team  Include tutti I packages di Entity Framework Core team. We recommend migrating to the Microsoft.AspNetCore.App metapackage for 2.1 and later. To keep using the Microsoft.AspNetCore.All metapackage and ensure the latest patch version is deployed DEPRECATE MICROSOFT.ASPNETCORE.ALL
  31. 31. Sono stati rimossi anche packages Microsoft ma che non sono mantentui dai team di ASP.NET e Entity Framework:  Microsoft.Data.Sqlite  Microsoft.Data.Sqlite.Core  Microsoft.EntityFrameworkCore.Sqlite  Microsoft.EntityFrameworkCore.Sqlite.Core  Microsoft.Extensions.Caching.Redis  Microsoft.AspNetCore.DataProtection.AzureStorage  Microsoft.Extensions.Configuration.AzureKeyVault  Microsoft.AspNetCore.DataProtection.AzureKeyVault  Microsoft.AspNetCore.Identity.Service.AzureKeyVault  Microsoft.AspNetCore.AzureKeyVault.HostingStartup  Microsoft.AspNetCore.ApplicationInsights.HostingStartup MICROSOFT.ASPNETCORE.APP
  32. 32. Update the project file to use 2.1 versions  Change the target framework to .NET Core 2.1  Replace the package reference for Microsoft.AspNetCore.All with a package reference for Microsoft.AspNetCore.App  Remove references to <DotNetCliToolReference> elements for the following packages. These tools are bundled by default in the .NET Core CLI and don't need to be installed separately. ASP.NET Core 2.1 provides ASP.NET Core Identity as a Razor Class Library (RCL).  Identity 2.1 exposes endpoints with the Identity area MIGRATE FROM ASP.NET CORE 2.0 TO 2.1
  33. 33.  ASP.NET Core Web Project template now updated to Bootstrap 4 that gives a fresh look to the page. Most of extra elements are removed. Default UI also supports Bootstrap 4.  For SPA based templates now support Angular 6  Parameter Transformers to routing  Link Generation  Validation Performance Improvements  API Controller Conventions  HTTP/2 support is added.  IIS in-process hosting model is added for IIS.  Health checks framework is integrated now to monitor health of APIs and apps.  Endpoint routing is introduced and takes care of several routing problems.  ASP.NET Core SignalR Java client is added. ASP.NET CORE 2.2 ROADMAP https://blogs.msdn.microsoft.com/webdev/2018/08/22/asp-net-core-2-2-0-preview1-now-available/ https://www.youtube.com/watch?v=DDBmvOPfqzA
  34. 34. Some notable sub-components will be removed from the ASP.NET Core shared framework in 3.0  Json.NET (Newtonsoft.Json)  Entity Framework Core (Microsoft.EntityFrameworkCore.*) ASP.NET Core will only run on .NET Core starting from 3.0.  Microsoft.Extensions packages (such as logging, dependency injection, and config) will continue to support .NET Standard  Entity Framework Core will continue to support .NET Standard Delivering more value with focused 3rd party open-source integration  IdentityServer  Swashbuckle  NSwag  AutoRest […] ASP.NET CORE 3 ROADMAP https://blogs.msdn.microsoft.com/webdev/2018/10/29/a-first-look-at-changes-coming-in-asp-net-core-3-0/
  35. 35. MA NON FINISCE QUI
  36. 36. SignalR  Sessione di Emanuele Bartolesi Blazor  Sessione di Andrea Agnoletto Razor Pages  Sessione mia ☺ ALTRE NOVITÀ DI ASP.NET CORE:
  37. 37. 37 www.dottor.net andrea@dottor.net @dottor Andrea Dottor Microsoft MVP Developer Technologies CONTATTI

×