Una sessione alla scoperta delle grandi novità che ASP.NET 5 introduce. Questo nuovo aggiornamento del framework non porta solo un'evoluzione alla tecnologia che già conosciamo, ma porta importanti e radicali cambiamenti (una "rivoluzione" di molte cose che già conosciamo e utilizziamo) che dobbiamo essere pronti a sfruttare il prima possibile per dare una marcia in più alle nostre applicazioni. ASP.NET MVC 6, nuovo template di progetto, cross-platform.
Creare API pubbliche, come evitare gli errori comuni
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
1. 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
2. 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
5. 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
7. 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
14. 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
15. 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
16. 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
17. 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
18. 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
19. 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
21. 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.
• …
24. 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
25. 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
26. 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, …
27. 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
28. 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")
29. 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
30. 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
32. 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
33. 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
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.