Performance:
Perché è importante - Cosa misurare e come si fa - Evoluzione delle performance di ASP.NET Core - Comparazione di ASP.NET Core con gli altri framework - Cosa rende ASP.NET Core molto più performante di ASP.NET - Ulteriori miglioramenti in corso di realizzazione.
In questa serata cercheremo di capire perchè Blazor ha riscosso così tanto successo, e lo faremo analizzando casi presi da applicazioni reali dove questa tecnologia è stata introdotta, così da capirne meglio le potenzialità (ma anche le eventuali criticità).
Come di consuetudine, faremo poi un confronto, così da condividere i vari punti di vista.
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
Molte applicazione sono (ancora) sviluppate in WebForm e non possono essere convertite automaticamente ad ASP.NET Core. Una riscrittura completa in molti casi è impossibile o impensabile da attuare. In questa sessione vedremo come migrare in modo graduale queste tipologie di applicazioni verso ASP.NET Core, andando in dettaglio nelle varie problematiche che solitamente si possono presentare. La sessione deriva da un'esperienza reale, che ha permesso di conoscere (nel bene o nel male) le difficoltà che si nascondo in queste migrazioni.
Evento: https://www.xedotnet.org/eventi/one-day-enterprise-application/
Prepariamoci al cambiamento. ASP.NET MVC e ASP.NET Web API saranno unificati in un unico framework chiamato ASP.NET MVC 6, e questo è solo la prima di una serie di novità che stanno per arrivare.
Tutto si semplifica. Le performance migliorano. Un altro salto tecnologico in avanti portato da ASP.NET 5.
In questa sessione, infatti, vedremo tutte le novità che ASP.NET MVC 6 porta con se, e cercheremo di andare in dettaglio in modo da capire cosa voglia dire realizzare (da zero) o migrare (un'applicazione essitente) a questa nuova versione
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015Codemotion
Codemotion Rome 2015 - Costruiamo con Spring Boot una applicazione Java EE con transazioni multiple JDBC-JMS utilizzando H2 e HornetQ (embedded in memory), il supporto di autoconfiguration JAX-RS (Jersey), le annotazioni JSR 250 per i lifecycle hooks, e le annotazioni JSR 330 utilizzabili per AS proprietari e per la portabilità in container di dependency injection come Spring. Per finire distribuiremo su Undertow embedded HTTTP server, su un AS standalone (Apache TomEE) e come PAAS su Cloud Foundry.
In questa serata cercheremo di capire perchè Blazor ha riscosso così tanto successo, e lo faremo analizzando casi presi da applicazioni reali dove questa tecnologia è stata introdotta, così da capirne meglio le potenzialità (ma anche le eventuali criticità).
Come di consuetudine, faremo poi un confronto, così da condividere i vari punti di vista.
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
Molte applicazione sono (ancora) sviluppate in WebForm e non possono essere convertite automaticamente ad ASP.NET Core. Una riscrittura completa in molti casi è impossibile o impensabile da attuare. In questa sessione vedremo come migrare in modo graduale queste tipologie di applicazioni verso ASP.NET Core, andando in dettaglio nelle varie problematiche che solitamente si possono presentare. La sessione deriva da un'esperienza reale, che ha permesso di conoscere (nel bene o nel male) le difficoltà che si nascondo in queste migrazioni.
Evento: https://www.xedotnet.org/eventi/one-day-enterprise-application/
Prepariamoci al cambiamento. ASP.NET MVC e ASP.NET Web API saranno unificati in un unico framework chiamato ASP.NET MVC 6, e questo è solo la prima di una serie di novità che stanno per arrivare.
Tutto si semplifica. Le performance migliorano. Un altro salto tecnologico in avanti portato da ASP.NET 5.
In questa sessione, infatti, vedremo tutte le novità che ASP.NET MVC 6 porta con se, e cercheremo di andare in dettaglio in modo da capire cosa voglia dire realizzare (da zero) o migrare (un'applicazione essitente) a questa nuova versione
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015Codemotion
Codemotion Rome 2015 - Costruiamo con Spring Boot una applicazione Java EE con transazioni multiple JDBC-JMS utilizzando H2 e HornetQ (embedded in memory), il supporto di autoconfiguration JAX-RS (Jersey), le annotazioni JSR 250 per i lifecycle hooks, e le annotazioni JSR 330 utilizzabili per AS proprietari e per la portabilità in container di dependency injection come Spring. Per finire distribuiremo su Undertow embedded HTTTP server, su un AS standalone (Apache TomEE) e come PAAS su Cloud Foundry.
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webAndrea Dottor
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.
Non stiamo parlando di un ritorno a WebForm ma di un'evoluzione (o meglio) di un'alternativa al pattern MVC. Le Razor Pages possono essere un buon motore per smuovere le migrazioni di vecchie applicazioni, utilizzando un paradigma di pagina (vicino a quello che chi utilizza WebForm già conosce) ma con una visione e pulizia degna delle migliori applicazioni MVC .
Ecco che le Razor Pages si stanno ritagliano il loro spazio, ed in questa sessione cercheremo di affrontare i pro e contro del loro utilizzo, capendone al meglio i casi duso ideali.
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottor
Slide e codice lo potete trovare a questo link:
http://blog.dottor.net/post/2012/09/18/Codice-e-slide-della-sessione-Whats-New-in-ASPNET-45-and-Visual-Studio-2012.aspx
Il Microsoft .NET Framework è in continua evoluzione, e con la prossima versione verranno rilasciate interessanti funzionalità riguardanti ASP.NET.All'interno di questa sessione conosceremo tutte queste novità, ed andremo invece più in dettaglio in alcune di esse, permettendo a chi conosce già ASP.NET di poter essere più produttivo (Strongly Typed Data Controls, Model Binding, Asynchronous, WebSocket, ... ), mentre, per chi invece non ha molta esperienza con questa tecnologia, potrà vedere come i nuovi template di progetto e Visual Studio 2012 potranno aiutarlo ad approcciare correttamente queste tipologie di applicazioni.
ASP.NET Core 2.0 è stato ufficialmente rilasciato e porta con se parecchie novità come le Razor Pages, template aggiornati e l'integrazione con Application Insights migliorata. In questa cercheremo capiremo la vera maturità di questo framework, e quanto questo rilascio sia importante per noi dev.
In questa sessione andremo in dettaglio sul come poter migliorare le nostre applicazioni ASP.NET dal punto delle vista delle performance: Come capire dove interventire? Cosa possiamo migliorare? A cosa dobbiamo prestare attenzione? E nel caso di un'applicazione esistente, dove possiamo intervenire per migliorarla ulteriormente?
Gestire l’infrastruttura come se fosse codice, ha degli indubbi vantaggi, soprattutto in un team agile che ha più esperienze Dev piuttosto che Ops.
In questa sessione vi racconteremo la nostra esperienza, problemi, vantaggi e cosa abbiamo imparato.
Lo unified tooling è l’area di interesse DevOps che fonde pratiche di software development a quelle di system administration, con lo scopo di semplificare il processo di deployment di ambienti complessi. In questo talk vengono esposte le esperienze di un team di dev che è riuscito a gestire e replicare ambienti complessi, ricorrendo a strumenti e pratiche delle metodologie agili. Saranno evidenziati i vantaggi ottenuti e le problematiche riscontrate.
HTML5 Single Page Application è il nuovo hype tecnologico: tutti ne parlano, il web ne è pervaso, da GMail a Facebook e Twitter, dal desktop al mobile, dagli Appennini alle Ande.
In questa sessione ci occuperemo di tutti quegli aspetti di organizzazione di una solution in termini di codebase, unit testing e processo di build, presentando alcuni strumenti che stanno emergendo fra quelli disponibili.
Demo: http://www.communitydays.it/events/2014-Roma/web02/
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webAndrea Dottor
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.
Non stiamo parlando di un ritorno a WebForm ma di un'evoluzione (o meglio) di un'alternativa al pattern MVC. Le Razor Pages possono essere un buon motore per smuovere le migrazioni di vecchie applicazioni, utilizzando un paradigma di pagina (vicino a quello che chi utilizza WebForm già conosce) ma con una visione e pulizia degna delle migliori applicazioni MVC .
Ecco che le Razor Pages si stanno ritagliano il loro spazio, ed in questa sessione cercheremo di affrontare i pro e contro del loro utilizzo, capendone al meglio i casi duso ideali.
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottor
Slide e codice lo potete trovare a questo link:
http://blog.dottor.net/post/2012/09/18/Codice-e-slide-della-sessione-Whats-New-in-ASPNET-45-and-Visual-Studio-2012.aspx
Il Microsoft .NET Framework è in continua evoluzione, e con la prossima versione verranno rilasciate interessanti funzionalità riguardanti ASP.NET.All'interno di questa sessione conosceremo tutte queste novità, ed andremo invece più in dettaglio in alcune di esse, permettendo a chi conosce già ASP.NET di poter essere più produttivo (Strongly Typed Data Controls, Model Binding, Asynchronous, WebSocket, ... ), mentre, per chi invece non ha molta esperienza con questa tecnologia, potrà vedere come i nuovi template di progetto e Visual Studio 2012 potranno aiutarlo ad approcciare correttamente queste tipologie di applicazioni.
ASP.NET Core 2.0 è stato ufficialmente rilasciato e porta con se parecchie novità come le Razor Pages, template aggiornati e l'integrazione con Application Insights migliorata. In questa cercheremo capiremo la vera maturità di questo framework, e quanto questo rilascio sia importante per noi dev.
In questa sessione andremo in dettaglio sul come poter migliorare le nostre applicazioni ASP.NET dal punto delle vista delle performance: Come capire dove interventire? Cosa possiamo migliorare? A cosa dobbiamo prestare attenzione? E nel caso di un'applicazione esistente, dove possiamo intervenire per migliorarla ulteriormente?
Gestire l’infrastruttura come se fosse codice, ha degli indubbi vantaggi, soprattutto in un team agile che ha più esperienze Dev piuttosto che Ops.
In questa sessione vi racconteremo la nostra esperienza, problemi, vantaggi e cosa abbiamo imparato.
Lo unified tooling è l’area di interesse DevOps che fonde pratiche di software development a quelle di system administration, con lo scopo di semplificare il processo di deployment di ambienti complessi. In questo talk vengono esposte le esperienze di un team di dev che è riuscito a gestire e replicare ambienti complessi, ricorrendo a strumenti e pratiche delle metodologie agili. Saranno evidenziati i vantaggi ottenuti e le problematiche riscontrate.
HTML5 Single Page Application è il nuovo hype tecnologico: tutti ne parlano, il web ne è pervaso, da GMail a Facebook e Twitter, dal desktop al mobile, dagli Appennini alle Ande.
In questa sessione ci occuperemo di tutti quegli aspetti di organizzazione di una solution in termini di codebase, unit testing e processo di build, presentando alcuni strumenti che stanno emergendo fra quelli disponibili.
Demo: http://www.communitydays.it/events/2014-Roma/web02/
Test di carico con Visual Studio Online: facile! Davide Benvegnù
Quando sviluppiamo le nostre applicazioni funziona sempre tutto, non appena aumenta il numero di utenti il sistema inizia ad avere qualche problema.
Ma come possiamo assicurarci che il software funzioni anche sotto carico? Devo per forza avere un laboratorio di test con centinaia di macchine?
Vediamo come poter fare test di carico in modo semplice, veloce e senza dover impazzire con le configurazioni grazie a VSO.
Blazor è un framework per la creazione di Single Page Application (SPA) tramite l’utilizzo di C#.
Creato da Steve Sanderson e successivamente inserito in .NET Core come esperimento.
Visto l’enorme successo avuto sulla community è stato poi deciso di renderlo parte integrante dell’ecosistema .NET
Offre tutti i vantaggi di un framework front-end scrivendo codice interamente in C#.
In this meeting we will face a very known but often overlooked aspect, namely the use of HTTPS. Many developers still think that the use of HTTPS is reserved for important sites and that for simpler things, such as a site consisting of a few static pages, it's not worth it. We will first try to dispel this myth, showing how much damage can be done using the HTTP pages of a simple static site, and then we will show how it is possible to use the free SSL certificates of Let's Encrypt to create HTTPS services without spending a fortune.
Introduction to Blazor and WebAssembly in Christmas sauce. In this session we will see how to create a small demonstration application to send Christmas greetings.
2. ASP.NET Core //Build reloaded
ASP.NET Core
Web Framework Benchmarks
Nicolò Carandini [MVP]
n.carandini@outlook.com
@TPCWare
3. ASP.NET Core //Build reloaded
Performance
• Perché è importante
• Cosa misurare e come si fa
• Evoluzione delle performance di ASP.NET Core
• Comparazione di ASP.NET Core con gli altri framework
• Cosa rende ASP.NET Core molto più performante di ASP.NET
• Ulteriori miglioramenti in corso di realizzazione
4. ASP.NET Core //Build reloaded
L’importanza delle prestazioni
Le prestazioni di un Web Application Framework incidono
pesantemente sui costi:
2.000 RPS x 100 Server = 200k x 1 Server
Ma i costi non sono esattamente gli stessi… ☺
5. ASP.NET Core //Build reloaded
Cosa si misura
Il numero di RPS (Request Per Seconds).
Ovviamente cambia molto a seconda degli scenari, perché si
possono sommare altri effetti dovuti, ad esempio, al database
engine coinvolto in una query di dati.
Si passa quindi da scenari molto semplici e facilmente
paragonabili tra loro come PlainText e JSON Serialization fino
ad arrivare a scenari più complessi di Single Query e Multiple
Query e di Data Update.
6. ASP.NET Core //Build reloaded
Come si misura
• Questione storicamente molto controversa
• La cosa migliore è utilizzare dei benchmark di terze parti che
girino sui diversi scenari formati da una permutazione di
framework, platform, linguaggi ed elementi complementari
(DB, ORM, …)
• TechEmpower, società di sviluppo e gestione di Web App, ha
sviluppato una serie di test per differenti workload che
esegue periodicamente e di cui pubblica i risultati sul suo
sito: www.techempower.com/benchmarks
7. ASP.NET Core //Build reloaded
Ambiente fisico di test di TechEmpower
Load Generator
Linux Server
wrk load generation tool
Database Server
Dell R710
10-Gigabit switch
Application Server
Dell R910
4x 10-Core E7-4850 CPUs
Ambiente Cloud
Microsoft Azure
D3v2 instances
8. ASP.NET Core //Build reloaded
Evoluzione delle performance
Quando il team di ASP.NET Core ha incominciato a testare le prestazioni
il quadro risultante era desolante: 2.120 RPS per il semplice PlainText.
Per correre ai ripari, il team ha:
• Creato l’ambiente fisico di test nella sede del team (letteralmente!)
• Creato un progetto su GitHub di implementazione dei benchmark
• Inserito i test di performance nella tool chain di sviluppo di ASP.NET
Core
I risultati venivano inizialmente raccolti e mostrati con una Pivot Table
di Excel, oggi sono visibili online tramite Power BI, tuttora in fase di
sviluppo: bit.ly/2rNebyz (short link temporaneo creato da me, quello
riportato su GitHub è anch’esso temporaneo e lunghissimo!)
9. ASP.NET Core //Build reloaded
Community Standup - Performance Testing
www.youtube.com/watch?v=7O81CAjmOXk
10. ASP.NET Core //Build reloaded
Ambiente di test di ASP.NET Core
Load Generator
Ubuntu 14.04.5 LTS
wrk load generation tool Web Server
Windows Server
10-Gigabit switch
11. ASP.NET Core //Build reloaded
I risultati di un anno di lavoro open source
A fine febbraio 2016 ASP.NET Core ha superato il milione di RPS
12. ASP.NET Core //Build reloaded
La situazione ad oggi
Questi i risultati del round n. 14 del 10 maggio 2017, limitatamente ad
ASP.NET, ASP.NET Core e Node.js:
https://www.techempower.com/benchmarks
13. ASP.NET Core //Build reloaded
Confronto con gli altri Framework
TechEmpower offre un’ampia varietà di filtri per framework, linguaggi e
piattaforme e soprattutto suddivide i test in tre tipologie:
• Platform
test che richiedono la semplice risposta del server
• Micro
test che utilizzano la pipeline
• Fullstack
test che utilizzano tutto lo stack tecnologico del framework, tipo MVC
14. ASP.NET Core //Build reloaded
Risultati per Fullstack, Micro e Platform
https://www.techempower.com/benchmarks
30°
14°
15. ASP.NET Core //Build reloaded
Risultati per Fullstack, Micro
https://www.techempower.com/benchmarks
15°
3°
16. ASP.NET Core //Build reloaded
Risultati per Fullstack
https://www.techempower.com/benchmarks
6°
17. ASP.NET Core //Build reloaded
Perché ASP.NET Core è più veloce di ASP.NET
• ASP.NET Core è modulare, open source e Cross Platform.
• La componibilità della pipeline fornita da ASP.NET Core consente di
utilizzare solo i componenti necessari.
• ASP.NET Core non dipende più ne da System.Web ne da IIS.
• Può essere utilizzato con Kestrel, il web server cross-platform, tramite
reverse proxy server Nginx.
18. ASP.NET Core //Build reloaded
Aree di sviluppo
L’aumento delle prestazioni è stato ottenuta lavorando sull’ottimizzazione
delle diverse parti critiche, quali:
• Kestrel server
• Thread pool
• JITter
• Cold start
19. ASP.NET Core //Build reloaded
Altre migliorie in corso d’opera
• Runtime Store con le versioni pre-JITted di tutti i package ASP.NET Core
• Precompilazione delle Razor view page durante la pubblicazione
20. ASP.NET Core //Build reloaded
Misurare le performance delle proprie App
Per lo stesso motivo per cui è utile al team di ASP.NET Core testare e
continuamente migliorare le prestazioni del framework, allo stesso
modo è essenziale farlo per le nostre soluzioni.
Per realizzare un nostro laboratorio di benchmark basta utilizzare:
• Docker
• Wrk
21. ASP.NET Core //Build reloaded
Wrk
Wrk è un potente strumento di generazione di carichi di lavoro single e
multi core, con un motore di scripting che consente di automatizzare i
test e raccogliere i risultati.
22. ASP.NET Core //Build reloaded
Istruzioni per l’uso
Grazie a docker mettere su il laboratorio è molto semplice:
1. Caricare l’immagine di wrk:
2. Caricare l’immagine dell’app che vogliamo testare
3. Recuperare l’indirizzo IP della nostra app:
4. Eseguire i test (ad esempio con 2 thread e 5 connection, per 5 sec):
C:>docker pull williamyeh/wrk
C:>docker inspect –f
"{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" MyAppID
C:>docker run --rm MyAppID -t2 -c5 -d5s -H 'Host: example.com‘
--timeout 2s http://IPAddress:Port
23. ASP.NET Core //Build reloaded
Esempio di lab con Docker per Windows 10
Load Generator
Linux Server
wrk load generation tool
Web Server
Windows Nano Server
ASP.NET Core Web App
Virtual switch
Web Server
Linux Server
Node.js Web App
Web Server
Linux Server
ASP.NET Core Web App
25. ASP.NET Core //Build reloaded
Riferimenti e link utili
• Web Framework Benchmarks
https://www.techempower.com/benchmarks
• Benchmarks
https://github.com/aspnet/benchmarks
• ASP.NET Core – 2300% More Requests Served Per Second
https://www.ageofascent.com/2016/02/18/asp-net-core-exeeds-1-15-million-requests-12-6-gbps
• ASP.NET Core 2 – More Performance Improvements
https://blogs.msdn.microsoft.com/webdev/2017/05/10/aspnet-2-preview-1
• Introducing ASP.NET Core 2.0
(Fast Startup and Defaulting View Precompilation on at 42')
https://channel9.msdn.com/events/Build/2017/B8048
• NET Core 2.0 runtime store
https://github.com/aspnet/Announcements/issues/243