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?
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaAndrea Dottor
Sfrutta le tue abilità come sviluppatore web per creare app mobile per Windows Phone, iOS ed Android utilizzando una unica code-base (composta da codice HTML, CSS e JavaScript) e lavora direttamente in Visual Studio. Questo è ora possibile grazie all'estensione "Multi-Device Hybrid Apps for Visual Studio" ed all'uso di Apache Cordova. Un unico IDE ed un singolo progetto per sviluppare per le più diffuse piattaforme mobile.
In questa sessione scopriremo i vantaggi di questa combinazione e daremo risposta ad alcune domande: Quali vantaggi abbiamo dall'utilizzare Visual Studio? Perchè e quando sviluppare un'app ibrida? ...
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.
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
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 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.
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaAndrea Dottor
Sfrutta le tue abilità come sviluppatore web per creare app mobile per Windows Phone, iOS ed Android utilizzando una unica code-base (composta da codice HTML, CSS e JavaScript) e lavora direttamente in Visual Studio. Questo è ora possibile grazie all'estensione "Multi-Device Hybrid Apps for Visual Studio" ed all'uso di Apache Cordova. Un unico IDE ed un singolo progetto per sviluppare per le più diffuse piattaforme mobile.
In questa sessione scopriremo i vantaggi di questa combinazione e daremo risposta ad alcune domande: Quali vantaggi abbiamo dall'utilizzare Visual Studio? Perchè e quando sviluppare un'app ibrida? ...
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.
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
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 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.
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.
Cos'è la UI Composition e che problemi può risolvere
Perchè MVVM e WPF sono importanti per la UI Composition
Il concetto di 'region' e 'UI Injection'
Analisi del toolkit PRISM di Microsoft e cosa comporta realizzarsene uno in proprio.
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.
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMCodemotion
"Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM" by Matteo Pagani.
Xamarin è una delle tecnologie più interessanti quando si parla di sviluppo cross-platform, in quanto permette di riutilizzare le proprie conoscenze di C# per realizzare applicazioni con le stesse feature e performance di un'applicazione nativa. Usare Xamarin, però, non significa solamente poter realizzare app Android e iOS in C#, ma anche e soprattutto non dover scrivere e mantenere codebase completamente diverse. In questa sessione vedremo come poter massimizzare il riutilizzo di codice tra le diverse versioni della nostra applicazioni, aiutandoci con il pattern MVVM.
Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...Codemotion
In questo Talk verrà presentata una tra le più moderne e produttive piattaforme di sviluppo embedded attualmente esistenti: il .NET Micro Framework di Microsoft (.NETMF).
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEDotNetCampus
Questa sessione tratterà delle implementazioni di architetture robuste e scalabili, in scenari di sviluppo applicativi rientranti nella tipologia dei Software as a Service. In particolare vedremo come accopiare le feature e le necessità del SaaS con servizi propri presenti su Azure; con focus su web, servizi mobili, data, e notification.
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.
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/
Dal RenderFragment ai Generics, tips for Blazor developersAndrea Dottor
Sessione tenuta alla Blazor Conference 2021 del 13.04.2021.
(https://www.aspitalia.com/eventi/87/Blazor-Conference-2021-Online.aspx)
Una sessione dove verranno presentati una serie di tips per migliorare e facilitare la scrittura delle nostre applicazioni: da codice html dinamico, al miglioramento ed organizzazione dello stesso. Il tutto per poter sfruttare ogni bit che Blazor può dare. Dal RenderFragment ai Generics. Consigli che arrivano da esperienze reali
Codice: https://github.com/andreadottor/XE.Dottor.Demo.BlazorWebApp
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
Continuous Integration con SQL Server. Come automatizzare i processi di build e di test su database SQL Server. Come includere SQL Server nei processi di Application Lifecycle Management (Database Lifecycle Management).
FAST è una raccolta di tecnologie, basate su Web Components e su Web Standards moderni, che ci aiuta ad affrontare in modo efficiente alcune delle sfide più comuni nella progettazione e nello sviluppo di siti ed applicazioni Web.”
FAST ci aiuta a creare interfacce si adattano facilmente a qualunque Design System e che possono essere utilizzate con qualsiasi framework!
In questa sessione vedremo come uno sviluppatore WebForm possa essere velocemente produttivo (utilizzando le ultime versioni di ASP.NET Core) grazie a Blazor. Vedremo quindi cosa differenza un'applicazione ASP.NET Core, rispetto a quelle WebForm (.NET Framework) fino ad arrivare a comprendere perchè e come Blazor possa agevolare questa transizione.
Quindi una sessione non solo per chi è nuovo a Blazor, ma anche perchì ancora non ha migrato ad ASP.NET Core.
Sessione per NetCampus 2015. La diffusione sempre più ampia di applicazioni sviluppate interamente in HTML5 e JS richiede l'adozione di processi di automazione per la fase di build, testing e rilascio. In questa sessione vedremo quali sono i principali strumenti a nostra disposizione per semplificare queste fasi dello sviluppo.
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.
Cos'è la UI Composition e che problemi può risolvere
Perchè MVVM e WPF sono importanti per la UI Composition
Il concetto di 'region' e 'UI Injection'
Analisi del toolkit PRISM di Microsoft e cosa comporta realizzarsene uno in proprio.
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.
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMCodemotion
"Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM" by Matteo Pagani.
Xamarin è una delle tecnologie più interessanti quando si parla di sviluppo cross-platform, in quanto permette di riutilizzare le proprie conoscenze di C# per realizzare applicazioni con le stesse feature e performance di un'applicazione nativa. Usare Xamarin, però, non significa solamente poter realizzare app Android e iOS in C#, ma anche e soprattutto non dover scrivere e mantenere codebase completamente diverse. In questa sessione vedremo come poter massimizzare il riutilizzo di codice tra le diverse versioni della nostra applicazioni, aiutandoci con il pattern MVVM.
Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...Codemotion
In questo Talk verrà presentata una tra le più moderne e produttive piattaforme di sviluppo embedded attualmente esistenti: il .NET Micro Framework di Microsoft (.NETMF).
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEDotNetCampus
Questa sessione tratterà delle implementazioni di architetture robuste e scalabili, in scenari di sviluppo applicativi rientranti nella tipologia dei Software as a Service. In particolare vedremo come accopiare le feature e le necessità del SaaS con servizi propri presenti su Azure; con focus su web, servizi mobili, data, e notification.
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.
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/
Dal RenderFragment ai Generics, tips for Blazor developersAndrea Dottor
Sessione tenuta alla Blazor Conference 2021 del 13.04.2021.
(https://www.aspitalia.com/eventi/87/Blazor-Conference-2021-Online.aspx)
Una sessione dove verranno presentati una serie di tips per migliorare e facilitare la scrittura delle nostre applicazioni: da codice html dinamico, al miglioramento ed organizzazione dello stesso. Il tutto per poter sfruttare ogni bit che Blazor può dare. Dal RenderFragment ai Generics. Consigli che arrivano da esperienze reali
Codice: https://github.com/andreadottor/XE.Dottor.Demo.BlazorWebApp
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
Continuous Integration con SQL Server. Come automatizzare i processi di build e di test su database SQL Server. Come includere SQL Server nei processi di Application Lifecycle Management (Database Lifecycle Management).
FAST è una raccolta di tecnologie, basate su Web Components e su Web Standards moderni, che ci aiuta ad affrontare in modo efficiente alcune delle sfide più comuni nella progettazione e nello sviluppo di siti ed applicazioni Web.”
FAST ci aiuta a creare interfacce si adattano facilmente a qualunque Design System e che possono essere utilizzate con qualsiasi framework!
In questa sessione vedremo come uno sviluppatore WebForm possa essere velocemente produttivo (utilizzando le ultime versioni di ASP.NET Core) grazie a Blazor. Vedremo quindi cosa differenza un'applicazione ASP.NET Core, rispetto a quelle WebForm (.NET Framework) fino ad arrivare a comprendere perchè e come Blazor possa agevolare questa transizione.
Quindi una sessione non solo per chi è nuovo a Blazor, ma anche perchì ancora non ha migrato ad ASP.NET Core.
Sessione per NetCampus 2015. La diffusione sempre più ampia di applicazioni sviluppate interamente in HTML5 e JS richiede l'adozione di processi di automazione per la fase di build, testing e rilascio. In questa sessione vedremo quali sono i principali strumenti a nostra disposizione per semplificare queste fasi dello sviluppo.
Getting started with MVC 5 and Visual Studio 2013Thomas Robbins
The ASP.NET MVC Framework provides a powerful Model View Controller (MVC) approach to building web applications and provides separation of concerns, control over HTML output, intuitive URLs, and increased testability. We will start by looking at the what and why of ASP.NET MVC. Then we will explore the various pieces of ASP.NET MVC including routes, controllers, actions, and views. If you are looking to get started with MVC then don’t miss this session.
Il buon programmatore - consigli pratici per una vita feliceAndrea Dottor
Lavorando come consulente mi sono trovato spesso di fronte a problematiche (a volte banali), ma che erano la causa di gravi problemi di performance dell'appliccazione realizzata, oppure più banali, ma che rendevano il codice meno manutenibile e gestibile, specialmente lavorando in team. Vedere che nel tempo, persone/realtà diverse, commettono gli stessi errori mi ha fatto pensare a questa sessione...dove intendo elencare i problemi più comuni, che per causa di tempo o scarsa conoscenza, vengono commessi, e proporre delle soluzioni semplici da poter applicare fin da subito. (ASP.NET, ma non solo)
Working between the clouds (versione completa)Davide Cerbo
Da un po' di tempo a questa parte quando uno sviluppatore software sente la parola "Clouds" non pensa più alle nuovole, ma a...? Durante l'intervento risponderò a questa domanda e mostrerò come una applicazione web sviluppata con Spring Framework, Apache Maven e JPA può essere installata facilmente e (quasi) gratuitamente sulla piattaforma per il cloud computing messa a disposizione da Google. Vedremo poi come applicare i principali pattern relativi alla scalabilità utilizzando gli strumenti messi a disposizione dalla piattaforma di Google.
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013Massimo Caliman
Introduzione a Google App Engine:Cosa è Google App Engine,Linguaggi di programmazione supportati
L'ambiente di Runtime,Static File Servers
Datastore,Services,Namespaces,Google Accounts, OpenID, e OAuth,Task Queues e Cron Jobs,Developer Tools,Administration Console.
Differenze tra Alfresco Community ed EnterpriseSoftInstigate
Quali sono le principali differenze tra Alfresco Community ed Enterprise? Lo scopo di questo webinar in italiano è illustrare i servizi a valore aggiunto che la versione professionale e stabile di Alfresco mette a disposizione di system integrator e clienti finali. Partecipa se vuoi comprendere come funziona l’abbonamento Alfresco Enterprise, la manutenzione, il supporto tecnico, gli stack commerciali certificati, la consulenza e tutte le tecnologie aggiuntive (clustering, monitoraggio, tuning, configurazione a caldo, integrazioni con SAP, Kofax, XAM, …) della versione a pagamento di Alfresco, progettata per ambienti “mission critical” e supportata dal produttore.
Dependency injection questa sconosciutaAndrea Dottor
L'uscita di ASP.NET Core ha portato a una maggiore diffusione dell'utilizzo della DI (Dependency Injection) ma spesso senza che lo sviluppatore sappia la sua reale utilità o potenzialità.
Dependency Injection, uno dei design pattern della programmazione OOP. Una best-practice dello sviluppo che può portare alla semplificazione del codice scritto, facilitare il disacoppiamento, e migliorare la testabilità.
In questa sessione vedremo cos'è la DI e come utilizzarla intelligentemente all'interno dei nostri progetti.
Slide dell'evento "XE One Day - Good code" tenuto il 15.09.2018.
Il codice è disponibile alla pagina dell'evento https://www.xedotnet.org/eventi/one-day-good-code/
Slide della sessione tenuta alla Blazor Conf 2022 (https://blazorconf.it/)
Sono convinto che uno sviluppatore Blazor debba conoscere JavaScript in quanto molte librerie (d'uso comune) non le troviamo disponibili su NuGet. Interagire con Google Maps, visualizzare dei grafici, utilizzare API del browser, ... In questa sessione vedremo come far dialogare questi due mondi che sono molto più vicini e lagati di quello che si pensa, ed il tutto con una serie di esempi pratici (e reali).
Stanco delle solite sessioni introduttive o generiche su blazor? Bene, questa è la serata che fa per te.
In questa sessione ho raccolto una serie di argomenti, problematiche e tips derivanti da due anni di utilizzo di Blazor (praticamente dal suo lancio). Casi reali affrontanti e risolti.
E come nel (ormai) classico format online di XE, ci sarà ampio spazio per le domande ed il confronto.
Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check ...Andrea Dottor
In questa sessione scopriremo come utilizzare al meglio di Health Check, funzionalità che è stata introdotta in ASP.NET ancora dalla versione 2.2, ma che poche applicazioni sfruttano.
Uno strumento davvero utile anche per un primo debug, o per una semplice verifica dello stato delle nostre applicazioni...e non solo per chi utilizza container e orchestratori.
Cosa ci permettono di sapere gli Health Check?
Come possiamo essere notificati se qualcosa non va nel verso giusto?
A queste e ad altre domande daremo risposta nel corso della sessione
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.
In questa sessione andremo in dettaglio sulle principali novità introdotte nella versione 3.0 di ASP.NET Core.
Code: https://github.com/andreadottor/VSSaturdayPN2019
In ASP.NET Core 3.0 è stato introdotto il supporto a gRPC, una framework altamente performante per fare Remote Procedure Call (RPC). Leggero e molto efficiente, supportato da molti linguaggi, supporto ad una comunicazione bidirezionale, riduzione del consumo di banda...solo questi solo alcuni dei vantaggi che descrivono gRPC, e che durante la sessione cercheremo di capire se siano reali o meno.
Fatto sta che è una tecnologia assolutamente da conoscere e sfruttare nello sviluppo di app moderno, e non solamente in ambito web.
Codice: https://github.com/andreadottor/XE.Dottor.gRPC
Evento: https://www.xedotnet.org/eventi/grpc-and-c-optimising-night/
Real case: migrate from Web Forms to ASP.NET Core graduallyAndrea Dottor
Many application are developed in Web Forms and cannot be automatically converted to ASP.NET Core. Wait for rewrite all application in many case are impossible.
In this session are explained a way to gradually migrate to the new tecnology, and all the tricks for run the applications side by side (during the migration). And only when all are complete, dismiss the old. A real world case.
Slide dell'evento One Day Cache (http://www.xedotnet.org/eventi/one-day-performance-optimization/)
ABSTRACT: Cache, amica e nemica di molti dev.
Uno dei modi per incrementare le performance di un'applicativo è l'utilizzo della cache, ma non è tutto oro quel che luccica.
In questa sessione vedremo quali tipologie di cache esistono, ed il come poterle utilizzare al meglio. Output cache, cache applicativa, Redis, Memcached...cerchiamo di fare un pò di chiarezza e capiamo i pro e contro delle varie soluzioni.
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.
Sessione tenuto presso la fiera "Punto di incontro" di Pordenone in data 03.11.2016
"L’evoluzione del web. Andrea Dottor, consulente informatico,
Microsoft MVP e docente ITS, illustra il percorso di
studi dando spazio ad alcune tecnologie/framework come
AngularJS e Bootstrap, spiegando perché saranno alla
base delle applicazioni del futuro."
Creare API pubbliche, come evitare gli errori comuniAndrea Dottor
Cerchiamo di capire cosa vuol dire creare delle API pubbliche. Cerchiamo di capire cosa offre ad oggi ASP.NET, e come utilizzare al meglio la tecnologia. L'intenzione è di andare in dettaglio su problematiche spesso sottovalutate: serve sempre ASP.NET Web API? E' meglio WCF? Quali problematiche possono capitare? Come faccio il versionamento? Quali oggetti/classi espongo? E la documentazione?
XeDotNet meeting del 5 Marzo 2013
In questa sessione vedremo come Knockout.js permetta di scrivere codice JavaScript in modo pulito e organizzato, semplificando la scrittura del codice e la sua manutenzione. Come lo si utilizza KO? Quali vantaggi ci offre? Quali librerie ci vengono in aiuto? Quali sarebbe meglio evitare?
2. Perché questa sessione?
Da consulenze/sviluppo di soluzioni reali
Spesso si sviluppa non pensando alle prestazioni
"Tempo è denaro"
Spesso è il cliente/utente che fa notare la lentezza
dell'applicazione
Dalla sessione "Architettura di
Stackoverflow" di Marco Cecconi
Alcune note:
Metodo YAGNI
No Dependency Injection, no Providers, no…
Custom ORM (no Entity Framework, no NHibernate)
Soluzione composta da (soli) 8 progetti
3. Da tenere sempre a mente
KISS
http://it.wikipedia.org/wiki/KISS_(informatica)
KISS è un acronimo usato nell'informatica, che sta
per Keep It Simple, Stupid, ossia "rimani sul semplice,
stupido
YAGNI
http://en.wikipedia.org/wiki/You_aren't_gonna_need_it
"You aren't gonna need it" (acronym: YAGNI) is a
principle of extreme programming (XP) that states a
programmer should not add functionality until
deemed necessary
4. Come capire dove intervenire?
Navigazione da browser
Test di carico
Performance counter
Profiler / Tracert / Logging
SQL Profiler
6. Performance Counter
Esistono Performance Counter specifici
per ASP.NET (e suoi componenti)
Permettono di monitorare lo stato
dell'applicazione, e l'uso che viene fatto
delle risorse (cache, session, …)
Possono venir messi a confronto con i performance
counter di sistema per capire la causa di
rallentamenti/blocchi
NOTE: attenzione che ogni counter ha
una propria scala/range di valori
7. Performance Counter ASP.NET
Requests Failed
The total number of failed requests. Any status codes greater
than or equal to 400 will increment this counter.
Requests/Sec
The number of requests executed per second.
Requests Queued
The number of requests waiting for service from the queue.
Request Wait Time
The number of milliseconds that the most recent request
waited in the queue for processing.
Pipeline Instance Count
The number of active request pipeline instances for the
specified ASP.NET application. Since only one execution thread
can run within a pipeline instance, this number gives the
maximum number of concurrent requests that are being
processed for a given application.
8. Performance Counter ASP.NET
Errors During Execution
The total number of errors that occur during the
execution of an HTTP request, excluding parser and
compilation errors.
Errors Unhandled During Execution
The total number of unhandled errors that occur
during the execution of HTTP requests.
9. Performance Counter ASP.NET
Sessions Active
The number of sessions currently active. This counter is
supported only with in-memory session state.
Sessions Total
The total number of sessions. This counter is supported
only with in-memory session state.
Session SQL Server Connections Total
The total number of session-state connections made to
the computer on which out-of-process session-state
data is stored.
State Server Sessions Active
The number of currently active user sessions. This
counter is available only on the computer where the
state server service (aspnet_state) is running.
10. Performance Counter ASP.NET
Cache Total Entries
The total number of entries in the cache. This counter
includes both use of the cache by the ASP.NET page
framework and use of the application cache through
cache APIs.
Cache Total Turnover Rate
The number of additions and removals to the cache per
second, which is useful in helping to determine how
effectively the cache is being used. If the turnover rate is
high, the cache is not being used efficiently.
Per monitorare solo la Cache API:
Cache API Entries
Cache API Turnover Rate
11. Performance counter
Potete creare dei vostri Performance
Counter
Utili per poter monitorare valori/dati che vi sono
utili a capire l'utilizzo della vostra applicazione
Link: https://www.simple-talk.com/dotnet/performance/building-performance-
metrics-into-asp.net-mvc-applications/
Potete salvare i dati recuperati dai
counter:
Utile per analizzarli in un secono momento
http://technet.microsoft.com/en-us/library/cc722148.aspx
14. Test di carico
Permettono di portare alla luce eventuali
errori che compaiono "solamente" quando
l'applicazione è sotto stress
Problemi di memory leak
Problemi di concorrenza/thread safety
Problemi dovuti ad un server sottodimensionato
CPU al 100%
Memoria RAM occupata
Problemi di connettività/banda
I Web Load & Performance Testing sono
presenti sono nella versione Ultimate di
Visual Studio
15. Test di carico
Non eseguire i test di carico dalla stessa
macchina che ospita l'applicazione
Utilizzare più Test Agents (distribuiti) per
eseguire i test
Possibilità di sfruttare Microsoft Azure
per automatizzare il tutto
Oppure sfruttare le Virtual Machine/WorkerRole per
scalare i Test Agents
http://msdn.microsoft.com/en-us/library/ms182594.aspx
18. SQL Profiler
Permette di monitorare l'uso che viene
fatto del database
Di conseguenza anche il codice di accesso ai dati
Utile per scoprire chiamate non
necessarie
Utile per scoprire chiamate duplicate
19. MiniProfiler
Libreria che permette di profilare la
chiamate verso il database, e gli eventi
di ASP.NET
MVC, WCF
Entity Framework, Raven DB, Mongo DB,
DbConnection, DbCommand, …
…
Sviluppato dal team di StackOverflow e
rilasciato come OpenSource
http://miniprofiler.com/
Nuget: Install-Package MiniProfiler
Possibilità di profilare codice custom
22. Cache
Non esiste solo HttpContext.Cache
HttpContext.Items
Per eseguire cache di dati per la richiesta corrente
HttpContext.Application
Per dati che non cambiano durante il ciclo di vita
dell'applicazione
Non thread-safe
System.Runtime.Caching
Non ha dipendenze da System.Web
http://msdn.microsoft.com/en-us/
library/system.runtime.caching(v=vs.110).aspx
Deriva dall'Enterprise Library Caching Application Block
Presente da .NET Framework 4.0
23. Ma se più app accedono agli stessi dati?
La cache di ASP.NET diventa un limite
Ci si deve appoggiare ad una
cache/servizio esterno alle applicazioni
Alcune soluzioni:
AppFabric
Redis
Memcached
In alcune realtà ci sono server dedicati a
gestire solo la cache
24. Windows Server AppFabric
Estende Windows Server in modo da
poter genstire e monitorare una cache
applicativa centralizzata
Servizio scalabile
Possibilità di gestire anche le Sessioni
ASP.NET
Possibilità di taggare gli oggetti in cache
NOTE: non installabile in Windows
Server Web Edition
25. Redis
http://redis.io/
In-memory
Key-Value store
Scalabile
(è possibile attivare la persistenza)
Microsoft ha eseguito il porting per
Windows
https://github.com/MSOpenTech/redis
Librerie clients disponibili per molti
linguaggi
Altamente performante
27. NOTE:
Attenzione che gli oggetti che inserite in
cache devono essere Serializzabili
Non inserite in cache oggetti compilati
dinamicamente
Attenzione che gli oggetti non siano dei
proxy (es con Lazy Loading)
29. Second Level Cache for Entity Framework
https://efcache.codeplex.com/
Implementazione del CachingProvider di
Entity Framework
Permette di mantenere in cache il
risultato delle query
Viene gestita anche l'invalidazione dei
dati in cache
30. Output-cache
Permette di ritornare il rendering di una
pagina/view/userControl/partialView
senza doverla ricompilare ed eseguire
Possibilità di specificare quali
chiavi/metodo utilizzare come chiavi per
il riuso
Riduce notevolmente il carico di lavoro
del server
Non utilizzarla in pagine con dati che
variano di frequente
32. CDN – Content Delivery Network
Utilizzare CDN o un secondo dominio per
tutti i file statici
I browser hanno un limite per il numero di
connessioni/richieste contemporanee verso
lo stesso dominio
Includere immagini/file in un secondo dominio permette
di aumentare il numero di download contemporanei del
browser
Utilizzare librerie su CDN pubbliche
aumenta la possibilità che queste siano già
presenti nella cache del browser
Enabling CDN for Azure Websites
http://azure.microsoft.com/blog/2014/09/18/enabling-cdn-
for-azure-websites/
33. Cache static content
Tramite il web.config è possibile
specificare dei parametri per forzare la
cache (lato client) di file statici
Immagini
CSS
JavaScript
…
<system.webServer>
<staticContent>
<clientCache cacheControlMaxAge="7.00:00:00" cacheControlMode="UseMaxAge" />
</staticContent>
</system.webServer>
35. ASP.NET App Suspend
Possibilità di sospendere un'applicazione
(invece che terminarla) dopo un tempo
di inattività
Da IIS8, Windows Server 2012 R2,
Framework 4.5.1
Riduzione dei tempi di avvio
Parametro dell'ApplicationPool
36. Links
Performance Counters for ASP.NET
http://msdn.microsoft.com/en-us/library/vstudio/fxk122b4(v=vs.100).aspx
Building Performance Metrics into ASP.NET MVC
Applications
https://www.simple-talk.com/dotnet/performance/building-performance-metrics-into-asp.net-mvc-applications/
Introduzione a Windows Server AppFabric
http://msdn.microsoft.com/en-us/library/hh351318.aspx
Redis on Windows
https://github.com/MSOpenTech/redis
StackExchange.Redis
https://github.com/StackExchange/StackExchange.Redis
Conditional GET
http://optimizeasp.net/conditional-get
Enabling CDN for Azure Websites
http://azure.microsoft.com/blog/2014/09/18/enabling-cdn-for-azure-websites/
Plugin per Fiddler – Stress Stimulus
http://www.stresstimulus.com/
Architettura di Stackoverflow
Video: https://www.youtube.com/watch?v=t6kM2EM6so4
Slide: http://www.slideshare.net/howtoweb/marco-cecconi-stack-overflow-architecture