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

34
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: [email protected]

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

Visual Studio 2015 Saturday

ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webAndrea Dottor – Microsoft MVP ASP.NET/IIS

twitter: @dottoremail: [email protected]

Visual Studio 2015 Saturday

Contatti

Andrea Dottor{ consulenza e sviluppo software }Microsoft MVP ASP.NET/IIS

Email: [email protected]: http://www.dottor.net Blog: http://blog.dottor.netTwitter: http://twitter.com/dottor

Visual Studio 2015 Saturday

Agenda

Visual Studio 2015 Saturday

pass

ato

Visual Studio 2015 Saturday

ASP.NET Web Form(versione 1.0 - gennaio 2002)

Pensato per migrare al web gli sviluppatori Windows Form

ViewStateModello event-driven

Passato

Visual Studio 2015 Saturday

pres

ente

Visual Studio 2015 Saturday

ASP.NET MVCASP.NET Web API(oltre ad ASP.NET WebForm)

Più vicine agli standard attualiPiù vicine a come funziona il webPiù "facili" per chi arriva da altre tecnologie

Presente

Visual Studio 2015 Saturday

futu

ro

Visual Studio 2015 Saturday

ASP.NET 5

ASP.

NET

5

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 Stabilization1.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 5Unified framework for MVC, Web API

.NET Framework 4.6 stack and libs

Full .NET Framework for all scenarios & libraries

.NET Core 5 stack and libsSmall 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, RunAn 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 5https://github.com/aspnet/aspnet-dockerhttps://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 Saturday

ASP.

NET

5

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 Saturday

ASP.

NET

5

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 staticiIntegrazione 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 PartialViewMa 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 Startupservices.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: [email protected]: http://www.dottor.net Blog: http://blog.dottor.netTwitter: http://twitter.com/dottor

Visual Studio 2015 Saturday

Domande?