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.
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.
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
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.
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.
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
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.
ASP.NET MVC è una piattaforma aperta costruita come un puzzle di componenti. Per personalizzare il comportamento dei componenti interni del sistema è quindi sufficiente rimuovere uno dei tasselli e sostituirlo con uno scritto da noi. Un'operazione resa semplice ed immediata dall'interfaccia Dependency Resolver.
In questa sessione faremo una panoramica a 360 gradi su Blazor, la nuovissima tecnologia Microsoft nata da una (geniale :-) idea di Steve Sanderson per lo sviluppo di applicazioni Web client basate su WebAssembly.
Nell'introduzione parlemermo brevemente di WebAssembly, spiegando di cosa si tratta e del perché questa tecnologia abbia tutte le premesse per portare uno dei più grandi "disruptive changes" nel modo di sviluppare applicazioni Web client. Passeremo poi a Blazor esaminandone prima gli aspetti architetturali e procedendo con un behind the scenes per svelare in che modo avviene la "magia" dell'interazione con il browser. Verranno poi presentate le feature che questa tecnologia offre (template project su VS, components, layouts, binding, dependency injection, hosting) sia attraverso slides che, di pari passo, con delle demo di un'applicazione funzionante realizzata in Blazor. Vedremo poi quali sono le problematiche legate a performance, deployment e distribuzione parlando delle possibili future ottimizzazioni. Infine chiuderemo con un confronto tra Blazor e i maggiori framework ora in uso per lo sviluppo di applicazioni Web client (Angular, Vue, Knockout, ecc.) e con alcune considerazioni sull'impatto che Blazor e tecnologie simili potrebbe avere a cascata per lo sviluppo Web futuro, in una sorta di "butterfly effect" nel mondo Web client.
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/
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.
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...Meet Magento Italy
In un contesto altamente concorrenziale, le aspettative dei merchant non riguardano più unicamente uptime e possibilità di scaling dei propri shop, ma dettano anche obiettivi specifici in termini di velocità di caricamento delle pagine secondo KPI prestabiliti, al di sotto dei quali far scattare allarmi e/o azioni.
Durante lo speech Marco mostrerà come configurare e utilizzare alcuni applicativi per effettuare test di carico e per analizzare i risultati ottenuti ai fini di un corretto dimensionamento dell’infrastruttura.
Analizzerà infine benchmark di casi reali, evidenziando classiche criticità di Magento e possibili soluzioni.
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.
Webcast - Introduzione a Visual Studio OnlineDavide Benvegnù
Visual Studio Online è uno strumento che fornisce molte funzionalità per l'ALM (Application Lifecycle management) e ad ogni release diventa sempre più completo, funzionale e davvero utile. Si tratta di una piattaforma completa e gratuita di strumenti per lo sviluppo e servizi utili per creare applicazioni multi-piattaforma, progettata per soddisfare i più alti requistiti a livello di disponibilità, scalabilità e complessità di sviluppo.
In questo webcast introduttivo, primo di una serie, vedremo quali sono le caratteristiche di questo strumento, impareremo come utilizzarlo per gestire il lavoro di ogni giorno e prenderemo confidenza con le sue funzionalità. Andremo infine alla scoperta delle nuove feature aggiunte alla suite.
Progettare e sviluppare soluzioni serverless con AWSsparkfabrik
1. DEFINIZIONI
- Perché Serverless / Cos’è Serverless
- Le promesse di serverless
- Use case
2. I PRODOTTI DISPONIBILI
- Confrontare prodotti serverless
- Il mercato FaaS
- La famiglia AWS serverless
4. STRUMENTI E BEST PRACTICE
- Strumenti AWS
- Framework e ambienti di sviluppo
- Testing
- Debug, log, monitoraggio
3. DESIGN E ARCHITETTURA
- Performance e Capacity
- Deploy e Release
- Gestione costi
Windows azure - abbattere tempi e costi di sviluppoAndrea Dottor
In questa sessione vedremo come utilizzare Windows Azure per velocizzare e semplificare la realizzazione di applicazioni ASP.NET. Dallo sviluppo al deploy, passando per lo storage...andremo in dettaglio su varie funzionalità che ci faranno apprezzare ancora più la piattaforma Windows Azure.
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.
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.
ASP.NET MVC è una piattaforma aperta costruita come un puzzle di componenti. Per personalizzare il comportamento dei componenti interni del sistema è quindi sufficiente rimuovere uno dei tasselli e sostituirlo con uno scritto da noi. Un'operazione resa semplice ed immediata dall'interfaccia Dependency Resolver.
In questa sessione faremo una panoramica a 360 gradi su Blazor, la nuovissima tecnologia Microsoft nata da una (geniale :-) idea di Steve Sanderson per lo sviluppo di applicazioni Web client basate su WebAssembly.
Nell'introduzione parlemermo brevemente di WebAssembly, spiegando di cosa si tratta e del perché questa tecnologia abbia tutte le premesse per portare uno dei più grandi "disruptive changes" nel modo di sviluppare applicazioni Web client. Passeremo poi a Blazor esaminandone prima gli aspetti architetturali e procedendo con un behind the scenes per svelare in che modo avviene la "magia" dell'interazione con il browser. Verranno poi presentate le feature che questa tecnologia offre (template project su VS, components, layouts, binding, dependency injection, hosting) sia attraverso slides che, di pari passo, con delle demo di un'applicazione funzionante realizzata in Blazor. Vedremo poi quali sono le problematiche legate a performance, deployment e distribuzione parlando delle possibili future ottimizzazioni. Infine chiuderemo con un confronto tra Blazor e i maggiori framework ora in uso per lo sviluppo di applicazioni Web client (Angular, Vue, Knockout, ecc.) e con alcune considerazioni sull'impatto che Blazor e tecnologie simili potrebbe avere a cascata per lo sviluppo Web futuro, in una sorta di "butterfly effect" nel mondo Web client.
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/
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.
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...Meet Magento Italy
In un contesto altamente concorrenziale, le aspettative dei merchant non riguardano più unicamente uptime e possibilità di scaling dei propri shop, ma dettano anche obiettivi specifici in termini di velocità di caricamento delle pagine secondo KPI prestabiliti, al di sotto dei quali far scattare allarmi e/o azioni.
Durante lo speech Marco mostrerà come configurare e utilizzare alcuni applicativi per effettuare test di carico e per analizzare i risultati ottenuti ai fini di un corretto dimensionamento dell’infrastruttura.
Analizzerà infine benchmark di casi reali, evidenziando classiche criticità di Magento e possibili soluzioni.
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.
Webcast - Introduzione a Visual Studio OnlineDavide Benvegnù
Visual Studio Online è uno strumento che fornisce molte funzionalità per l'ALM (Application Lifecycle management) e ad ogni release diventa sempre più completo, funzionale e davvero utile. Si tratta di una piattaforma completa e gratuita di strumenti per lo sviluppo e servizi utili per creare applicazioni multi-piattaforma, progettata per soddisfare i più alti requistiti a livello di disponibilità, scalabilità e complessità di sviluppo.
In questo webcast introduttivo, primo di una serie, vedremo quali sono le caratteristiche di questo strumento, impareremo come utilizzarlo per gestire il lavoro di ogni giorno e prenderemo confidenza con le sue funzionalità. Andremo infine alla scoperta delle nuove feature aggiunte alla suite.
Progettare e sviluppare soluzioni serverless con AWSsparkfabrik
1. DEFINIZIONI
- Perché Serverless / Cos’è Serverless
- Le promesse di serverless
- Use case
2. I PRODOTTI DISPONIBILI
- Confrontare prodotti serverless
- Il mercato FaaS
- La famiglia AWS serverless
4. STRUMENTI E BEST PRACTICE
- Strumenti AWS
- Framework e ambienti di sviluppo
- Testing
- Debug, log, monitoraggio
3. DESIGN E ARCHITETTURA
- Performance e Capacity
- Deploy e Release
- Gestione costi
Windows azure - abbattere tempi e costi di sviluppoAndrea Dottor
In questa sessione vedremo come utilizzare Windows Azure per velocizzare e semplificare la realizzazione di applicazioni ASP.NET. Dallo sviluppo al deploy, passando per lo storage...andremo in dettaglio su varie funzionalità che ci faranno apprezzare ancora più la piattaforma Windows Azure.
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.
3. Argomenti trattati
Oggi parliamo di:
- WebApp slots
- WebAPI versioning
Il contesto d’uso è:
- Azure
- ASP.NET Core
- Visual Studio 2017
…e se rimane tempo, altri scenari di versioning and update
4. WebApp Slots
In generale si usano almeno tre slots:
• Develop
• Staging
• Production
Ma nessuno vieta di usarne altri:
• Test
• Q&A
• …
5. Slot di uso comune
Development
• L’ambiente di sviluppo è quello in cui si pubblica una versione durante lo
sviluppo di una o più funzionalità
Staging
• Per convenzione è l’ambiente in cui si fanno gli ultimi controlli prima di andare
in produzione, quindi è un ambiente che ricrea il più fedelmente possibile le
condizioni d’uso dell’ambiente di produzione.
Production
• Questo ambiente è quello che usano gli utenti quindi qui deve arrivare solo
ciò che funziona, dopo aver passato tutti i test funzionali e di integrazione,
con tutti i requisiti di quality assurance.
6. WebApp Slots in Azure
Per usare gli slot in Azure, occorre utilizzare un piano Standard o Premium
9. Configurazione degli slot
Per utilizzare i diversi slot occorre definire:
• Le impostazioni di slot che vengono scambiate
• Le impostazioni di slot che non vengono scambiate
• I diversi profili di pubblicazione su Visual Studio e/o gli strumenti di CI/CD
10. Impostazioni che vengono scambiate tra slot
Vi sono impostazioni che devono essere scambiate durante uno swap, perché
sono proprie dell’applicazione che viene spostata da uno slot all’altro:
• Impostazioni generali, quali la versione del framework, 32/64 bit, i socket Web
• Impostazioni app configurate per adattarsi a uno slot
• Stringhe di connessione configurate per adattarsi a uno slot
• Mapping dei gestori
• Impostazioni di monitoraggio e diagnostica
• Contenuto WebJobs
11. Impostazioni che non vengono scambiate tra slot
Vi sono impostazioni che non devono essere modificate durante uno swap,
perché sono proprie di quello specifico slot:
• Endpoint di pubblicazione
• Nomi di dominio personalizzati
• Certificati e associazioni SSL
• Impostazioni di scalabilità
• Utilità di pianificazione WebJobs
• Stringhe di connessione specifiche di uno slot
12. Gestione della connessione al database
Database di sviluppo ≠ Database di produzione !!!
Quello di sviluppo conterrà dati di prova utili ai diversi test di integrazione e
sarà oggetto di modifiche sia strutturali che di contenuto.
Per quanto riguarda lo staging, il discorso si fa più complesso e andrà applicata
la strategia più adatta per il progetto in questione, come l’intera replica del
database di produzione oppure solo di un suo sottoinsieme significativo.
14. Slot App Settings
Le impostazioni dell’app si riferiscono allo slot di default (production). Per
modificare le impostazioni degli altri slot, selezionare prima lo slot:
15. Scambio con anteprima (swap multifase)
Quando si usa l'opzione Scambio con anteprima vengono effettuate le seguenti
operazioni:
• Lo slot di destinazione non viene modificato.
• Vengono applicati gli elementi di configurazione dello slot di destinazione allo slot
di origine.
• Riavvio dei processi di lavoro nello slot di origine usando la nuova configurazione.
• Al completamento dello scambio: lo slot di origine viene spostato nello slot di
destinazione e lo slot di destinazione viene spostato nello slot di origine come in
uno scambio manuale.
• In caso di annullamento dello scambio: gli elementi di configurazione dello slot di
origine vengono riapplicati allo slot di origine.
16. Scambio automatico
Lo scambio automatico semplifica gli scenari nei quali si vuole distribuire
continuamente l'app senza avvio a freddo e senza tempi di inattività.
Quando uno slot di distribuzione viene configurato per lo scambio automatico
in produzione, ogni volta che si esegue il push dell'aggiornamento del codice in
tale slot, il servizio app eseguirà automaticamente lo scambio dell'app in
produzione dopo che è stato eseguito il warm up nello slot di origine.
18. WebApp Slots in ASP.NET Core
• ASP.NET Core è già da qualche mese in RTM
• Visual Studio 2017 è in dirittura d’arrivo.
• Le novità sono tantissime e i vantaggi offerti da ASP.NET Core sono tali da
renderlo sicuramente preferibile a molti altri framework di sviluppo di
applicazioni Web e WebAPI, incluso NodeJS.
Per questo motivo è importante vedere cosa cambia nell’uso degli slot per
quanto riguarda le Web App realizzate in ASP.NET Core.
19. Lavorare in ambienti multipli con ASP.NET Core
• ASP.NET Core introduce un miglior supporto per la gestione e il controllo del
comportamento dell’applicazione nei diversi slot di sviluppo, staging e
produzione.
• Valori di ambiente vengono utilizzati per indicare l’ambiente in cui
l’applicazione sta girando, consentendo un’appropriata configurazione della
stessa.
20. Impostare l’ambiente
• Utilizzare una variabile di configurazione del progetto può essere molto
pericoloso, perché è facile dimenticare una impostazione utilizzata per lo
sviluppo che viene poi pubblicata insieme al progetto nell’ambiente di
produzione.
• Per questo motivo ASP.NET Core utilizza valori propri del contesto di
esecuzione:
• In locale, vengono usate le variabili d’ambiente del PC.
• Su Azure, vengono utilizzati gli App Settings.
• Per convenzione, il nome della variabile è ASPNETCORE_ENVIRONMENT.
• Se su Azure la variabile non è definita, il valore d’ambiente è Production.
21. Gestire l’impostazione di ambiente con VS 2017
Per quanto riguarda l’ambiente di sviluppo da Visual Studio è facile definire la
variabile ASPNETCORE_ENVIRONMENT (ed eventuali altre variabili) via GUI, i
cui valori verranno salvati nel file launchSettings.json
22. Gestire l’impostazione di ambiente senza VS 2017
Se non si utilizza Visual Studio, è sempre possibile impostare manualmente la
variabile da Windows, Unix e OSX:
23. Utilizzare la variabile d’ambiente a runtime
• ASP.NET Core offre un servizio IHostingEnvironment che può essere
iniettato nella logica di startup o nei controller.
• Ad esempio, nella classe startup.cs generata dal template di VS:
24. IHostingEnvironment
• Il servizio IHostingEnvironment un’astrazione di base per lavorare con i diversi
ambienti (locale o di pubblicazione)
• Tramite l’istanza di una classe che implementa l’interfaccia di tale servizio, è
possibile conoscere l’ambiente in cui sta girando l’applicazione.
• Se occorre sapere il nome, basta utilizzare la proprietà EnvironmentName.
• Altrimenti è preferibile utilizzare il metodo
IsEnvironment(string environmentName)
che ignora i caratteri in maiuscolo, sia nella variabile di ambiente sia nel
parametro passato al metodo.
25. Environment tag helper
Nelle View è possibile utilizzare sia la tecnica di service injection sia il tag helper
Environment:
27. WebAPI con ASP.NET Core
• Se prima esistevano due tipi di progetto diversi, uno per le Web App e l’altro
per le WebAPI, con funzionamento simile ma basato su librerie differenti, ora
con ASP.NET Core abbiamo tutto nello stesso progetto.
• La gestione del Routing viene fatta come prima, a livello di Controller:
28. WebAPI Netiquette
Poiché una WebAPI altro non è che un servizio RESTful che viene esposto
all’esterno per essere utilizzato da altri, è molto importante:
• Definire una strategia di versioning
• Documentare in moto puntuale l’API (Application Program Interface)
29. WebAPI Versioning
Poiché l’API esposta da un servizio è inevitabilmente soggetta a cambiamento
nel corso del tempo, una corretta strategia di versioning consente tali modifiche
senza "rompere" il funzionamento di altre applicazioni che utilizzano tale
servizio.
Un metodo molto semplice è quello di utilizzare nelle classi Controller una
dichiarazione di Route che contenga esplicitamente il numero di versione:
30. Documentazione dell’API
Un ottimo sistema di documentazione è Swagger, che consente di descrivere
l’API di un servizio REST con un linguaggio JSON-like.
Per i progetti ASP.NET Core è disponibile sotto forma di pacchetto NuGet la
libreria Swashbuckle.AspNetCore, che è in grado di produrre tale
documentazione in modo automatico a partire dal codice contenuto nelle varie
classi Controller.
Le informazioni d’uso si trovano su GitHub all’indirizzo:
https://github.com/domaindrivendev/Swashbuckle.AspNetCore
34. Feedback Form
Compilate il feedback form!!
Aiutateci a migliorare la qualità degli eventi!!!
Track A
http://svy.mk/2l9THNc
Track B
http://svy.mk/2leDPWR