xedotnet.org
Andrea Dottor
@dottor
Blazor ha vinto?
Storie di casi reali
Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi reali
Blazor is a framework for building interactive client-side web UI with .NET:
• Create rich interactive UIs using C# instead of JavaScript.
• Share server-side and client-side app logic written in .NET.
• Render the UI as HTML and CSS for wide browser support, including mobile browsers.
• Integrate with modern hosting platforms, such as Docker.
Using .NET for client-side web development offers the following advantages:
• Write code in C# instead of JavaScript.
• Leverage the existing .NET ecosystem of .NET libraries.
• Share app logic across server and client.
• Benefit from .NET's performance, reliability, and security.
• Stay productive with Visual Studio on Windows, Linux, and macOS.
• Build on a common set of languages, frameworks, and tools that are stable, feature-
rich, and easy to use.
Cos'è Blazor
https://docs.microsoft.com/en-us/aspnet/core/blazor/
Blazor Server
Blazor WebAssembly
Performance improvements
• "For .NET 5, we made significant improvements to Blazor WebAssembly runtime
performance with a specific focus on complex UI rendering and JSON serialization.
In our performance tests, Blazor WebAssembly in .NET 5 is two to three times
faster for most scenarios."
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-5-release-candidate-1/#blazor-
webassembly-performance-improvements
Debugging improvements
• "Debugging Blazor WebAssembly apps is improved in ASP.NET Core 5.0.
Additionally, debugging is now supported on Visual Studio for Mac"
https://docs.microsoft.com/en-us/aspnet/core/blazor/debug
Trimming/linking improvements
• "Blazor WebAssembly performs Intermediate Language (IL) trimming/linking
during a build to trim unnecessary IL from the app's output assemblies. With the
release of ASP.NET Core 5.0, Blazor WebAssembly performs improved trimming
with additional configuration options"
https://docs.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/configure-trimmer
Dove siamo arrivati (con .NET 5)
Lazy load assemblies
• https://docs.microsoft.com/en-us/aspnet/core/blazor/webassembly-lazy-load-assemblies
Blazor JavaScript isolation
• https://docs.microsoft.com/en-us/aspnet/core/blazor/call-javascript-from-dotnet?view=aspnetcore-5.0#blazor-
javascript-isolation-and-object-references
Prerendering for Blazor WebAssembly
• https://docs.microsoft.com/en-us/aspnet/core/blazor/components/prerendering-and-integration
Protected Browser Storage for Blazor Server
• https://docs.microsoft.com/it-it/aspnet/core/blazor/state-management#aspnet-core-protected-browser-storage
New components
• InputFile, InputRadio, InputRadioGroup
Dove siamo arrivati (con .NET 5)
AOT Compilation
Drag & Drop
Hot Reload (via dotnet watch)
…
https://github.com/dotnet/aspnetcore/issues/27883
https://github.com/dotnet/aspnetcore/projects/15#card-49713369
[WIP] ASP.NET Core 6 Roadmap
Curva di apprendimento (relativamente bassa)
• per essere produttivi da subito --> ASP.NET Core
• con un minimo di formazione --> per chi usa ASP.NET MVC
• con la "sola" formazione su HTML e Razor --> per chi conosce C#
Curva di apprendimento
https://jaxenter.com/blazor-2020-167525.html
"One thing that shocked me about Blazor is how genuinely
simple it feels to use. Blazor combines the ease of Razor with
other .NET concepts. It has borrowed the best patterns from
popular JavaScript frameworks like Angular and React while
leveraging Razor templates and provided parity with other .NET
conventions. This combination of features allows for the reuse
of skills in a way that was unavailable before. The same could
be said for Node developers who use one language and familiar
concepts in full stack JavaScript apps."
Blazor in 3 casi reali (+1)
Azienda: Hunext
Migrazione dell'applicativo Ufficio Web verso ASP.NET Core
• Applicazione sviluppata con:
• Visual Basic .NET
• C#
• Web Form
• ASP.NET MVC (per le API REST)
Nuovi applicativi ASP.NET Core
Scenario _1
Azienda: Hunext
Porting di applicativi desktop nel web
• Applicazioni Visual Basic 6
• Applicazioni Access
Necessità di offrire un'usabilità che si avvicini a quella che
gli utenti conoscono nel mondo desktop
Scenario _2
Azienda: Quantumdatis
Sviluppo di un'applicazione web per la gestione e
generazione di report di Reporting Service
• Windows Authentication
• Login
• Accesso al db
• Accesso ai servizi
• Uso delle API di Reporting Services
* Il team ha conoscenze di sviluppo desktop e ma non ha mai usato ASP.NET
Scenario _3
Marco Bortolin
HUNEXT:
Da WebForm a .NET Core
Scenario _1
Applicazione WebForm da migrare/portare verso .NET Core
Applicazione WebForm da migrare/portare verso .NET Core
1. Adozione localizzata di Blazor nella riscrittura delle sole funzionalità che
richiedono maggiore interattività/dinamismo
• Utilizzo dei Razor Component
2. Blazor server-side permette il riuso di codice esistente
3. Blazor ha alcune similitudini con WebForm
• Mantenimento dello stato dei controlli
• Modello Event-Driven
Applicazione WebForm da migrare/portare verso .NET Core
Permettono l'adozione di Blazor in aree localizzate dell'applicazione
• File con estensione .razor
• Fanno da entry-point ad applicazioni Blazor
• Accettano parametri in ingresso
Il prodotto non si vincola ad una particolare tecnologia client
Razor Component
@(await Html.RenderComponentAsync<Pager>(
new {
pageNumber = Model.PageNumber,
totalRecords = 150,
pageSize = 20,
linkUrl = Url.PageLink("Index")
}))
Utilizzo dei Razor Component
Se l'accesso ai dati (lettura e salvataggio) viene fatto tramite API
rest, un'eventuale migrazione verso Blazor WebAssembly è più
facile
Un occhio al futuro
1. Adozione localizzata di Blazor nella riscrittura delle sole funzionalità che
richiedono maggiore interattività/dinamismo
• Utilizzo dei Razor Component
2. Blazor server-side permette il riuso di codice esistente
3. Blazor ha alcune similitudini con WebForm
• Mantenimento dello stato dei controlli
• Modello Event-Driven
Applicazione WebForm da migrare/portare verso .NET Core
E' possibile chiamare gli stessi Service utilizzanti in WebForm
E' possibile utilizzare gli stessi Command e Query (CQRS)
Riuso di codice esistente
1. Adozione localizzata di Blazor nella riscrittura delle sole funzionalità che
richiedono maggiore interattività/dinamismo
• Utilizzo dei Razor Component
2. Blazor server-side permette il riuso di codice esistente
3. Blazor ha alcune similitudini con WebForm
• Mantenimento dello stato dei controlli
• Modello Event-Driven
Applicazione WebForm da migrare/portare verso .NET Core
Blazor for ASP.NET Web Forms Developers
• https://docs.microsoft.com/en-us/dotnet/architecture/blazor-for-web-forms-
developers/
Blazor for Web Form and C# Developers
• https://www.youtube.com/watch?v=gmopA3LEEeE
.NET Conf 2020 - From Web Forms to Blazor - Introducing the Blazor Web
Forms Components
• https://channel9.msdn.com/Events/dotnetConf/2020/From-Web-Forms-to-
Blazor-Introducing-the-Blazor-Web-Forms-Components
Articoli e video
"A collection of Blazor components
that emulate the web forms
components of the same name"
https://github.com/FritzAndFriends/BlazorWebFormsComponents
BlazorWebFormsComponents
HUNEXT:
Porting di applicativi
desktop (vb6, access)
Scenario _2
Premesse
• Gli applicativi utilizzando un database SQL Server
• Parte dell'accesso ai dati esistenti sfrutta .NET e CQRS
Utilizzo di Blazor Server (ad oggi)
• Riuso di codice esistente
• Riuso di conoscenze interne all'azienda
• C#
• CQRS
• Permette di avere una UI che si avvicini (ad usabilità) a quella desktop
Porting di applicativi desktop verso Blazor
Per velocizzare il porting degli applicativi Access, è stato creato un template
replicabile, così da poter applicare un generatore di codice.
• Il generatore, legge la struttura delle maschere di Access e genera codice C# e Blazor
Porting di applicativi desktop - da dove siamo partiti
• .NET Conf 2020 - Migrating a Windows Forms App to Blazor: The Amazing
and True Story of GIFBot
• James Montemagno / Georgia Nelson
• https://www.youtube.com/watch?v=NRDdu67VJH0
Migrating a Windows Forms App to Blazor
Electron e PWA
Quantumdatis:
Sviluppo Data Driven Manager
Scenario _3
Passaggio al web di un team desktop
Passaggio al web di un team desktop
Utilizzo di Blazor Server
Riuso di conoscenze che il team già utilizza
• C#
• Codice di accesso ai dati
• Chiamare a servizi REST
Formazione per le caratteristiche di ASP.NET utili all'obiettivo
• Dependency Injection
• Blazor
• Razor
Affiancamento durante la realizzazione della prima versione
Passaggio al web di un team desktop
Ridurre lo stack
tecnologico
Scenario _4
Non tutte le applicazioni necessitano della miglior tecnologia per ogni sua parte
• La "miglior tecnologia" va valutata caso per caso
Utilizzando C# sia per back-end (ASP.NET Core) che front-end (Blazor)
• Meno tecnologie da dover conoscere e mantenere
• Riduzione delle competenze necessarie
• Semplificazione nel deployment
Ridurre lo stack tecnologico
Conclusioni
Blazor ha vinto? Storie di casi reali
Publish a Blazor WebAssembly app and .NET API with
Azure Static Web Apps
• https://docs.microsoft.com/en-us/learn/modules/publish-app-service-static-web-
app-api-dotnet/
Azure Static Web Apps with .NET and Blazor
• https://devblogs.microsoft.com/aspnet/azure-static-web-apps-with-blazor/
Static Web Apps
Blazor ha vinto? Storie di casi reali
Le maggiori aziende (DevExpress, Telerik, Syncfusion, …) hanno la loro libreria per Blazor
• https://www.devexpress.com/blazor/
• https://www.telerik.com/blazor-ui
• https://www.syncfusion.com/blazor-components
Sono nate molte librerie open-source
• Radzen (https://blazor.radzen.com/ )
• Blazorise (https://blazorise.com/ )
• MatBlazor (https://www.matblazor.com/ )
• Material.Blazor (https://material-blazor.com/ )
• Exentials.MdcBlazor (https://github.com/exentials/MdcBlazor )
• …
!! Attenzione alla maturità della libreria che scegliete di utilizzare
!! Attenzione ad usare framework JavaScript che modificano il DOM
Librerie di UI
Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi reali
www.dottor.net
andrea@dottor.net
@dottor
Andrea Dottor
Microsoft MVP Developer Technologies
Contatti
Images from https://pixabay.com
Podcast ".NET in Pillole"
• DEV.is.it - .NET in pillole
• Spotify:
https://open.spotify.com/show/7jyoG6BBmzvScNOqSpVvQQ
• Spreaker:
https://www.spreaker.com/show/net-in-pillole
• Apple podcast:
https://podcasts.apple.com/it/podcast/net-in-pillole/id1478648398
• Google podcast:
https://podcasts.google.com/?feed=aHR0cHM6Ly93d3cuc3ByZWFrZXIuY29tL3Nob3cvMzY4NTM0NC9lcGlzb2Rlcy9mZWVk
• YouTube:
https://www.youtube.com/user/andreadottor/

More Related Content

PDF
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
PDF
ASP.NET Core - Razor Pages
PDF
Blazor per uno sviluppatore Web Form
PDF
Dal RenderFragment ai Generics, tips for Blazor developers
PDF
Alla scoperta di gRPC
PPTX
Cosa c'è di nuovo in asp.net core 2 0
PDF
ASP.NET Core - dove siamo arrivati
PPTX
ASP.NET MVC 6 - uno sguardo al futuro
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
ASP.NET Core - Razor Pages
Blazor per uno sviluppatore Web Form
Dal RenderFragment ai Generics, tips for Blazor developers
Alla scoperta di gRPC
Cosa c'è di nuovo in asp.net core 2 0
ASP.NET Core - dove siamo arrivati
ASP.NET MVC 6 - uno sguardo al futuro

What's hot (20)

PPTX
Sviluppare Azure Web Apps
PPT
What's New in ASP.NET 4.5 and Visual Studio 2012
PPTX
Windows azure - abbattere tempi e costi di sviluppo
PPTX
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
PPTX
Introduzione ad ASP.NET Core
PPTX
Customize ASP.NET Core scaffolding
PPT
Esempi pratici
PPTX
Creare API pubbliche, come evitare gli errori comuni
PPTX
Javascript task automation
PDF
ASP .NET Core hands-on
PDF
Dependency injection questa sconosciuta
PPTX
.Net 4.0 Preview @ UGIdotNet
PPTX
Del furia signalr-to-the-max
PPTX
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
PDF
Meetup ASP.NET Core 2 e Docker
PPTX
Javascript task automation
PPTX
Wcf data services
PDF
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
PPT
Generazione Dinamica di Codice in .NET
PPTX
DotNetCampus - Continuous Integration con Sql Server
Sviluppare Azure Web Apps
What's New in ASP.NET 4.5 and Visual Studio 2012
Windows azure - abbattere tempi e costi di sviluppo
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
Introduzione ad ASP.NET Core
Customize ASP.NET Core scaffolding
Esempi pratici
Creare API pubbliche, come evitare gli errori comuni
Javascript task automation
ASP .NET Core hands-on
Dependency injection questa sconosciuta
.Net 4.0 Preview @ UGIdotNet
Del furia signalr-to-the-max
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
Meetup ASP.NET Core 2 e Docker
Javascript task automation
Wcf data services
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Generazione Dinamica di Codice in .NET
DotNetCampus - Continuous Integration con Sql Server
Ad

Similar to Blazor ha vinto? Storie di casi reali (20)

PPTX
Blazor with .net 5 - di Gerardo Greco
PDF
Blazor: are we ready for the launch?
PPTX
Cert03 70-486 developing asp.net mvc 4 web applications
PPTX
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
PPTX
.NET Core, ASP.NET Core e Linux per il Mobile
PPTX
Dal requisito all'implementazione @ CD2010
PPTX
Alessandro Forte - ASP.Net 4.0
PPTX
Christmas greetings cards with blazor
PPTX
Cert04 70-484 - essentials of developing windows store apps
PPS
Sviluppo Web Agile Con MonoRail
PDF
Designing with microservices - Daniele Mondello
PDF
Spa with Blazor
PDF
Antica presentazione AJAX
PPTX
Sys03 microsoft azure for it pro
PPTX
Introduzione a DotNetNuke
PPTX
Novità di Asp.Net 4.0
PPTX
OpenDevSecOps 2019 - Open devsecops un caso di studio
PPTX
Le novita di visual studio 2012
PDF
Sviluppo di servizi REST per Android - Luca Masini
PDF
SVILUPPO DI SERVIZI REST PER ANDROID
Blazor with .net 5 - di Gerardo Greco
Blazor: are we ready for the launch?
Cert03 70-486 developing asp.net mvc 4 web applications
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
.NET Core, ASP.NET Core e Linux per il Mobile
Dal requisito all'implementazione @ CD2010
Alessandro Forte - ASP.Net 4.0
Christmas greetings cards with blazor
Cert04 70-484 - essentials of developing windows store apps
Sviluppo Web Agile Con MonoRail
Designing with microservices - Daniele Mondello
Spa with Blazor
Antica presentazione AJAX
Sys03 microsoft azure for it pro
Introduzione a DotNetNuke
Novità di Asp.Net 4.0
OpenDevSecOps 2019 - Open devsecops un caso di studio
Le novita di visual studio 2012
Sviluppo di servizi REST per Android - Luca Masini
SVILUPPO DI SERVIZI REST PER ANDROID
Ad

More from Andrea Dottor (15)

PDF
Blazor ♥️ JavaScript
PDF
Blazor, lo sapevi che...
PDF
Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check ...
PDF
What's New in ASP.NET Core 3
PPTX
Real case: migrate from Web Forms to ASP.NET Core gradually
PPTX
ASP.NET, ottimizziamo con la cache
PDF
Creare API pubbliche, come evitare gli errori comuni
PPTX
Deploy & Run on Azure App Service
PPTX
ASP.NET Core
PDF
L'evoluzione del web
PPTX
Crea servizi REST per la tua App con ASP.NET 5
PPTX
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
PPTX
ASP.NET performance optimization
PPTX
Il buon programmatore - consigli pratici per una vita felice
PPTX
Migliora il tuo codice con knockout.js
Blazor ♥️ JavaScript
Blazor, lo sapevi che...
Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check ...
What's New in ASP.NET Core 3
Real case: migrate from Web Forms to ASP.NET Core gradually
ASP.NET, ottimizziamo con la cache
Creare API pubbliche, come evitare gli errori comuni
Deploy & Run on Azure App Service
ASP.NET Core
L'evoluzione del web
Crea servizi REST per la tua App con ASP.NET 5
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
ASP.NET performance optimization
Il buon programmatore - consigli pratici per una vita felice
Migliora il tuo codice con knockout.js

Blazor ha vinto? Storie di casi reali

  • 1. xedotnet.org Andrea Dottor @dottor Blazor ha vinto? Storie di casi reali
  • 4. Blazor is a framework for building interactive client-side web UI with .NET: • Create rich interactive UIs using C# instead of JavaScript. • Share server-side and client-side app logic written in .NET. • Render the UI as HTML and CSS for wide browser support, including mobile browsers. • Integrate with modern hosting platforms, such as Docker. Using .NET for client-side web development offers the following advantages: • Write code in C# instead of JavaScript. • Leverage the existing .NET ecosystem of .NET libraries. • Share app logic across server and client. • Benefit from .NET's performance, reliability, and security. • Stay productive with Visual Studio on Windows, Linux, and macOS. • Build on a common set of languages, frameworks, and tools that are stable, feature- rich, and easy to use. Cos'è Blazor https://docs.microsoft.com/en-us/aspnet/core/blazor/
  • 7. Performance improvements • "For .NET 5, we made significant improvements to Blazor WebAssembly runtime performance with a specific focus on complex UI rendering and JSON serialization. In our performance tests, Blazor WebAssembly in .NET 5 is two to three times faster for most scenarios." https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-5-release-candidate-1/#blazor- webassembly-performance-improvements Debugging improvements • "Debugging Blazor WebAssembly apps is improved in ASP.NET Core 5.0. Additionally, debugging is now supported on Visual Studio for Mac" https://docs.microsoft.com/en-us/aspnet/core/blazor/debug Trimming/linking improvements • "Blazor WebAssembly performs Intermediate Language (IL) trimming/linking during a build to trim unnecessary IL from the app's output assemblies. With the release of ASP.NET Core 5.0, Blazor WebAssembly performs improved trimming with additional configuration options" https://docs.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/configure-trimmer Dove siamo arrivati (con .NET 5)
  • 8. Lazy load assemblies • https://docs.microsoft.com/en-us/aspnet/core/blazor/webassembly-lazy-load-assemblies Blazor JavaScript isolation • https://docs.microsoft.com/en-us/aspnet/core/blazor/call-javascript-from-dotnet?view=aspnetcore-5.0#blazor- javascript-isolation-and-object-references Prerendering for Blazor WebAssembly • https://docs.microsoft.com/en-us/aspnet/core/blazor/components/prerendering-and-integration Protected Browser Storage for Blazor Server • https://docs.microsoft.com/it-it/aspnet/core/blazor/state-management#aspnet-core-protected-browser-storage New components • InputFile, InputRadio, InputRadioGroup Dove siamo arrivati (con .NET 5)
  • 9. AOT Compilation Drag & Drop Hot Reload (via dotnet watch) … https://github.com/dotnet/aspnetcore/issues/27883 https://github.com/dotnet/aspnetcore/projects/15#card-49713369 [WIP] ASP.NET Core 6 Roadmap
  • 10. Curva di apprendimento (relativamente bassa) • per essere produttivi da subito --> ASP.NET Core • con un minimo di formazione --> per chi usa ASP.NET MVC • con la "sola" formazione su HTML e Razor --> per chi conosce C# Curva di apprendimento https://jaxenter.com/blazor-2020-167525.html "One thing that shocked me about Blazor is how genuinely simple it feels to use. Blazor combines the ease of Razor with other .NET concepts. It has borrowed the best patterns from popular JavaScript frameworks like Angular and React while leveraging Razor templates and provided parity with other .NET conventions. This combination of features allows for the reuse of skills in a way that was unavailable before. The same could be said for Node developers who use one language and familiar concepts in full stack JavaScript apps."
  • 11. Blazor in 3 casi reali (+1)
  • 12. Azienda: Hunext Migrazione dell'applicativo Ufficio Web verso ASP.NET Core • Applicazione sviluppata con: • Visual Basic .NET • C# • Web Form • ASP.NET MVC (per le API REST) Nuovi applicativi ASP.NET Core Scenario _1
  • 13. Azienda: Hunext Porting di applicativi desktop nel web • Applicazioni Visual Basic 6 • Applicazioni Access Necessità di offrire un'usabilità che si avvicini a quella che gli utenti conoscono nel mondo desktop Scenario _2
  • 14. Azienda: Quantumdatis Sviluppo di un'applicazione web per la gestione e generazione di report di Reporting Service • Windows Authentication • Login • Accesso al db • Accesso ai servizi • Uso delle API di Reporting Services * Il team ha conoscenze di sviluppo desktop e ma non ha mai usato ASP.NET Scenario _3
  • 16. HUNEXT: Da WebForm a .NET Core Scenario _1
  • 17. Applicazione WebForm da migrare/portare verso .NET Core
  • 18. Applicazione WebForm da migrare/portare verso .NET Core
  • 19. 1. Adozione localizzata di Blazor nella riscrittura delle sole funzionalità che richiedono maggiore interattività/dinamismo • Utilizzo dei Razor Component 2. Blazor server-side permette il riuso di codice esistente 3. Blazor ha alcune similitudini con WebForm • Mantenimento dello stato dei controlli • Modello Event-Driven Applicazione WebForm da migrare/portare verso .NET Core
  • 20. Permettono l'adozione di Blazor in aree localizzate dell'applicazione • File con estensione .razor • Fanno da entry-point ad applicazioni Blazor • Accettano parametri in ingresso Il prodotto non si vincola ad una particolare tecnologia client Razor Component @(await Html.RenderComponentAsync<Pager>( new { pageNumber = Model.PageNumber, totalRecords = 150, pageSize = 20, linkUrl = Url.PageLink("Index") }))
  • 21. Utilizzo dei Razor Component
  • 22. Se l'accesso ai dati (lettura e salvataggio) viene fatto tramite API rest, un'eventuale migrazione verso Blazor WebAssembly è più facile Un occhio al futuro
  • 23. 1. Adozione localizzata di Blazor nella riscrittura delle sole funzionalità che richiedono maggiore interattività/dinamismo • Utilizzo dei Razor Component 2. Blazor server-side permette il riuso di codice esistente 3. Blazor ha alcune similitudini con WebForm • Mantenimento dello stato dei controlli • Modello Event-Driven Applicazione WebForm da migrare/portare verso .NET Core
  • 24. E' possibile chiamare gli stessi Service utilizzanti in WebForm E' possibile utilizzare gli stessi Command e Query (CQRS) Riuso di codice esistente
  • 25. 1. Adozione localizzata di Blazor nella riscrittura delle sole funzionalità che richiedono maggiore interattività/dinamismo • Utilizzo dei Razor Component 2. Blazor server-side permette il riuso di codice esistente 3. Blazor ha alcune similitudini con WebForm • Mantenimento dello stato dei controlli • Modello Event-Driven Applicazione WebForm da migrare/portare verso .NET Core
  • 26. Blazor for ASP.NET Web Forms Developers • https://docs.microsoft.com/en-us/dotnet/architecture/blazor-for-web-forms- developers/ Blazor for Web Form and C# Developers • https://www.youtube.com/watch?v=gmopA3LEEeE .NET Conf 2020 - From Web Forms to Blazor - Introducing the Blazor Web Forms Components • https://channel9.msdn.com/Events/dotnetConf/2020/From-Web-Forms-to- Blazor-Introducing-the-Blazor-Web-Forms-Components Articoli e video
  • 27. "A collection of Blazor components that emulate the web forms components of the same name" https://github.com/FritzAndFriends/BlazorWebFormsComponents BlazorWebFormsComponents
  • 28. HUNEXT: Porting di applicativi desktop (vb6, access) Scenario _2
  • 29. Premesse • Gli applicativi utilizzando un database SQL Server • Parte dell'accesso ai dati esistenti sfrutta .NET e CQRS Utilizzo di Blazor Server (ad oggi) • Riuso di codice esistente • Riuso di conoscenze interne all'azienda • C# • CQRS • Permette di avere una UI che si avvicini (ad usabilità) a quella desktop Porting di applicativi desktop verso Blazor
  • 30. Per velocizzare il porting degli applicativi Access, è stato creato un template replicabile, così da poter applicare un generatore di codice. • Il generatore, legge la struttura delle maschere di Access e genera codice C# e Blazor Porting di applicativi desktop - da dove siamo partiti
  • 31. • .NET Conf 2020 - Migrating a Windows Forms App to Blazor: The Amazing and True Story of GIFBot • James Montemagno / Georgia Nelson • https://www.youtube.com/watch?v=NRDdu67VJH0 Migrating a Windows Forms App to Blazor
  • 33. Quantumdatis: Sviluppo Data Driven Manager Scenario _3
  • 34. Passaggio al web di un team desktop
  • 35. Passaggio al web di un team desktop
  • 36. Utilizzo di Blazor Server Riuso di conoscenze che il team già utilizza • C# • Codice di accesso ai dati • Chiamare a servizi REST Formazione per le caratteristiche di ASP.NET utili all'obiettivo • Dependency Injection • Blazor • Razor Affiancamento durante la realizzazione della prima versione Passaggio al web di un team desktop
  • 38. Non tutte le applicazioni necessitano della miglior tecnologia per ogni sua parte • La "miglior tecnologia" va valutata caso per caso Utilizzando C# sia per back-end (ASP.NET Core) che front-end (Blazor) • Meno tecnologie da dover conoscere e mantenere • Riduzione delle competenze necessarie • Semplificazione nel deployment Ridurre lo stack tecnologico
  • 41. Publish a Blazor WebAssembly app and .NET API with Azure Static Web Apps • https://docs.microsoft.com/en-us/learn/modules/publish-app-service-static-web- app-api-dotnet/ Azure Static Web Apps with .NET and Blazor • https://devblogs.microsoft.com/aspnet/azure-static-web-apps-with-blazor/ Static Web Apps
  • 43. Le maggiori aziende (DevExpress, Telerik, Syncfusion, …) hanno la loro libreria per Blazor • https://www.devexpress.com/blazor/ • https://www.telerik.com/blazor-ui • https://www.syncfusion.com/blazor-components Sono nate molte librerie open-source • Radzen (https://blazor.radzen.com/ ) • Blazorise (https://blazorise.com/ ) • MatBlazor (https://www.matblazor.com/ ) • Material.Blazor (https://material-blazor.com/ ) • Exentials.MdcBlazor (https://github.com/exentials/MdcBlazor ) • … !! Attenzione alla maturità della libreria che scegliete di utilizzare !! Attenzione ad usare framework JavaScript che modificano il DOM Librerie di UI
  • 46. www.dottor.net [email protected] @dottor Andrea Dottor Microsoft MVP Developer Technologies Contatti Images from https://pixabay.com
  • 47. Podcast ".NET in Pillole" • DEV.is.it - .NET in pillole • Spotify: https://open.spotify.com/show/7jyoG6BBmzvScNOqSpVvQQ • Spreaker: https://www.spreaker.com/show/net-in-pillole • Apple podcast: https://podcasts.apple.com/it/podcast/net-in-pillole/id1478648398 • Google podcast: https://podcasts.google.com/?feed=aHR0cHM6Ly93d3cuc3ByZWFrZXIuY29tL3Nob3cvMzY4NTM0NC9lcGlzb2Rlcy9mZWVk • YouTube: https://www.youtube.com/user/andreadottor/