SlideShare uma empresa Scribd logo
1 de 31
Andrea Dottor
Consulente e sviluppatore
Microsoft MVP ASP.NET/IIS
ASP.NET MVC 6
uno sguardo al futuro
 ASP.NET Web Form
 ASP.NET MVC 5
 .NET Framework 4.5.2
Quale scegliere per un nuovo progetto?
Come evolvere un progetto esistente?
Oggi
Il nostro futuro?
.NET 2015
Open source
 Familiar .NET Framework APIs
 Ecosystem of existing packages
 Installed machine-wide
 Updated with the OS
ASP.NET 5 full (.NET Framework 4.6)
 .NET Core CLR runtime
 Optimized for server/cloud
 Small footprint
 Class libraries in NuGet packages
 Side-by-side & portable
 Cross-platform: Windows, Linux, Mac
ASP.NET 5 core
 Unified programming model
 Unione di MVC, Web API e Web Pages in un’unica
tecnologia
 Eliminazione codice duplicato dal framework
 New HTTP request pipeline
 Cloud Ready configuration
 Depencency Injection
 Fast HTTP performance
 …
 No Visual Basic.NET (almeno per ora)
ASP.NET MVC 6
 File di progetto in JSON
 project.json
 Configurazione in JSON
 config.json
 Packages esterni in JSON
 package.json
 Cartella wwwroot contiene i file statici
del progetto
 Integrazione con i più usati Web
Development Tools (Bower, Grunt and
Gulp)
Nuova struttura di progetto
 Modulare
 Siamo noi a decidere cosa aggiungere
 Eliminata dipendenza da System.Web
 Ogni richiesta con System.Web occupava circa 30K,
mentre ora 2K
 System.Web pesa
 Darivata dall’esperienza del progetto
Katana project
 Supporta OWIN
New HTTP request pipeline
 Non è più necessario “forzare” a mano
una compilazione
 Ad ogni salvataggio/modifica del codice,
l’applicativo viene subito ricompilato
 Facilita l’uso di altri editor per lo sviluppo di
applicazioni ASP.NET
 Offre un’esperienza simile a quella offerta dall’uso di
linguaggi interpretati
Roslyn compiler
#if ASPNET50
return heroes.FirstOrDefault(h => h.Id == id);
#elif ASPNETCORE50
foreach (var item in heroes)
{
if (item.Id == id)
return item;
}
return null;
#endif
Compilazione condizionale
demo
 Addio al “vecchio” web.config
 File di configurazione semplificato
 Solo la configurazione realmente utile
all’applicazione
 Cross-platform
 Integrato con la configurazione di Azure
Cloud-ready configuration
Configurazione. Il formato lo decidiamo noi
config.json
{
"ConnectionStrings": {
"JsonConnectionString": "json connection string"
}
}
config.xml
<config>
<ConnectionStrings>
<XmlConnectionString>xml connection string</XmlConnectionString>
</ConnectionStrings>
</config>
config.ini
[ConnectionStrings]
IniConnectionString = ini connection string
 Estende/arricchisce i tag HTML con
attributi che vegono eseguiti server-side
 In alcuni casi facilitano la scrittura del
markup
Tag helpers
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.UserName, "", new { @class = "text-danger" })
</div>
</div>
<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>
demo
 DI implementato out of the box.
 BYOC (Bring Your Own Container)
 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.
Dependency Injection
 Tramite injection nel costruttore
 Viene in automatico risolto il tipo richiesto
 Tramite proprietà decorata con
l’attributo [Activate]
 Utile quando non possiamo modificare il costruttore
Dependency Injection
 Le funzionalità che erano presenti nella
dll System.Web ora sono state
implementate come packages nuget
separati
 Esempio la Cache
 https://github.com/aspnet/Caching
 Esempio la Session
 https://github.com/aspnet/Session
Cache, Session
demo
 Simili alle PartialView
 Ma molto meglio.
 Composti da
 Una classe di “code-behind” simile ad un mini
controller
 La classe eredita da ViewComponent e si deve
implementare il metodo Invoke
 Una view che ne definisce la visualizzazione
 Possibilità di esserre invocate in async
View components
@Component.Invoke("TagList")
 Possibilità di iniettare una classe
all’interno delle View per poterne
richiamare i metodi
 Dichiarare il servizio in fase di Startup
 services.AddTransient<TodoList.Services.StatisticsService>();
 Dichiarare la classe
 @inject TodoList.Services.StatisticsService Statistics
 Usarla richiamandone i metodi
 @await Statistics.GetCount()
Injecting a service
 Con codice sorgente
 Viene copiato il codice sorgente dell’applicazione
 Con precompilazione
 Il codice dell’applicazione viene compilato e risulta
nella cartella di output come packages
Pubblicazione
demo
 Applicazioni ASP.NET WebForm
 potranno girare solamente nel .NET Framework 4.6
 non potranno essere portate ad ASP.NET 5
 non potranno girare con il .NET Core.
E le applicazioni esistenti?
 Applicazione esistenti ASP.NET MVC
 possono essere eseguite senza modifiche sul .NET
Framework 4.6.
 migrare ad ASP.NET 5/MVC 6 comporta la riscrittura
 La difficolta dipende da quanto l’applicazione è legata a
System.web e dalle API utilizzate
E le applicazioni esistenti?
 API Portability Analyzer
 Tool che analizza la API utilizzate dall’applicazione, e
permette di fare una prima analisi
 http://www.microsoft.com/en-us/download/details.aspx?id=42678
 E’ disponibile un’estensione per Visual Studio che
genera il report
 https://visualstudiogallery.msdn.microsoft.com/1177943e-cfb7-4822-a8a6-e56c7905292b
E le applicazioni esistenti?
 http://weblogs.asp.net/scottgu/introducing-asp-net-5
 http://www.asp.net/vnext/overview/aspnet-vnext/aspnet-5-overview
 http://blogs.msdn.com/b/dotnet/archive/2014/12/04/introducing-net-
core.aspx
 http://blogs.msdn.com/b/cesardelatorre/archive/2014/11/18/what-is-net-
core-5-and-asp-net-5-within-net-2015-preview.aspx
 http://blogs.msdn.com/b/bethmassi/archive/2015/02/25/understanding-
net-2015.aspx
 http://blogs.msdn.com/b/webdev/archive/2014/06/17/dependency-
injection-in-asp-net-vnext.aspx
 http://blogs.msdn.com/b/webdev/archive/2015/02/23/aspnet-5-
updates-for-feb-2015.aspx
 http://forums.asp.net/1255.aspx/1?ASP+NET+5+Preview+
 …
Links
feedback
10
• Materiale:
– http://blog.dottor.net/files/xedotnet/20150313_Dottor.
MVC6_code.zip
– http://blog.dottor.net/files/xedotnet/20150313_Dottor.
MVC6_slide.zip
Email: andrea@dottor.net
Website: http://www.dottor.net
Blog: http://blog.dottor.net
Twitter: http://twitter.com/dottor
Contatti

Mais conteúdo relacionado

Mais procurados

ASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesAndrea Dottor
 
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
 
Dal RenderFragment ai Generics, tips for Blazor developers
Dal RenderFragment ai Generics, tips for Blazor developersDal RenderFragment ai Generics, tips for Blazor developers
Dal RenderFragment ai Generics, tips for Blazor developersAndrea Dottor
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
 
Dependency injection questa sconosciuta
Dependency injection questa sconosciutaDependency injection questa sconosciuta
Dependency injection questa sconosciutaAndrea Dottor
 
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPCAndrea Dottor
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-maxDotNetCampus
 
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...Codemotion
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuerySandro Marcon
 
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 automationDotNetCampus
 
Training Signal Webtrends
Training Signal WebtrendsTraining Signal Webtrends
Training Signal WebtrendsStefano Iaboni
 
ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%DomusDotNet
 
Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0Andrea Dottor
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazorNicolò Carandini
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP WayLuca Milan
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campusDotNetCampus
 
Blazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web FormBlazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web FormAndrea Dottor
 

Mais procurados (20)

ASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesASP.NET Core - Razor Pages
ASP.NET Core - Razor Pages
 
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
 
Dal RenderFragment ai Generics, tips for Blazor developers
Dal RenderFragment ai Generics, tips for Blazor developersDal RenderFragment ai Generics, tips for Blazor developers
Dal RenderFragment ai Generics, tips for Blazor developers
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
 
jQuery
jQueryjQuery
jQuery
 
Dependency injection questa sconosciuta
Dependency injection questa sconosciutaDependency injection questa sconosciuta
Dependency injection questa sconosciuta
 
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPC
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-max
 
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuery
 
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
 
Training Signal Webtrends
Training Signal WebtrendsTraining Signal Webtrends
Training Signal Webtrends
 
Wcf data services
Wcf data servicesWcf data services
Wcf data services
 
ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%
 
Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP Way
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Blazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web FormBlazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web Form
 

Destaque

ASP .NET Core hands-on
ASP .NET Core hands-onASP .NET Core hands-on
ASP .NET Core hands-onugidotnet
 
Codice di qualità con VS2010 (TDD)
Codice di qualità con VS2010 (TDD)Codice di qualità con VS2010 (TDD)
Codice di qualità con VS2010 (TDD)XeDotNet
 
Silverlight 4
Silverlight 4Silverlight 4
Silverlight 4XeDotNet
 
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1codeblock
 
Typescript overview
Typescript overviewTypescript overview
Typescript overviewcodeblock
 
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
 
Getting started with MVC 5 and Visual Studio 2013
Getting started with MVC 5 and Visual Studio 2013Getting started with MVC 5 and Visual Studio 2013
Getting started with MVC 5 and Visual Studio 2013Thomas Robbins
 

Destaque (11)

ASP.NET Core
ASP.NET CoreASP.NET Core
ASP.NET Core
 
ASP .NET Core hands-on
ASP .NET Core hands-onASP .NET Core hands-on
ASP .NET Core hands-on
 
Codice di qualità con VS2010 (TDD)
Codice di qualità con VS2010 (TDD)Codice di qualità con VS2010 (TDD)
Codice di qualità con VS2010 (TDD)
 
Silverlight 4
Silverlight 4Silverlight 4
Silverlight 4
 
Aprendiendo de la comunidad
Aprendiendo de la comunidadAprendiendo de la comunidad
Aprendiendo de la comunidad
 
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
 
Typescript overview
Typescript overviewTypescript overview
Typescript overview
 
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
 
Intro to asp.net mvc 4 with visual studio
Intro to asp.net mvc 4 with visual studioIntro to asp.net mvc 4 with visual studio
Intro to asp.net mvc 4 with visual studio
 
Educación pueblos indígenas
Educación pueblos indígenasEducación pueblos indígenas
Educación pueblos indígenas
 
Getting started with MVC 5 and Visual Studio 2013
Getting started with MVC 5 and Visual Studio 2013Getting started with MVC 5 and Visual Studio 2013
Getting started with MVC 5 and Visual Studio 2013
 

Semelhante a ASP.NET MVC 6 - uno sguardo al futuro

Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Fabrizio Bernabei
 
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
 
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
 
Creazione componenti con Vue js
Creazione componenti con Vue jsCreazione componenti con Vue js
Creazione componenti con Vue jsGianfranco Castro
 
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
 
Customize ASP.NET Core scaffolding
Customize ASP.NET Core scaffoldingCustomize ASP.NET Core scaffolding
Customize ASP.NET Core scaffoldingAndrea Dottor
 
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
 
Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Massimo Bonanni
 
Introduzione ad angular 7/8
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8Valerio Radice
 
What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)Luca Milan
 
Introduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreIntroduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreAndrea Dottor
 
Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Gian Maria Ricci
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS BuildGian Maria Ricci
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationAlessandro Alpi
 
Asp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftAsp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftStefano Benedetti
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the WebClaudio Gandelli
 

Semelhante a ASP.NET MVC 6 - uno sguardo al futuro (20)

Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
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 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010
 
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
 
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
 
Creazione componenti con Vue js
Creazione componenti con Vue jsCreazione componenti con Vue js
Creazione componenti con Vue js
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012
 
ASP.NET Core essentials
ASP.NET Core essentialsASP.NET Core essentials
ASP.NET Core essentials
 
Customize ASP.NET Core scaffolding
Customize ASP.NET Core scaffoldingCustomize ASP.NET Core scaffolding
Customize ASP.NET Core scaffolding
 
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?
 
Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!
 
Introduzione ad angular 7/8
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8
 
What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)
 
Introduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreIntroduzione ad ASP.NET Core
Introduzione ad ASP.NET Core
 
Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS Build
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous Integration
 
Asp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftAsp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo Microsoft
 
Tfs Basic - Quick Intro
Tfs Basic - Quick IntroTfs Basic - Quick Intro
Tfs Basic - Quick Intro
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the Web
 

Mais 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
 
ASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheAndrea Dottor
 
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
 
Deploy & Run on Azure App Service
Deploy & Run on Azure App ServiceDeploy & Run on Azure App Service
Deploy & Run on Azure App ServiceAndrea Dottor
 
L'evoluzione del web
L'evoluzione del webL'evoluzione del web
L'evoluzione del webAndrea Dottor
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web AppsAndrea Dottor
 
Creare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuniCreare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuniAndrea 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
 
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
 

Mais de Andrea Dottor (13)

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
 
ASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cache
 
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
 
Deploy & Run on Azure App Service
Deploy & Run on Azure App ServiceDeploy & Run on Azure App Service
Deploy & Run on Azure App Service
 
L'evoluzione del web
L'evoluzione del webL'evoluzione del web
L'evoluzione del web
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
Creare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuniCreare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuni
 
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
 
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
 

ASP.NET MVC 6 - uno sguardo al futuro

  • 1. Andrea Dottor Consulente e sviluppatore Microsoft MVP ASP.NET/IIS ASP.NET MVC 6 uno sguardo al futuro
  • 2.
  • 3.  ASP.NET Web Form  ASP.NET MVC 5  .NET Framework 4.5.2 Quale scegliere per un nuovo progetto? Come evolvere un progetto esistente? Oggi
  • 7.  Familiar .NET Framework APIs  Ecosystem of existing packages  Installed machine-wide  Updated with the OS ASP.NET 5 full (.NET Framework 4.6)
  • 8.  .NET Core CLR runtime  Optimized for server/cloud  Small footprint  Class libraries in NuGet packages  Side-by-side & portable  Cross-platform: Windows, Linux, Mac ASP.NET 5 core
  • 9.  Unified programming model  Unione di MVC, Web API e Web Pages in un’unica tecnologia  Eliminazione codice duplicato dal framework  New HTTP request pipeline  Cloud Ready configuration  Depencency Injection  Fast HTTP performance  …  No Visual Basic.NET (almeno per ora) ASP.NET MVC 6
  • 10.  File di progetto in JSON  project.json  Configurazione in JSON  config.json  Packages esterni in JSON  package.json  Cartella wwwroot contiene i file statici del progetto  Integrazione con i più usati Web Development Tools (Bower, Grunt and Gulp) Nuova struttura di progetto
  • 11.  Modulare  Siamo noi a decidere cosa aggiungere  Eliminata dipendenza da System.Web  Ogni richiesta con System.Web occupava circa 30K, mentre ora 2K  System.Web pesa  Darivata dall’esperienza del progetto Katana project  Supporta OWIN New HTTP request pipeline
  • 12.  Non è più necessario “forzare” a mano una compilazione  Ad ogni salvataggio/modifica del codice, l’applicativo viene subito ricompilato  Facilita l’uso di altri editor per lo sviluppo di applicazioni ASP.NET  Offre un’esperienza simile a quella offerta dall’uso di linguaggi interpretati Roslyn compiler
  • 13. #if ASPNET50 return heroes.FirstOrDefault(h => h.Id == id); #elif ASPNETCORE50 foreach (var item in heroes) { if (item.Id == id) return item; } return null; #endif Compilazione condizionale
  • 14. demo
  • 15.  Addio al “vecchio” web.config  File di configurazione semplificato  Solo la configurazione realmente utile all’applicazione  Cross-platform  Integrato con la configurazione di Azure Cloud-ready configuration
  • 16. Configurazione. Il formato lo decidiamo noi config.json { "ConnectionStrings": { "JsonConnectionString": "json connection string" } } config.xml <config> <ConnectionStrings> <XmlConnectionString>xml connection string</XmlConnectionString> </ConnectionStrings> </config> config.ini [ConnectionStrings] IniConnectionString = ini connection string
  • 17.  Estende/arricchisce i tag HTML con attributi che vegono eseguiti server-side  In alcuni casi facilitano la scrittura del markup Tag helpers @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" }) <div class="col-md-10"> @Html.TextBoxFor(m => m.UserName, new { @class = "form-control" }) @Html.ValidationMessageFor(m => m.UserName, "", new { @class = "text-danger" }) </div> </div> <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>
  • 18. demo
  • 19.  DI implementato out of the box.  BYOC (Bring Your Own Container)  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. Dependency Injection
  • 20.  Tramite injection nel costruttore  Viene in automatico risolto il tipo richiesto  Tramite proprietà decorata con l’attributo [Activate]  Utile quando non possiamo modificare il costruttore Dependency Injection
  • 21.  Le funzionalità che erano presenti nella dll System.Web ora sono state implementate come packages nuget separati  Esempio la Cache  https://github.com/aspnet/Caching  Esempio la Session  https://github.com/aspnet/Session Cache, Session
  • 22. demo
  • 23.  Simili alle PartialView  Ma molto meglio.  Composti da  Una classe di “code-behind” simile ad un mini controller  La classe eredita da ViewComponent e si deve implementare il metodo Invoke  Una view che ne definisce la visualizzazione  Possibilità di esserre invocate in async View components @Component.Invoke("TagList")
  • 24.  Possibilità di iniettare una classe all’interno delle View per poterne richiamare i metodi  Dichiarare il servizio in fase di Startup  services.AddTransient<TodoList.Services.StatisticsService>();  Dichiarare la classe  @inject TodoList.Services.StatisticsService Statistics  Usarla richiamandone i metodi  @await Statistics.GetCount() Injecting a service
  • 25.  Con codice sorgente  Viene copiato il codice sorgente dell’applicazione  Con precompilazione  Il codice dell’applicazione viene compilato e risulta nella cartella di output come packages Pubblicazione
  • 26. demo
  • 27.  Applicazioni ASP.NET WebForm  potranno girare solamente nel .NET Framework 4.6  non potranno essere portate ad ASP.NET 5  non potranno girare con il .NET Core. E le applicazioni esistenti?
  • 28.  Applicazione esistenti ASP.NET MVC  possono essere eseguite senza modifiche sul .NET Framework 4.6.  migrare ad ASP.NET 5/MVC 6 comporta la riscrittura  La difficolta dipende da quanto l’applicazione è legata a System.web e dalle API utilizzate E le applicazioni esistenti?
  • 29.  API Portability Analyzer  Tool che analizza la API utilizzate dall’applicazione, e permette di fare una prima analisi  http://www.microsoft.com/en-us/download/details.aspx?id=42678  E’ disponibile un’estensione per Visual Studio che genera il report  https://visualstudiogallery.msdn.microsoft.com/1177943e-cfb7-4822-a8a6-e56c7905292b E le applicazioni esistenti?
  • 30.  http://weblogs.asp.net/scottgu/introducing-asp-net-5  http://www.asp.net/vnext/overview/aspnet-vnext/aspnet-5-overview  http://blogs.msdn.com/b/dotnet/archive/2014/12/04/introducing-net- core.aspx  http://blogs.msdn.com/b/cesardelatorre/archive/2014/11/18/what-is-net- core-5-and-asp-net-5-within-net-2015-preview.aspx  http://blogs.msdn.com/b/bethmassi/archive/2015/02/25/understanding- net-2015.aspx  http://blogs.msdn.com/b/webdev/archive/2014/06/17/dependency- injection-in-asp-net-vnext.aspx  http://blogs.msdn.com/b/webdev/archive/2015/02/23/aspnet-5- updates-for-feb-2015.aspx  http://forums.asp.net/1255.aspx/1?ASP+NET+5+Preview+  … Links
  • 31. feedback 10 • Materiale: – http://blog.dottor.net/files/xedotnet/20150313_Dottor. MVC6_code.zip – http://blog.dottor.net/files/xedotnet/20150313_Dottor. MVC6_slide.zip Email: andrea@dottor.net Website: http://www.dottor.net Blog: http://blog.dottor.net Twitter: http://twitter.com/dottor Contatti