SlideShare una empresa de Scribd logo
1 de 32
.NET Core Saturday 2016 – 22.10.2016
Introduzione ad ASP.NET
Core
Andrea Dottor
Microsoft MVP ASP.NET
@dottor
.NET Core Saturday 2016 – 22.10.2016
Chi sono
Andrea Dottor
◇ Consulente e sviluppatore software
◇ Microsoft MVP ASP.NET
◇ presidente di XE – Development User Group
◇ email: andrea@dottor.net
◇ twitter: @dottor
.NET Core Saturday 2016 – 22.10.2016
Materiale
◇ Slide già disponibili su slideshare
■ http://www.slideshare.net/andreadottor
◇ Codice e slide a breve su
■ http://www.xedotnet.org/eventi/net-core-saturday/
.NET Core Saturday 2016 – 22.10.2016
Agenda
◇ Cos'è ASP.NET Core
◇ Perché ASP.NET Core
◇ Cambiamenti rispetto al passato
◇ Cosa c'è di nuovo
.NET Core Saturday 2016 – 22.10.2016
Cos'è ASP.NET Core
◇ E' l'ultima versione di ASP.NET
■ Chiamata in precedenza ASP.NET 5
◇ Non si tratta di una evoluzione ma di una completa riscrittura
◇ Può essere utilizzato "sopra" al .NET Framework 4.6 (completo)
permettendo il riutilizzo di librerie già in uso
◇ Può essere utilizzato "sopra" a .NET Core se vogliamo sfruttare le possibilità
del multipiattaforma
.NET Core Saturday 2016 – 22.10.2016
Perché ASP.NET Core?
◇ ASP.NET Core is no longer based on System.Web.dll
■ Le funzionalità sono state scomposte in packages che racchiudono (molto spesso) una
singola funzionalità
◇ New light-weight and modular HTTP request pipeline
■ Possibilità di referenziare solo le funzionalità che effettivamente verranno utilizzate
■ Possibilità di definire la pipeline
◇ Built on .NET Core, which supports true side-by-side app versioning
◇ bility to host on IIS or self-host in your own process
◇ Non si è più vincolati ad utilizzare Visual Studio come IDE di sviluppo
.NET Core Saturday 2016 – 22.10.2016
ASP.NET Core Releases
◇ 13 Settembre ASP.NET Core 1.0.1 (September 2016 Update)
◇ 27 Giugno ASP.NET Core 1.0.0
◇ 16 Maggio ASP.NET Core RC2
◇ 18 Novembre ASP.NET 5 RC1
◇ …
◇ Visibili su github:
■ https://github.com/aspnet/home/releases
.NET Core Saturday 2016 – 22.10.2016
Togliamo subito alcuni dubbi [1]
◇ Supporto a Visual Basic .NET?
■ Non c'è ancora il supporto a Visual Basic .NET, ma arriverà.
■ E' presente nella roadmap pubblica su github
◇ Progetti esistenti fatti con MVC 5, si possono convertire?
■ No, non esiste alcun convertitore
.NET Core Saturday 2016 – 22.10.2016
Togliamo subito alcuni dubbi [2]
◇ .NET Framework o .NET Core?
■ .NET Framework è più maturo come tecnologia e permette di riutilizzare gran parte del
codice scritto. Si è vincolati al solo SO Windows
■ .NET Core permette di utilizzare e referenziare le sole dll effettivamente utilizzate. Può
girare su Linux, Windows e Mac. Le app possono essere pubblicate su Nano Server
◇ Alcuni dati sulle performance (febbraio 2016):
■ ASP.NET 4.6: <50k req/sec
■ ASP.NET Core (CLR): 400k req/sec
■ ASP.NET Core (.NET Core, Linux): 900k req/sec
■ ASP.NET Core (.NET Core, Windows): >1.1m req/sec
■ https://vimeo.com/172009499
■ https://github.com/aspnet/benchmarks
.NET Core Saturday 2016 – 22.10.2016
Iniziamo a conoscere ASP.NET
Core
3….2….1….si inizia
.NET Core Saturday 2016 – 22.10.2016
Struttura del progetto
alcune differenze rispetto al passato
◇ Tutti i file statici vanno inseriti all'interno della cartella
wwwroot
◇ Il file di progetto attualmente è il file json project.json
■ A breve verrà sostituito con una versione aggiornata del file csproj
◇ La configurazione custom di default è in un file
appsettings.json
◇ Il file web.config è mantenuto solo configurazione del
webserver
.NET Core Saturday 2016 – 22.10.2016
Application Startup
◇ L'entrypoint dell'applicazione è dato dalla classe Startup
◇ Metodo Configure: permette di configurare dettagliatamente come
vogliamo sia composta la pipeline della nostra app
○ Definizione middleware da utilizzare
○ Definizione regole di routing
○ …
◇ Metodo ConfigureServices: permette di definire i servizi da utilizzare
■ Identity
■ MVC
■ Dependency Injection
■ …
.NET Core Saturday 2016 – 22.10.2016
Configurazione
◇ Non ci si basa più sul file web.config
◇ Possibilità di configurare l'applicativo da più tipologie di file di
configurazione
◇ Uso di chiave-valore
■ Possibilità di mappare delle sezioni su nostre classi custom
◇ Vengono forniti alcuni extension-method per semplificare l'accesso
■ es:
Configuration.GetConnectionString("DefaultConnection")
è equivalente a:
Configuration.GetSection("ConnectionStrings")["DefaultConnection"]
.NET Core Saturday 2016 – 22.10.2016
DEMO
Struttura progetto
.NET Core Saturday 2016 – 22.10.2016
Un unico Controller
◇ Niente più differenza tra Web API e MVC
◇ Ereditano da Microsoft.AspNet.Mvc.Controller (ma anche no)
◇ Sono Action tutti i metodi pubblici del controller.
■ Se ritorniamo un IActionResult abbiamo lo stesso comportamento di una action MVC
■ Se non ritorniamo un IActionResult, si tratta di un metodo delle WebAPI (quindi content
negotiation o ProducesAttribute)
◇ Usare NonActionAttribute per i metodi che non devono essere richiamabili
direttamente
.NET Core Saturday 2016 – 22.10.2016
POCO Controller (Plain Old CLR Object)
◇ E' possibile definire classi controller che non ereditino da Controller
■ Non serve implementare interfacce o estendere classi basi
◇ Il nome della classe DEVE terminare con "Controller"
◇ NOTE: E' bene farsi passare tramite DI: IUrlHelperFactory e
IActionContextAccessor
.NET Core Saturday 2016 – 22.10.2016
State migrando un progetto con WebAPI?
◇ Prestate attenzione agli oggetti ritornati in JSON in quanto il casing è
cambiato!
■ In ASP.NET Core la serializzazione in JOSN usa il camelCasing per il nomi delle proprietà
■ In ASP.NET MVC fino alla versione 5, l'oggetto ritornata usava lo stesso casing del nome
della proprietà
◇ Per mantenere il comportamento precedente:
services.AddMvc()
.AddJsonOptions(options => {
options.SerializerSettings.ContractResolver =
new Newtonsoft.Json.Serialization.DefaultContractResolver();
});
.NET Core Saturday 2016 – 22.10.2016
DEMO
Controller
.NET Core Saturday 2016 – 22.10.2016
Tag helper
◇ HTML helper utilizzati come tag
◇ Estende/arricchisce i tag HTML con attributi che vegono eseguiti server-side
◇ Più facile personalizzare l’HTML
◇ Più facile lavorare in un editor HTML
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="UserName" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="UserName" class="form-control" />
<span asp-validation-for="UserName" class="text-danger"></span>
</div>
</div>
.NET Core Saturday 2016 – 22.10.2016
Custom Tag Helper
◇ Authoring Tag Helpers
■ https://docs.asp.net/en/latest/mvc/views/tag-helpers/authoring.html
◇ Chart Controls using TagHelpers & morris.js
■ http://en.xn--mgbz4cf.com/post/chart-controls-using-taghelpers--morrisjs
■ https://github.com/hishamco/ChartControls
◇ Tag-helper-samples
■ https://github.com/dpaquette/TagHelperSamples
■ https://www.nuget.org/packages/TagHelperSamples.Bootstrap
.NET Core Saturday 2016 – 22.10.2016
View Components
◇ Simili alle PartialView
◇ Composti da un proprio file di code-behind e view
■ Una classe di “code-behind” simile ad un mini controller.
○ Eredita da ViewComponent e richiede di implementare il metodo Invoke
■ Una view che ne definisce la visualizzazione
◇ Possono venire inclusi in una Class Library, facilitandone quindi il riutilizzo
■ https://channel9.msdn.com/Series/aspnetmonsters/ASPNET-Monsters-Episode-52-
Loading-View-Components-from-a-Class-Library
@Component.Invoke("TagList")
.NET Core Saturday 2016 – 22.10.2016
DEMO
Tag Helper e View Component
.NET Core Saturday 2016 – 22.10.2016
Dependency injection
◇ DI implementato out of the box.
◇ Possibilità di utilizzo del Container preferito
(es: Autofac, Ninject, Unity, Windsor, …)
◇ Gestisce vari tipi di Lifestyle
■ Instance: Una nuova istanza viene creta ogni volta. Siamo noi a specificare come creare
l’istanza (parametri nel costruttore).
■ Transient: Una nuova istanza viene creta ogni volta
■ Singleton: Viene creta una singola istanza, e viene ritornata sempre quella
■ Scoped: Viene creta un’istanza per ogni richiesta.
.NET Core Saturday 2016 – 22.10.2016
Dependency injection into views
◇ Possibilità di iniettare una classe/servizio all’interno delle View per poterne
richiamare i metodi
Come fare:
◇ Dichiarare il servizio in fase di Startup
■ services.AddTransient<TodoList.Services.StatisticsService>();
◇ Nella view o nel file _ViewImports.cshtml utilizzare @inject
■ @inject TodoList.Services.StatisticsService Statistics
◇ Richiamare i metodi dalla view (supporto anche per async await)
■ @await Statistics.GetCount()
.NET Core Saturday 2016 – 22.10.2016
DEMO
Dependency Injection
.NET Core Saturday 2016 – 22.10.2016
Managing Application State - Session
◇ Richiede che venga installato il package Microsoft.AspNetCore.Session
◇ Essendo construita sopra a IDistributedCache richiende anche il package
Microsoft.Extensions.Caching.Memory
◇ Nel metodo ConfigureServices del file Startup, abilitarla richiamando:
services.AddDistributedMemoryCache();
services.AddSession(options => {
options.CookieName = ".DottorWeb.Session";
options.IdleTimeout = TimeSpan.FromSeconds(10);
});
◇ Nel metodo Configure del file Startup
app.UseSession();
.NET Core Saturday 2016 – 22.10.2016
Usate il TempData?
◇ Il TempData fa uso della session, e quindi la dovete attivare!
◇ In ASP.NE Core 1.1 verrà introdotto un "Cookie-based TempData provider"
.NET Core Saturday 2016 – 22.10.2016
Roadmap
◇ 1.1
■ URL Rewriting middleware
■ Response caching middleware
■ DI improvements for 3rd party containers
■ WebListener server (Windows only)
■ Middleware as MVC filters
■ ViewComponents as Tag Helpers
■ View precompilation
■ Cookie-based TempData provider
■ Improved Azure integration
◇ 1.2
■ WebSockets
■ SignalR
■ Razor Pages (Views without MVC controllers)
■ Web API security
.NET Core Saturday 2016 – 22.10.2016
Nuovi tool in VS "15"
◇ New Template
■ 1 file di progetto
■ 1 file .cs
◇ New csproj Format
.NET Core Saturday 2016 – 22.10.2016
Corsi gratuiti - https://www.asp.net/free-
courses
.NET Core Saturday 2016 – 22.10.2016
Domande?
.NET Core Saturday 2016 – 22.10.2016
Andrea Dottor
◇ Consulente e sviluppatore software
◇ Microsoft MVP ASP.NET
◇ presidente di XE – Development User Group
◇ email: andrea@dottor.net
◇ twitter: @dottor

Más contenido relacionado

La actualidad más candente

Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiBlazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiAndrea Dottor
 
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPCAndrea Dottor
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoAndrea Dottor
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiAndrea Dottor
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il MobilePietro Libro
 
ASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesAndrea Dottor
 
Customize ASP.NET Core scaffolding
Customize ASP.NET Core scaffoldingCustomize ASP.NET Core scaffolding
Customize ASP.NET Core scaffoldingAndrea Dottor
 
ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroAndrea Dottor
 
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webAndrea Dottor
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailDotNetMarche
 
Deploy & Run on Azure App Service
Deploy & Run on Azure App ServiceDeploy & Run on Azure App Service
Deploy & Run on Azure App ServiceAndrea Dottor
 
Angular e asp.net core: un framework sul framework
Angular e asp.net core: un framework sul frameworkAngular e asp.net core: un framework sul framework
Angular e asp.net core: un framework sul frameworkMichele Aponte
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Andrea Agnoletto
 
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automationAntonio Liccardi
 
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automationDotNetCampus
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaAndrea Dottor
 
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote ItalyMarco Parenzan
 
Creare API pubbliche, come evitare gli errori comuni
 Creare API pubbliche, come evitare gli errori comuni Creare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuniAndrea Dottor
 

La actualidad más candente (20)

Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiBlazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi reali
 
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPC
 
Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppo
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivati
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile
 
ASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesASP.NET Core - Razor Pages
ASP.NET Core - Razor Pages
 
Customize ASP.NET Core scaffolding
Customize ASP.NET Core scaffoldingCustomize ASP.NET Core scaffolding
Customize ASP.NET Core scaffolding
 
ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuro
 
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
 
Deploy & Run on Azure App Service
Deploy & Run on Azure App ServiceDeploy & Run on Azure App Service
Deploy & Run on Azure App Service
 
Azure dev ops meetup one
Azure dev ops meetup oneAzure dev ops meetup one
Azure dev ops meetup one
 
Angular e asp.net core: un framework sul framework
Angular e asp.net core: un framework sul frameworkAngular e asp.net core: un framework sul framework
Angular e asp.net core: un framework sul framework
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?
 
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automation
 
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automation
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
 
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
 
Creare API pubbliche, come evitare gli errori comuni
 Creare API pubbliche, come evitare gli errori comuni Creare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuni
 

Destacado

Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceAndrea Dottor
 
What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottor
 
Migliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsMigliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsAndrea Dottor
 
SCHNEIDER - STOCK - SAUDI ARABIA- AKBAR TRADINGI c60n circuit_breakers_schnei...
SCHNEIDER - STOCK - SAUDI ARABIA- AKBAR TRADINGI c60n circuit_breakers_schnei...SCHNEIDER - STOCK - SAUDI ARABIA- AKBAR TRADINGI c60n circuit_breakers_schnei...
SCHNEIDER - STOCK - SAUDI ARABIA- AKBAR TRADINGI c60n circuit_breakers_schnei...AKBAR TRADING
 
Cable splicing kit details
Cable splicing kit detailsCable splicing kit details
Cable splicing kit detailsAKBAR TRADING
 
TY523MX - THOMAS & BETTS - Cable Tie, Ty Rap® Self Lock, Nylon| AKBAR TRADING...
TY523MX - THOMAS & BETTS - Cable Tie, Ty Rap® Self Lock, Nylon| AKBAR TRADING...TY523MX - THOMAS & BETTS - Cable Tie, Ty Rap® Self Lock, Nylon| AKBAR TRADING...
TY523MX - THOMAS & BETTS - Cable Tie, Ty Rap® Self Lock, Nylon| AKBAR TRADING...AKBAR TRADING
 
L'evoluzione del web
L'evoluzione del webL'evoluzione del web
L'evoluzione del webAndrea Dottor
 

Destacado (11)

Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita felice
 
What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012
 
Migliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsMigliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.js
 
SCHNEIDER - STOCK - SAUDI ARABIA- AKBAR TRADINGI c60n circuit_breakers_schnei...
SCHNEIDER - STOCK - SAUDI ARABIA- AKBAR TRADINGI c60n circuit_breakers_schnei...SCHNEIDER - STOCK - SAUDI ARABIA- AKBAR TRADINGI c60n circuit_breakers_schnei...
SCHNEIDER - STOCK - SAUDI ARABIA- AKBAR TRADINGI c60n circuit_breakers_schnei...
 
Cable splicing kit details
Cable splicing kit detailsCable splicing kit details
Cable splicing kit details
 
TY523MX - THOMAS & BETTS - Cable Tie, Ty Rap® Self Lock, Nylon| AKBAR TRADING...
TY523MX - THOMAS & BETTS - Cable Tie, Ty Rap® Self Lock, Nylon| AKBAR TRADING...TY523MX - THOMAS & BETTS - Cable Tie, Ty Rap® Self Lock, Nylon| AKBAR TRADING...
TY523MX - THOMAS & BETTS - Cable Tie, Ty Rap® Self Lock, Nylon| AKBAR TRADING...
 
16. Digestion and Absorption
16. Digestion and Absorption16. Digestion and Absorption
16. Digestion and Absorption
 
muhammad imaaduddin
muhammad imaaduddinmuhammad imaaduddin
muhammad imaaduddin
 
kasus ajinomoto
kasus ajinomotokasus ajinomoto
kasus ajinomoto
 
ASP.NET Core
ASP.NET CoreASP.NET Core
ASP.NET Core
 
L'evoluzione del web
L'evoluzione del webL'evoluzione del web
L'evoluzione del web
 

Similar a Introduzione ad ASP.NET Core

Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 
Web app slots and WebAPI versioning
Web app slots and WebAPI versioningWeb app slots and WebAPI versioning
Web app slots and WebAPI versioningNicolò Carandini
 
Web app slots and webapi versioning
Web app slots and webapi versioningWeb app slots and webapi versioning
Web app slots and webapi versioningNicolò Carandini
 
Oltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale SetOltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale SetVito Flavio Lorusso
 
Creazione componenti con Vue js
Creazione componenti con Vue jsCreazione componenti con Vue js
Creazione componenti con Vue jsGianfranco Castro
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Fabrizio Bernabei
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineDavide Benvegnù
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012Crismer La Pignola
 
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1dotnetcode
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimizationAndrea Dottor
 
Introduzione ad angular 7/8
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8Valerio Radice
 
Asp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAsp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAndrea Balducci
 
Works with ASP.NET Core on Linux and Mac
Works with ASP.NET Core on Linux and MacWorks with ASP.NET Core on Linux and Mac
Works with ASP.NET Core on Linux and MacEmanuele Bartolesi
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angulardotnetcode
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC FrameworkDotNetMarche
 
ASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework BenchmarksASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework BenchmarksNicolò Carandini
 
Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoGiuneco S.r.l
 
ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?Giorgio Di Nardo
 

Similar a Introduzione ad ASP.NET Core (20)

Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 
ASP.NET Core essentials
ASP.NET Core essentialsASP.NET Core essentials
ASP.NET Core essentials
 
Web app slots and WebAPI versioning
Web app slots and WebAPI versioningWeb app slots and WebAPI versioning
Web app slots and WebAPI versioning
 
Web app slots and webapi versioning
Web app slots and webapi versioningWeb app slots and webapi versioning
Web app slots and webapi versioning
 
Oltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale SetOltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale Set
 
Creazione componenti con Vue js
Creazione componenti con Vue jsCreazione componenti con Vue js
Creazione componenti con Vue js
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio Online
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012
 
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Introduzione ad angular 7/8
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8
 
Asp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAsp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community Tour
 
Works with ASP.NET Core on Linux and Mac
Works with ASP.NET Core on Linux and MacWorks with ASP.NET Core on Linux and Mac
Works with ASP.NET Core on Linux and Mac
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
ASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework BenchmarksASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework Benchmarks
 
Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo Greco
 
ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?
 

Más de Andrea Dottor

Blazor ♥️ JavaScript
Blazor ♥️ JavaScriptBlazor ♥️ JavaScript
Blazor ♥️ JavaScriptAndrea Dottor
 
Blazor, lo sapevi che...
Blazor, lo sapevi che...Blazor, lo sapevi che...
Blazor, lo sapevi che...Andrea Dottor
 
Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check ...
Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check ...Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check ...
Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check ...Andrea Dottor
 
What's New in ASP.NET Core 3
What's New in ASP.NET Core 3What's New in ASP.NET Core 3
What's New in ASP.NET Core 3Andrea Dottor
 
Real case: migrate from Web Forms to ASP.NET Core gradually
Real case: migrate from Web Forms to ASP.NET Core graduallyReal case: migrate from Web Forms to ASP.NET Core gradually
Real case: migrate from Web Forms to ASP.NET Core graduallyAndrea Dottor
 
Dependency injection questa sconosciuta
Dependency injection questa sconosciutaDependency injection questa sconosciuta
Dependency injection questa sconosciutaAndrea Dottor
 
ASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheAndrea Dottor
 
Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5Andrea Dottor
 

Más de Andrea Dottor (8)

Blazor ♥️ JavaScript
Blazor ♥️ JavaScriptBlazor ♥️ JavaScript
Blazor ♥️ JavaScript
 
Blazor, lo sapevi che...
Blazor, lo sapevi che...Blazor, lo sapevi che...
Blazor, lo sapevi che...
 
Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check ...
Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check ...Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check ...
Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check ...
 
What's New in ASP.NET Core 3
What's New in ASP.NET Core 3What's New in ASP.NET Core 3
What's New in ASP.NET Core 3
 
Real case: migrate from Web Forms to ASP.NET Core gradually
Real case: migrate from Web Forms to ASP.NET Core graduallyReal case: migrate from Web Forms to ASP.NET Core gradually
Real case: migrate from Web Forms to ASP.NET Core gradually
 
Dependency injection questa sconosciuta
Dependency injection questa sconosciutaDependency injection questa sconosciuta
Dependency injection questa sconosciuta
 
ASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cache
 
Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5
 

Introduzione ad ASP.NET Core

  • 1. .NET Core Saturday 2016 – 22.10.2016 Introduzione ad ASP.NET Core Andrea Dottor Microsoft MVP ASP.NET @dottor
  • 2. .NET Core Saturday 2016 – 22.10.2016 Chi sono Andrea Dottor ◇ Consulente e sviluppatore software ◇ Microsoft MVP ASP.NET ◇ presidente di XE – Development User Group ◇ email: andrea@dottor.net ◇ twitter: @dottor
  • 3. .NET Core Saturday 2016 – 22.10.2016 Materiale ◇ Slide già disponibili su slideshare ■ http://www.slideshare.net/andreadottor ◇ Codice e slide a breve su ■ http://www.xedotnet.org/eventi/net-core-saturday/
  • 4. .NET Core Saturday 2016 – 22.10.2016 Agenda ◇ Cos'è ASP.NET Core ◇ Perché ASP.NET Core ◇ Cambiamenti rispetto al passato ◇ Cosa c'è di nuovo
  • 5. .NET Core Saturday 2016 – 22.10.2016 Cos'è ASP.NET Core ◇ E' l'ultima versione di ASP.NET ■ Chiamata in precedenza ASP.NET 5 ◇ Non si tratta di una evoluzione ma di una completa riscrittura ◇ Può essere utilizzato "sopra" al .NET Framework 4.6 (completo) permettendo il riutilizzo di librerie già in uso ◇ Può essere utilizzato "sopra" a .NET Core se vogliamo sfruttare le possibilità del multipiattaforma
  • 6. .NET Core Saturday 2016 – 22.10.2016 Perché ASP.NET Core? ◇ ASP.NET Core is no longer based on System.Web.dll ■ Le funzionalità sono state scomposte in packages che racchiudono (molto spesso) una singola funzionalità ◇ New light-weight and modular HTTP request pipeline ■ Possibilità di referenziare solo le funzionalità che effettivamente verranno utilizzate ■ Possibilità di definire la pipeline ◇ Built on .NET Core, which supports true side-by-side app versioning ◇ bility to host on IIS or self-host in your own process ◇ Non si è più vincolati ad utilizzare Visual Studio come IDE di sviluppo
  • 7. .NET Core Saturday 2016 – 22.10.2016 ASP.NET Core Releases ◇ 13 Settembre ASP.NET Core 1.0.1 (September 2016 Update) ◇ 27 Giugno ASP.NET Core 1.0.0 ◇ 16 Maggio ASP.NET Core RC2 ◇ 18 Novembre ASP.NET 5 RC1 ◇ … ◇ Visibili su github: ■ https://github.com/aspnet/home/releases
  • 8. .NET Core Saturday 2016 – 22.10.2016 Togliamo subito alcuni dubbi [1] ◇ Supporto a Visual Basic .NET? ■ Non c'è ancora il supporto a Visual Basic .NET, ma arriverà. ■ E' presente nella roadmap pubblica su github ◇ Progetti esistenti fatti con MVC 5, si possono convertire? ■ No, non esiste alcun convertitore
  • 9. .NET Core Saturday 2016 – 22.10.2016 Togliamo subito alcuni dubbi [2] ◇ .NET Framework o .NET Core? ■ .NET Framework è più maturo come tecnologia e permette di riutilizzare gran parte del codice scritto. Si è vincolati al solo SO Windows ■ .NET Core permette di utilizzare e referenziare le sole dll effettivamente utilizzate. Può girare su Linux, Windows e Mac. Le app possono essere pubblicate su Nano Server ◇ Alcuni dati sulle performance (febbraio 2016): ■ ASP.NET 4.6: <50k req/sec ■ ASP.NET Core (CLR): 400k req/sec ■ ASP.NET Core (.NET Core, Linux): 900k req/sec ■ ASP.NET Core (.NET Core, Windows): >1.1m req/sec ■ https://vimeo.com/172009499 ■ https://github.com/aspnet/benchmarks
  • 10. .NET Core Saturday 2016 – 22.10.2016 Iniziamo a conoscere ASP.NET Core 3….2….1….si inizia
  • 11. .NET Core Saturday 2016 – 22.10.2016 Struttura del progetto alcune differenze rispetto al passato ◇ Tutti i file statici vanno inseriti all'interno della cartella wwwroot ◇ Il file di progetto attualmente è il file json project.json ■ A breve verrà sostituito con una versione aggiornata del file csproj ◇ La configurazione custom di default è in un file appsettings.json ◇ Il file web.config è mantenuto solo configurazione del webserver
  • 12. .NET Core Saturday 2016 – 22.10.2016 Application Startup ◇ L'entrypoint dell'applicazione è dato dalla classe Startup ◇ Metodo Configure: permette di configurare dettagliatamente come vogliamo sia composta la pipeline della nostra app ○ Definizione middleware da utilizzare ○ Definizione regole di routing ○ … ◇ Metodo ConfigureServices: permette di definire i servizi da utilizzare ■ Identity ■ MVC ■ Dependency Injection ■ …
  • 13. .NET Core Saturday 2016 – 22.10.2016 Configurazione ◇ Non ci si basa più sul file web.config ◇ Possibilità di configurare l'applicativo da più tipologie di file di configurazione ◇ Uso di chiave-valore ■ Possibilità di mappare delle sezioni su nostre classi custom ◇ Vengono forniti alcuni extension-method per semplificare l'accesso ■ es: Configuration.GetConnectionString("DefaultConnection") è equivalente a: Configuration.GetSection("ConnectionStrings")["DefaultConnection"]
  • 14. .NET Core Saturday 2016 – 22.10.2016 DEMO Struttura progetto
  • 15. .NET Core Saturday 2016 – 22.10.2016 Un unico Controller ◇ Niente più differenza tra Web API e MVC ◇ Ereditano da Microsoft.AspNet.Mvc.Controller (ma anche no) ◇ Sono Action tutti i metodi pubblici del controller. ■ Se ritorniamo un IActionResult abbiamo lo stesso comportamento di una action MVC ■ Se non ritorniamo un IActionResult, si tratta di un metodo delle WebAPI (quindi content negotiation o ProducesAttribute) ◇ Usare NonActionAttribute per i metodi che non devono essere richiamabili direttamente
  • 16. .NET Core Saturday 2016 – 22.10.2016 POCO Controller (Plain Old CLR Object) ◇ E' possibile definire classi controller che non ereditino da Controller ■ Non serve implementare interfacce o estendere classi basi ◇ Il nome della classe DEVE terminare con "Controller" ◇ NOTE: E' bene farsi passare tramite DI: IUrlHelperFactory e IActionContextAccessor
  • 17. .NET Core Saturday 2016 – 22.10.2016 State migrando un progetto con WebAPI? ◇ Prestate attenzione agli oggetti ritornati in JSON in quanto il casing è cambiato! ■ In ASP.NET Core la serializzazione in JOSN usa il camelCasing per il nomi delle proprietà ■ In ASP.NET MVC fino alla versione 5, l'oggetto ritornata usava lo stesso casing del nome della proprietà ◇ Per mantenere il comportamento precedente: services.AddMvc() .AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver(); });
  • 18. .NET Core Saturday 2016 – 22.10.2016 DEMO Controller
  • 19. .NET Core Saturday 2016 – 22.10.2016 Tag helper ◇ HTML helper utilizzati come tag ◇ Estende/arricchisce i tag HTML con attributi che vegono eseguiti server-side ◇ Più facile personalizzare l’HTML ◇ Più facile lavorare in un editor HTML <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="UserName" class="col-md-2 control-label"></label> <div class="col-md-10"> <input asp-for="UserName" class="form-control" /> <span asp-validation-for="UserName" class="text-danger"></span> </div> </div>
  • 20. .NET Core Saturday 2016 – 22.10.2016 Custom Tag Helper ◇ Authoring Tag Helpers ■ https://docs.asp.net/en/latest/mvc/views/tag-helpers/authoring.html ◇ Chart Controls using TagHelpers & morris.js ■ http://en.xn--mgbz4cf.com/post/chart-controls-using-taghelpers--morrisjs ■ https://github.com/hishamco/ChartControls ◇ Tag-helper-samples ■ https://github.com/dpaquette/TagHelperSamples ■ https://www.nuget.org/packages/TagHelperSamples.Bootstrap
  • 21. .NET Core Saturday 2016 – 22.10.2016 View Components ◇ Simili alle PartialView ◇ Composti da un proprio file di code-behind e view ■ Una classe di “code-behind” simile ad un mini controller. ○ Eredita da ViewComponent e richiede di implementare il metodo Invoke ■ Una view che ne definisce la visualizzazione ◇ Possono venire inclusi in una Class Library, facilitandone quindi il riutilizzo ■ https://channel9.msdn.com/Series/aspnetmonsters/ASPNET-Monsters-Episode-52- Loading-View-Components-from-a-Class-Library @Component.Invoke("TagList")
  • 22. .NET Core Saturday 2016 – 22.10.2016 DEMO Tag Helper e View Component
  • 23. .NET Core Saturday 2016 – 22.10.2016 Dependency injection ◇ DI implementato out of the box. ◇ Possibilità di utilizzo del Container preferito (es: Autofac, Ninject, Unity, Windsor, …) ◇ Gestisce vari tipi di Lifestyle ■ Instance: Una nuova istanza viene creta ogni volta. Siamo noi a specificare come creare l’istanza (parametri nel costruttore). ■ Transient: Una nuova istanza viene creta ogni volta ■ Singleton: Viene creta una singola istanza, e viene ritornata sempre quella ■ Scoped: Viene creta un’istanza per ogni richiesta.
  • 24. .NET Core Saturday 2016 – 22.10.2016 Dependency injection into views ◇ Possibilità di iniettare una classe/servizio all’interno delle View per poterne richiamare i metodi Come fare: ◇ Dichiarare il servizio in fase di Startup ■ services.AddTransient<TodoList.Services.StatisticsService>(); ◇ Nella view o nel file _ViewImports.cshtml utilizzare @inject ■ @inject TodoList.Services.StatisticsService Statistics ◇ Richiamare i metodi dalla view (supporto anche per async await) ■ @await Statistics.GetCount()
  • 25. .NET Core Saturday 2016 – 22.10.2016 DEMO Dependency Injection
  • 26. .NET Core Saturday 2016 – 22.10.2016 Managing Application State - Session ◇ Richiede che venga installato il package Microsoft.AspNetCore.Session ◇ Essendo construita sopra a IDistributedCache richiende anche il package Microsoft.Extensions.Caching.Memory ◇ Nel metodo ConfigureServices del file Startup, abilitarla richiamando: services.AddDistributedMemoryCache(); services.AddSession(options => { options.CookieName = ".DottorWeb.Session"; options.IdleTimeout = TimeSpan.FromSeconds(10); }); ◇ Nel metodo Configure del file Startup app.UseSession();
  • 27. .NET Core Saturday 2016 – 22.10.2016 Usate il TempData? ◇ Il TempData fa uso della session, e quindi la dovete attivare! ◇ In ASP.NE Core 1.1 verrà introdotto un "Cookie-based TempData provider"
  • 28. .NET Core Saturday 2016 – 22.10.2016 Roadmap ◇ 1.1 ■ URL Rewriting middleware ■ Response caching middleware ■ DI improvements for 3rd party containers ■ WebListener server (Windows only) ■ Middleware as MVC filters ■ ViewComponents as Tag Helpers ■ View precompilation ■ Cookie-based TempData provider ■ Improved Azure integration ◇ 1.2 ■ WebSockets ■ SignalR ■ Razor Pages (Views without MVC controllers) ■ Web API security
  • 29. .NET Core Saturday 2016 – 22.10.2016 Nuovi tool in VS "15" ◇ New Template ■ 1 file di progetto ■ 1 file .cs ◇ New csproj Format
  • 30. .NET Core Saturday 2016 – 22.10.2016 Corsi gratuiti - https://www.asp.net/free- courses
  • 31. .NET Core Saturday 2016 – 22.10.2016 Domande?
  • 32. .NET Core Saturday 2016 – 22.10.2016 Andrea Dottor ◇ Consulente e sviluppatore software ◇ Microsoft MVP ASP.NET ◇ presidente di XE – Development User Group ◇ email: andrea@dottor.net ◇ twitter: @dottor