Visual Studio 2015 Saturday
ASP.NET 4.6 e ASP.NET 5
...l'evoluzione del web
Andrea Dottor – Microsoft MVP ASP.NET/IIS
twitter: @dottor
email: andrea@dottor.net
Visual Studio 2015 Saturday
Contatti
Andrea Dottor
{ consulenza e sviluppo software }
Microsoft MVP ASP.NET/IIS
Email: andrea@dottor.net
Website: http://www.dottor.net
Blog: http://blog.dottor.net
Twitter: http://twitter.com/dottor
Visual Studio 2015 Saturday
Agenda
Visual Studio 2015
passato
Visual Studio 2015 Saturday
ASP.NET Web Form
(versione 1.0 - gennaio 2002)
Pensato per migrare al web gli sviluppatori Windows Form
ViewState
Modello event-driven
Passato
Visual Studio 2015
presente
Visual Studio 2015 Saturday
ASP.NET MVC
ASP.NET Web API
(oltre ad ASP.NET WebForm)
Più vicine agli standard attuali
Più vicine a come funziona il web
Più "facili" per chi arriva da altre tecnologie
Presente
Visual Studio 2015
futuro
Visual Studio 2015
ASP.NET 5
ASP.NET5
Visual Studio 2015 Saturday
https://github.com/aspnet/Home/wiki/Roadmap
ASP.NET 5 Roadmap
Milestone Release week
Beta6 27 Jul 2015
Localization, Servicing, .NET 4.6 support, and
more
Beta7 2 Sep 2015 Cross-platform
Beta8 15 Oct 2015 Feature complete!
RC1 Nov 2015 Stabilization
1.0.0 Q1* 2016
Visual Studio 2015 Saturday
ASP.NET Team - Community standup
Visual Studio 2015 Saturday
https://live.asp.net/
ASP.NET Team - Community standup
Visual Studio 2015 Saturday
L'ecosistema .NET
Visual Studio 2015 Saturday
Where does ASP.NET fit in the new world?
ASP.NET 5
Unified framework for MVC, Web API
.NET Framework 4.6 stack and
libs
Full .NET Framework for all scenarios & libraries
.NET Core 5 stack and libs
Small runtime optimized for server & cloud
workloads
Visual Studio 2015 Saturday
Faster Development Cycle
• Features are shipped as packages
• Framework is part of the application (.NET Core)
More Control
• Same code running from development to production
• New version choice in the hands of the developers
ASP.NET 5 - Agile
Visual Studio 2015 Saturday
Development productivity + low friction
• No compilation => Save and refresh
• Framework is part of the application (.NET Core)
Improved runtime performance
• Faster startup times (~2-3”)
• Lower memory / higher density for HTTP Requests (> 90%)
• Modular, only pull the functionality and features required
• Raw sockets/full framework or both
ASP.NET 5 - Veloce
Visual Studio 2015 Saturday
Runtime
• Windows, Mac, Linux
Editors
• Visual Studio, Text, Cloud editors
• OmniSharp – Sublime, Emacs, Vi, Atom, Brackets, etc
• No editors (command line)
All Open Source with Contributions
ASP.NET 5 - Cross-Platform
Visual Studio 2015 Saturday
"Build, Ship, Run
An open platform for distributed applications for developers and
sysadmins"
"Docker allows you to package an application with all of its
dependencies into a standardized unit for software development."
Esistono le immagini di Container Docker per ASP.NET 5
https://github.com/aspnet/aspnet-docker
https://hub.docker.com/r/microsoft/aspnet/
http://blogs.msdn.com/b/webdev/archive/2015/01/14/running-asp-net-5-applications-
in-linux-containers-with-docker.aspx
Visual Studio 2015 Saturday
Nessuna differenza tra un'applicazione sviluppata per essere
pubblicata in un nostro server o nel cloud
Non ci sono più "vincoli" di dover pubblicare in un server
Windows Server
ASP.NET 5 – Cloud-ready
Visual Studio 2015
ASP.NET5
Choose your Editors and Tools
Visual Studio 2015 Saturday
Visual Studio Code
Editor gratuito per Linux, Mac OSX,
e Windows.
• Pensato per ASP.NET 5 e NodeJS
• Integrato con Git
• Debugging, IntelliSense
• Integrato con tool esterni:
es: Ant, Gulp, Jake, Rake e MSBuild.
• …
Visual Studio 2015 Saturday
OmniSharp
Visual Studio 2015
ASP.NET5
Application anatomy
Visual Studio 2015 Saturday
File di configurazione e di progetto in json (o .xml o .ini)
• project.json
• config.json
• …
Configurazione da codice (startup.cs)
Cartella wwwroot per i file statici
Integrazione nativa con gulp, bower, …
• http://gulpjs.com/
Gulp is a toolkit that will help you automate painful or time-consuming tasks in your
development workflow.
• http://bower.io/
Bower works by fetching and installing packages from all over, taking care of hunting, finding,
downloading, and saving the stuff you’re looking for.
Struttura progetto
Visual Studio 2015 Saturday
ConfigureServices permette di definire i servizi utilizzati
dall'applicazione
Configure permette di definire la pipeline/middleware di ogni
chiamata
Startup class
Visual Studio 2015 Saturday
Unico controller per MVC e Web API
Regole di routing specificate nel file Startup.cs o tramite
RouteAttributes
Siamo noi ad attivare/abilitare le funzionalità che servono
all'applicazione
Molte funzionalità sono disponibili come pacchetti NuGet separati
Non dipendiamo più dalla System.Web.dll
MVC, Web API, …
Visual Studio 2015 Saturday
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.
Dependency injection
Visual Studio 2015 Saturday
Simili alle PartialView
Ma molto meglio.
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
View Components
@Component.Invoke("TagList")
Visual Studio 2015 Saturday
Possibilità di iniettare una classe/servizio 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 into a view
Visual Studio 2015 Saturday
Class Library (package) è diversa dalla "classica" Class Library
Permette di condividere classi/codice che possono essure
utilizzati anche su .NET Core.
Class Library
Visual Studio 2015
Saturday
demo
Visual Studio 2015 Saturday
• Introduction to ASP.NET 5
• http://docs.asp.net/en/latest/conceptual-overview/aspnet.html
• DNX Overview
• http://docs.asp.net/en/latest/dnx/overview.html
• Introducing ASP.NET 5
• https://channel9.msdn.com/Events/Build/2015/2-687
• ASP.NET GitHub
• https://github.com/aspnet
• ASP.NET Home Repository
• https://github.com/aspnet/Home
• ASP.NET 5 Docs
• http://docs.asp.net/
Risorse
Visual Studio 2015 Saturday
Contatti
Andrea Dottor
{ consulenza e sviluppo software }
Microsoft MVP ASP.NET/IIS
Email: andrea@dottor.net
Website: http://www.dottor.net
Blog: http://blog.dottor.net
Twitter: http://twitter.com/dottor
Visual Studio 2015
Saturday
Domande?

ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web

  • 1.
    Visual Studio 2015Saturday ASP.NET 4.6 e ASP.NET 5 ...l'evoluzione del web Andrea Dottor – Microsoft MVP ASP.NET/IIS twitter: @dottor email: andrea@dottor.net
  • 2.
    Visual Studio 2015Saturday Contatti Andrea Dottor { consulenza e sviluppo software } Microsoft MVP ASP.NET/IIS Email: andrea@dottor.net Website: http://www.dottor.net Blog: http://blog.dottor.net Twitter: http://twitter.com/dottor
  • 3.
    Visual Studio 2015Saturday Agenda
  • 4.
  • 5.
    Visual Studio 2015Saturday ASP.NET Web Form (versione 1.0 - gennaio 2002) Pensato per migrare al web gli sviluppatori Windows Form ViewState Modello event-driven Passato
  • 6.
  • 7.
    Visual Studio 2015Saturday ASP.NET MVC ASP.NET Web API (oltre ad ASP.NET WebForm) Più vicine agli standard attuali Più vicine a come funziona il web Più "facili" per chi arriva da altre tecnologie Presente
  • 8.
  • 9.
  • 10.
    Visual Studio 2015Saturday https://github.com/aspnet/Home/wiki/Roadmap ASP.NET 5 Roadmap Milestone Release week Beta6 27 Jul 2015 Localization, Servicing, .NET 4.6 support, and more Beta7 2 Sep 2015 Cross-platform Beta8 15 Oct 2015 Feature complete! RC1 Nov 2015 Stabilization 1.0.0 Q1* 2016
  • 11.
    Visual Studio 2015Saturday ASP.NET Team - Community standup
  • 12.
    Visual Studio 2015Saturday https://live.asp.net/ ASP.NET Team - Community standup
  • 13.
    Visual Studio 2015Saturday L'ecosistema .NET
  • 14.
    Visual Studio 2015Saturday Where does ASP.NET fit in the new world? ASP.NET 5 Unified framework for MVC, Web API .NET Framework 4.6 stack and libs Full .NET Framework for all scenarios & libraries .NET Core 5 stack and libs Small runtime optimized for server & cloud workloads
  • 15.
    Visual Studio 2015Saturday Faster Development Cycle • Features are shipped as packages • Framework is part of the application (.NET Core) More Control • Same code running from development to production • New version choice in the hands of the developers ASP.NET 5 - Agile
  • 16.
    Visual Studio 2015Saturday Development productivity + low friction • No compilation => Save and refresh • Framework is part of the application (.NET Core) Improved runtime performance • Faster startup times (~2-3”) • Lower memory / higher density for HTTP Requests (> 90%) • Modular, only pull the functionality and features required • Raw sockets/full framework or both ASP.NET 5 - Veloce
  • 17.
    Visual Studio 2015Saturday Runtime • Windows, Mac, Linux Editors • Visual Studio, Text, Cloud editors • OmniSharp – Sublime, Emacs, Vi, Atom, Brackets, etc • No editors (command line) All Open Source with Contributions ASP.NET 5 - Cross-Platform
  • 18.
    Visual Studio 2015Saturday "Build, Ship, Run An open platform for distributed applications for developers and sysadmins" "Docker allows you to package an application with all of its dependencies into a standardized unit for software development." Esistono le immagini di Container Docker per ASP.NET 5 https://github.com/aspnet/aspnet-docker https://hub.docker.com/r/microsoft/aspnet/ http://blogs.msdn.com/b/webdev/archive/2015/01/14/running-asp-net-5-applications- in-linux-containers-with-docker.aspx
  • 19.
    Visual Studio 2015Saturday Nessuna differenza tra un'applicazione sviluppata per essere pubblicata in un nostro server o nel cloud Non ci sono più "vincoli" di dover pubblicare in un server Windows Server ASP.NET 5 – Cloud-ready
  • 20.
    Visual Studio 2015 ASP.NET5 Chooseyour Editors and Tools
  • 21.
    Visual Studio 2015Saturday Visual Studio Code Editor gratuito per Linux, Mac OSX, e Windows. • Pensato per ASP.NET 5 e NodeJS • Integrato con Git • Debugging, IntelliSense • Integrato con tool esterni: es: Ant, Gulp, Jake, Rake e MSBuild. • …
  • 22.
    Visual Studio 2015Saturday OmniSharp
  • 23.
  • 24.
    Visual Studio 2015Saturday File di configurazione e di progetto in json (o .xml o .ini) • project.json • config.json • … Configurazione da codice (startup.cs) Cartella wwwroot per i file statici Integrazione nativa con gulp, bower, … • http://gulpjs.com/ Gulp is a toolkit that will help you automate painful or time-consuming tasks in your development workflow. • http://bower.io/ Bower works by fetching and installing packages from all over, taking care of hunting, finding, downloading, and saving the stuff you’re looking for. Struttura progetto
  • 25.
    Visual Studio 2015Saturday ConfigureServices permette di definire i servizi utilizzati dall'applicazione Configure permette di definire la pipeline/middleware di ogni chiamata Startup class
  • 26.
    Visual Studio 2015Saturday Unico controller per MVC e Web API Regole di routing specificate nel file Startup.cs o tramite RouteAttributes Siamo noi ad attivare/abilitare le funzionalità che servono all'applicazione Molte funzionalità sono disponibili come pacchetti NuGet separati Non dipendiamo più dalla System.Web.dll MVC, Web API, …
  • 27.
    Visual Studio 2015Saturday 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. Dependency injection
  • 28.
    Visual Studio 2015Saturday Simili alle PartialView Ma molto meglio. 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 View Components @Component.Invoke("TagList")
  • 29.
    Visual Studio 2015Saturday Possibilità di iniettare una classe/servizio 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 into a view
  • 30.
    Visual Studio 2015Saturday Class Library (package) è diversa dalla "classica" Class Library Permette di condividere classi/codice che possono essure utilizzati anche su .NET Core. Class Library
  • 31.
  • 32.
    Visual Studio 2015Saturday • Introduction to ASP.NET 5 • http://docs.asp.net/en/latest/conceptual-overview/aspnet.html • DNX Overview • http://docs.asp.net/en/latest/dnx/overview.html • Introducing ASP.NET 5 • https://channel9.msdn.com/Events/Build/2015/2-687 • ASP.NET GitHub • https://github.com/aspnet • ASP.NET Home Repository • https://github.com/aspnet/Home • ASP.NET 5 Docs • http://docs.asp.net/ Risorse
  • 33.
    Visual Studio 2015Saturday Contatti Andrea Dottor { consulenza e sviluppo software } Microsoft MVP ASP.NET/IIS Email: andrea@dottor.net Website: http://www.dottor.net Blog: http://blog.dottor.net Twitter: http://twitter.com/dottor
  • 34.

Editor's Notes

  • #15 ASP.NET 5 is one unified framework that runs on top of 2 different .NET frameworks. You may mistakenly think that there are two versions of ASP.NET but when in fact the only thing that changes is the target application model. Once compiled, it’s all the same.