SlideShare uma empresa Scribd logo
1 de 36
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+ +
/
Frontend
Development with
Blazor
apomic80 apomic80 apomic80 apomic80
apomic80
Michele Aponte
CTO @ Ellycode / CEO @ Blexin
Founder @ Blazor Developer Italiani
MVP Developer Technologies
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
https://...
JS
Che cos’è Blazor?
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
https://...
DOM
Razor Components
.NET
WebAssembly
https...
DOM
.NET Core
SignalR
Blazor WebAssembly Blazor Server
Razor Components
.NET
Hosting Models
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
Browser
JavaScript Runtime
dotnet.wasm
compilazione download
Browser API
(WebSocket,
DOM, File API,
Web Storage, ecc…)
transpilazione download
Blazor WebAssembly
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
https://dotnet.microsoft.com/download/dotnet-core
L’ultima versione di .NET Core
https://code.visualstudio.com/
Visual Studio Code
https://visualstudio.microsoft.com/it/vs/community/
Visual Studio Community
dotnet new -i Microsoft.AspNetCore.Blazor.Templates::X.X.X
L’ultima versione dei template Blazor
https://visualstudio.microsoft.com/it/vs/mac/
Visual Studio for Mac
Come cominciare?
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+ +
/
Blazor Server vs Blazor WebAssembly
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
- Tutta
l’applicazione
viene costruita
dinamicamente
a partire da
un’unica pagina
- La navigazione
viene gestita da
un apposito
componente
Struttura di una SPA
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
I singoli elementi
della pagina sono
dei componenti:
- formano un
albero di
componenti
- della giusta
dimensione
(SoC)
- riutilizzabili e
NON accoppiati
Componenti
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
- Tecnicamente
sono dei file
.razor che
contengono
Markup e codice
- Il nome del file
coincide con il
TAG del
componente
NavMenu.razor
<NavMenu />
Componenti
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
- Una pagina è un
componente che
definisce una
destinazione per
una rotta
- Contiene la
direttiva @page
@page "/eventi"
Pagine
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
@Body
<Router></Router>
- Tutte le richieste
di navigazione
vengono gestite
dal componente
Router
- Ogni volta che
viene richiesta
una pagina il
router la
renderizza nel
@Body
Routing
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
https...
DOM
.NET Core
SignalR
Razor Components
.NET
Integrazione del Backend
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
https://...
DOM
Razor Components
.NET
WebAssembly
HTTP Client
Integrazione del Backend
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+ +
/
Single Page Application in Blazor
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
Gestione Form
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
Gestione Form
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
Gestione Form
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
Browser
Browser API
(WebSocket,
DOM, File API,
Web Storage, ecc…)
JavaScript Runtime
JavaScript Interop
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
Da .NET a JavaScript
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
Da JavaScript a .NET
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
Da JavaScript a .NET
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
JavaScript
Isolation
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
Esperienza di
sviluppo
• Strumenti a disposizione
• CLI, IDE, Editor, Plug-in
• Sistema operativo
• Hot reload e Debugger
• Convention over Configuration
Pro & Contro di Blazor
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
• Dependency Injection
• CSS Isolation
• Gestione Forms
• Integrazione con Back-end
• REST e gRPC
• Integrazione librerie
• JS Isolation
• Lazy Load
Funzionalità
Pro & Contro di Blazor
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
• Dimensioni del compilato
• Lazy Load può mitigare il problema
• DOM e Change Detection
• Forms e bindings
• Virtualizzazione dei contenuti
• Compilazione AoT
• CI/CD build time
Performance
Pro & Contro di Blazor
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
Blazor Server
Web app
Tutte le interazioni vengono gestite sul server
HTML Prerenderizzato
Blazor WebAssembly
Web app con esecuzione sul client
Caricata dal web server
Può funzionare offline con i Service Worker
Blazor PWA – OS installed Si presenta come una app nativa (con una finestra propria)
Funziona sia offline che online
Blazor Hybrid
Utilizza Electron / WebView con un rendering nativo .NET
Si presenta come una app nativa (con una finestra propria)
Funziona sia offline che online
Web
Desktop
+ Mobile
Blazor Native Stesso modello di programmazione, ma con un
rendering della UI non HTML
Roadmap
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
• .NET Hot reload
• State persistence during prerendering
• Error boundaries
• WebAssembly AOT
• Runtime relinking
• Native dependencies
• Smaller download size
• Dynamic component rendering
• Render components from JS
• Custom event args
• JavaScript initializers
• JavaScript modules per component
• Infer generic types from parent
• Generic type constraints
• Handle large binary data
• Remove SignalR message size limitations
• Required parameters
• Handle query string parameters
• Influence the HTML head
• SVG support
Novità introdotte in .NET 6
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
Blazor Hybrid
Server WebAssembly Hybrid
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
Blazor Hybrid con WebView2
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+
/
+
WINFORMS/WPF
WebView2
Razor Components
.NET
DOM
Blazor Hybrid con WebView2
Cross-platform, native UI
Single project system, single codebase
Deploy to multiple devices, mobile & desktop
General availability early next year
.NET Multi-platform App UI
.NET 6
.NET MAUI
github.com/dotnet/maui
WinUI Mac
Catalyst
Android
iOS
iOS
macOS
Hybrid apps with Blazor & .NET MAUI
.NET MAUI
Blazor Reuse UI components across native and web
Built on top of .NET Multi-platform App UI
Native app container & embedded controls
General availability early next year
Can use native app
container & controls
iOS
macOS
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+ +
/
Seguite la community!
https://twitter.com/blazordevita
https://fb.me/blazordeveloperitaliani
https://github.com/blazordevita
https://blazordev.it/
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+ +
/
Partecipate alle discussioni
https://fb.me/groups/998755440506950/
https://www.linkedin.com/groups/8896269/
https://github.com/blazordevita
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+ +
/
Domande? Dubbi? Perplessità?
apomic80 apomic80 apomic80 apomic80
apomic80
Michele Aponte
CTO @ Ellycode / CEO @ Blexin
Founder @ Blazor Developer Italiani
MVP Developer Technologies
Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani
blazordevita
blazordev.it
+ +
/
Alla prossima!

Mais conteúdo relacionado

Mais procurados

Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0Andrea Dottor
 
Pietro Brambati: PHP e la piattaforma Microsoft
Pietro Brambati: PHP e la piattaforma MicrosoftPietro Brambati: PHP e la piattaforma Microsoft
Pietro Brambati: PHP e la piattaforma MicrosoftFrancesco Fullone
 
ASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesAndrea Dottor
 
WPO: Ottimizzazione step-by-step del front-end di un e-commerce
WPO: Ottimizzazione step-by-step del front-end di un e-commerceWPO: Ottimizzazione step-by-step del front-end di un e-commerce
WPO: Ottimizzazione step-by-step del front-end di un e-commerceFrancesco Terenzani
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerMatteo Magni
 
50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...
50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...
50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...Andrea Cardinali
 
Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?Flavius-Florin Harabor
 
Windows Azure and Joomla! @ Joomla day 2013
Windows Azure and Joomla! @ Joomla day 2013Windows Azure and Joomla! @ Joomla day 2013
Windows Azure and Joomla! @ Joomla day 2013Vito Flavio Lorusso
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerMatteo Magni
 
Node js dev day napoli 2016
Node js dev day napoli 2016Node js dev day napoli 2016
Node js dev day napoli 2016Michele Nasti
 
Sviluppare estensioni per google chrome
Sviluppare estensioni per google chromeSviluppare estensioni per google chrome
Sviluppare estensioni per google chromeMarco Vito Moscaritolo
 
Andrea Giorgini: Implementazione di un online-shop con Typo3
Andrea Giorgini: Implementazione di un online-shop con Typo3Andrea Giorgini: Implementazione di un online-shop con Typo3
Andrea Giorgini: Implementazione di un online-shop con Typo3Francesco Fullone
 
WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15Andrea Cardinali
 

Mais procurados (20)

Lucio Zambon: PHP@Elettra
Lucio Zambon: PHP@ElettraLucio Zambon: PHP@Elettra
Lucio Zambon: PHP@Elettra
 
Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0
 
Pietro Brambati: PHP e la piattaforma Microsoft
Pietro Brambati: PHP e la piattaforma MicrosoftPietro Brambati: PHP e la piattaforma Microsoft
Pietro Brambati: PHP e la piattaforma Microsoft
 
Portofino per Jug Padova
Portofino per Jug PadovaPortofino per Jug Padova
Portofino per Jug Padova
 
ASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesASP.NET Core - Razor Pages
ASP.NET Core - Razor Pages
 
WordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWAWordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWA
 
WPO: Ottimizzazione step-by-step del front-end di un e-commerce
WPO: Ottimizzazione step-by-step del front-end di un e-commerceWPO: Ottimizzazione step-by-step del front-end di un e-commerce
WPO: Ottimizzazione step-by-step del front-end di un e-commerce
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesigner
 
La rivoluzione blazor
La rivoluzione blazorLa rivoluzione blazor
La rivoluzione blazor
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
8. Architetture web
8. Architetture web8. Architetture web
8. Architetture web
 
50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...
50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...
50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...
 
Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?
 
Windows Azure and Joomla! @ Joomla day 2013
Windows Azure and Joomla! @ Joomla day 2013Windows Azure and Joomla! @ Joomla day 2013
Windows Azure and Joomla! @ Joomla day 2013
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesigner
 
Node js dev day napoli 2016
Node js dev day napoli 2016Node js dev day napoli 2016
Node js dev day napoli 2016
 
Sviluppare estensioni per google chrome
Sviluppare estensioni per google chromeSviluppare estensioni per google chrome
Sviluppare estensioni per google chrome
 
Andrea Giorgini: Implementazione di un online-shop con Typo3
Andrea Giorgini: Implementazione di un online-shop con Typo3Andrea Giorgini: Implementazione di un online-shop con Typo3
Andrea Giorgini: Implementazione di un online-shop con Typo3
 
WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15
 

Semelhante a Frontend Development with Blazor

Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoGiuneco S.r.l
 
Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiBlazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiAndrea Dottor
 
Tech Webinar: Firefox Developer Tool
Tech Webinar: Firefox Developer ToolTech Webinar: Firefox Developer Tool
Tech Webinar: Firefox Developer ToolCodemotion
 
Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeomarcocasario
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazorNicolò Carandini
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS DevicesAndrea Picchi
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Andrea Agnoletto
 
Joomla e SEO accoppiata perfetta: intervento di Stefano Rigazio al Seocamp 2015
Joomla e SEO accoppiata perfetta: intervento di Stefano Rigazio al Seocamp 2015Joomla e SEO accoppiata perfetta: intervento di Stefano Rigazio al Seocamp 2015
Joomla e SEO accoppiata perfetta: intervento di Stefano Rigazio al Seocamp 2015Enthous Agenzia Web
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLSinergia Totale
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailStefano Ottaviani
 
XMASDEV 2018 - XMAS GIFT ASSISTANT
XMASDEV 2018 - XMAS GIFT ASSISTANTXMASDEV 2018 - XMAS GIFT ASSISTANT
XMASDEV 2018 - XMAS GIFT ASSISTANTLuca Congiu
 
Commit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit University
 
Introduzione alla localizzazione web
Introduzione alla localizzazione webIntroduzione alla localizzazione web
Introduzione alla localizzazione webQabiria
 

Semelhante a Frontend Development with Blazor (20)

Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo Greco
 
Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiBlazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi reali
 
Tech Webinar: Firefox Developer Tool
Tech Webinar: Firefox Developer ToolTech Webinar: Firefox Developer Tool
Tech Webinar: Firefox Developer Tool
 
Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeo
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
 
#dd12,Quickr : iMMobilizing
#dd12,Quickr : iMMobilizing#dd12,Quickr : iMMobilizing
#dd12,Quickr : iMMobilizing
 
Seo html russo
Seo html russoSeo html russo
Seo html russo
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?
 
Joomla e SEO accoppiata perfetta: intervento di Stefano Rigazio al Seocamp 2015
Joomla e SEO accoppiata perfetta: intervento di Stefano Rigazio al Seocamp 2015Joomla e SEO accoppiata perfetta: intervento di Stefano Rigazio al Seocamp 2015
Joomla e SEO accoppiata perfetta: intervento di Stefano Rigazio al Seocamp 2015
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
HTML 5 e browser legacy
HTML 5 e browser legacyHTML 5 e browser legacy
HTML 5 e browser legacy
 
Node and the Cloud
Node and the CloudNode and the Cloud
Node and the Cloud
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
 
Spa with Blazor
Spa with BlazorSpa with Blazor
Spa with Blazor
 
HTML5
HTML5HTML5
HTML5
 
Seo Audit Demo
Seo Audit DemoSeo Audit Demo
Seo Audit Demo
 
XMASDEV 2018 - XMAS GIFT ASSISTANT
XMASDEV 2018 - XMAS GIFT ASSISTANTXMASDEV 2018 - XMAS GIFT ASSISTANT
XMASDEV 2018 - XMAS GIFT ASSISTANT
 
Commit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptx
 
Introduzione alla localizzazione web
Introduzione alla localizzazione webIntroduzione alla localizzazione web
Introduzione alla localizzazione web
 

Mais de Michele Aponte

Generazione dinamica della UI con Blazor WebAssembly
Generazione dinamica della UI con Blazor WebAssemblyGenerazione dinamica della UI con Blazor WebAssembly
Generazione dinamica della UI con Blazor WebAssemblyMichele Aponte
 
Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021Michele Aponte
 
Cognitive services in Business applications
Cognitive services in Business applicationsCognitive services in Business applications
Cognitive services in Business applicationsMichele Aponte
 
Angular in produzione: Best Practices e Performance Improvements
Angular in produzione:Best Practices e Performance ImprovementsAngular in produzione:Best Practices e Performance Improvements
Angular in produzione: Best Practices e Performance ImprovementsMichele Aponte
 
Da Silverlight a angular senza toccare il backend: fatto!
 Da Silverlight a angular senza toccare il backend: fatto! Da Silverlight a angular senza toccare il backend: fatto!
Da Silverlight a angular senza toccare il backend: fatto!Michele Aponte
 
Realizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e AngularRealizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e AngularMichele Aponte
 
Angular e asp.net core: un framework sul framework
Angular e asp.net core: un framework sul frameworkAngular e asp.net core: un framework sul framework
Angular e asp.net core: un framework sul frameworkMichele Aponte
 
Realizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e AngularRealizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e AngularMichele Aponte
 
Sviluppo web con asp.net core 2
Sviluppo web con asp.net core 2Sviluppo web con asp.net core 2
Sviluppo web con asp.net core 2Michele Aponte
 
Un framework sul framework: generare una SPA dinamicamente in Angular
Un framework sul framework: generare una SPA dinamicamente in AngularUn framework sul framework: generare una SPA dinamicamente in Angular
Un framework sul framework: generare una SPA dinamicamente in AngularMichele Aponte
 
Realizzare Single Page Application con Angular2
Realizzare Single Page Application con Angular2Realizzare Single Page Application con Angular2
Realizzare Single Page Application con Angular2Michele Aponte
 
Single Page Application con Angular 2
Single Page Application con Angular 2Single Page Application con Angular 2
Single Page Application con Angular 2Michele Aponte
 
Javascript senza paura con Typescript
Javascript senza paura con Typescript Javascript senza paura con Typescript
Javascript senza paura con Typescript Michele Aponte
 
Working with http client rest apis and connection availability check
Working with http client rest apis and connection availability checkWorking with http client rest apis and connection availability check
Working with http client rest apis and connection availability checkMichele Aponte
 
Deploy an Asp.Net Core App on Azure
Deploy an Asp.Net Core App on AzureDeploy an Asp.Net Core App on Azure
Deploy an Asp.Net Core App on AzureMichele Aponte
 
Orchard - architettura
Orchard - architetturaOrchard - architettura
Orchard - architetturaMichele Aponte
 

Mais de Michele Aponte (20)

Generazione dinamica della UI con Blazor WebAssembly
Generazione dinamica della UI con Blazor WebAssemblyGenerazione dinamica della UI con Blazor WebAssembly
Generazione dinamica della UI con Blazor WebAssembly
 
Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021
 
Cognitive services in Business applications
Cognitive services in Business applicationsCognitive services in Business applications
Cognitive services in Business applications
 
Angular in produzione: Best Practices e Performance Improvements
Angular in produzione:Best Practices e Performance ImprovementsAngular in produzione:Best Practices e Performance Improvements
Angular in produzione: Best Practices e Performance Improvements
 
Da Silverlight a angular senza toccare il backend: fatto!
 Da Silverlight a angular senza toccare il backend: fatto! Da Silverlight a angular senza toccare il backend: fatto!
Da Silverlight a angular senza toccare il backend: fatto!
 
Angular and beyond
Angular and beyondAngular and beyond
Angular and beyond
 
Realizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e AngularRealizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e Angular
 
Angular e asp.net core: un framework sul framework
Angular e asp.net core: un framework sul frameworkAngular e asp.net core: un framework sul framework
Angular e asp.net core: un framework sul framework
 
Realizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e AngularRealizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e Angular
 
Sviluppo web con asp.net core 2
Sviluppo web con asp.net core 2Sviluppo web con asp.net core 2
Sviluppo web con asp.net core 2
 
Un framework sul framework: generare una SPA dinamicamente in Angular
Un framework sul framework: generare una SPA dinamicamente in AngularUn framework sul framework: generare una SPA dinamicamente in Angular
Un framework sul framework: generare una SPA dinamicamente in Angular
 
Angular vsr React
Angular vsr ReactAngular vsr React
Angular vsr React
 
Angular 2 on stage
Angular 2 on stageAngular 2 on stage
Angular 2 on stage
 
Realizzare Single Page Application con Angular2
Realizzare Single Page Application con Angular2Realizzare Single Page Application con Angular2
Realizzare Single Page Application con Angular2
 
Single Page Application con Angular 2
Single Page Application con Angular 2Single Page Application con Angular 2
Single Page Application con Angular 2
 
Angular2 on stage
Angular2 on stageAngular2 on stage
Angular2 on stage
 
Javascript senza paura con Typescript
Javascript senza paura con Typescript Javascript senza paura con Typescript
Javascript senza paura con Typescript
 
Working with http client rest apis and connection availability check
Working with http client rest apis and connection availability checkWorking with http client rest apis and connection availability check
Working with http client rest apis and connection availability check
 
Deploy an Asp.Net Core App on Azure
Deploy an Asp.Net Core App on AzureDeploy an Asp.Net Core App on Azure
Deploy an Asp.Net Core App on Azure
 
Orchard - architettura
Orchard - architetturaOrchard - architettura
Orchard - architettura
 

Frontend Development with Blazor

  • 1. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + + / Frontend Development with Blazor apomic80 apomic80 apomic80 apomic80 apomic80 Michele Aponte CTO @ Ellycode / CEO @ Blexin Founder @ Blazor Developer Italiani MVP Developer Technologies
  • 2. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + https://... JS Che cos’è Blazor?
  • 3. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + https://... DOM Razor Components .NET WebAssembly https... DOM .NET Core SignalR Blazor WebAssembly Blazor Server Razor Components .NET Hosting Models
  • 4. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + Browser JavaScript Runtime dotnet.wasm compilazione download Browser API (WebSocket, DOM, File API, Web Storage, ecc…) transpilazione download Blazor WebAssembly
  • 5. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + https://dotnet.microsoft.com/download/dotnet-core L’ultima versione di .NET Core https://code.visualstudio.com/ Visual Studio Code https://visualstudio.microsoft.com/it/vs/community/ Visual Studio Community dotnet new -i Microsoft.AspNetCore.Blazor.Templates::X.X.X L’ultima versione dei template Blazor https://visualstudio.microsoft.com/it/vs/mac/ Visual Studio for Mac Come cominciare?
  • 6. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + + / Blazor Server vs Blazor WebAssembly
  • 7. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + - Tutta l’applicazione viene costruita dinamicamente a partire da un’unica pagina - La navigazione viene gestita da un apposito componente Struttura di una SPA
  • 8. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + I singoli elementi della pagina sono dei componenti: - formano un albero di componenti - della giusta dimensione (SoC) - riutilizzabili e NON accoppiati Componenti
  • 9. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + - Tecnicamente sono dei file .razor che contengono Markup e codice - Il nome del file coincide con il TAG del componente NavMenu.razor <NavMenu /> Componenti
  • 10. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + - Una pagina è un componente che definisce una destinazione per una rotta - Contiene la direttiva @page @page "/eventi" Pagine
  • 11. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + @Body <Router></Router> - Tutte le richieste di navigazione vengono gestite dal componente Router - Ogni volta che viene richiesta una pagina il router la renderizza nel @Body Routing
  • 12. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + https... DOM .NET Core SignalR Razor Components .NET Integrazione del Backend
  • 13. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + https://... DOM Razor Components .NET WebAssembly HTTP Client Integrazione del Backend
  • 14. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + + / Single Page Application in Blazor
  • 15. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + Gestione Form
  • 16. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + Gestione Form
  • 17. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + Gestione Form
  • 18. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + Browser Browser API (WebSocket, DOM, File API, Web Storage, ecc…) JavaScript Runtime JavaScript Interop
  • 19. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + Da .NET a JavaScript
  • 20. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + Da JavaScript a .NET
  • 21. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + Da JavaScript a .NET
  • 22. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + JavaScript Isolation
  • 23. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + Esperienza di sviluppo • Strumenti a disposizione • CLI, IDE, Editor, Plug-in • Sistema operativo • Hot reload e Debugger • Convention over Configuration Pro & Contro di Blazor
  • 24. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + • Dependency Injection • CSS Isolation • Gestione Forms • Integrazione con Back-end • REST e gRPC • Integrazione librerie • JS Isolation • Lazy Load Funzionalità Pro & Contro di Blazor
  • 25. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + • Dimensioni del compilato • Lazy Load può mitigare il problema • DOM e Change Detection • Forms e bindings • Virtualizzazione dei contenuti • Compilazione AoT • CI/CD build time Performance Pro & Contro di Blazor
  • 26. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + Blazor Server Web app Tutte le interazioni vengono gestite sul server HTML Prerenderizzato Blazor WebAssembly Web app con esecuzione sul client Caricata dal web server Può funzionare offline con i Service Worker Blazor PWA – OS installed Si presenta come una app nativa (con una finestra propria) Funziona sia offline che online Blazor Hybrid Utilizza Electron / WebView con un rendering nativo .NET Si presenta come una app nativa (con una finestra propria) Funziona sia offline che online Web Desktop + Mobile Blazor Native Stesso modello di programmazione, ma con un rendering della UI non HTML Roadmap
  • 27. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + • .NET Hot reload • State persistence during prerendering • Error boundaries • WebAssembly AOT • Runtime relinking • Native dependencies • Smaller download size • Dynamic component rendering • Render components from JS • Custom event args • JavaScript initializers • JavaScript modules per component • Infer generic types from parent • Generic type constraints • Handle large binary data • Remove SignalR message size limitations • Required parameters • Handle query string parameters • Influence the HTML head • SVG support Novità introdotte in .NET 6
  • 28. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + Blazor Hybrid Server WebAssembly Hybrid
  • 29. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + Blazor Hybrid con WebView2
  • 30. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + / + WINFORMS/WPF WebView2 Razor Components .NET DOM Blazor Hybrid con WebView2
  • 31. Cross-platform, native UI Single project system, single codebase Deploy to multiple devices, mobile & desktop General availability early next year .NET Multi-platform App UI .NET 6 .NET MAUI github.com/dotnet/maui WinUI Mac Catalyst Android iOS iOS macOS
  • 32. Hybrid apps with Blazor & .NET MAUI .NET MAUI Blazor Reuse UI components across native and web Built on top of .NET Multi-platform App UI Native app container & embedded controls General availability early next year Can use native app container & controls iOS macOS
  • 33. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + + / Seguite la community! https://twitter.com/blazordevita https://fb.me/blazordeveloperitaliani https://github.com/blazordevita https://blazordev.it/
  • 34. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + + / Partecipate alle discussioni https://fb.me/groups/998755440506950/ https://www.linkedin.com/groups/8896269/ https://github.com/blazordevita
  • 35. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + + / Domande? Dubbi? Perplessità? apomic80 apomic80 apomic80 apomic80 apomic80 Michele Aponte CTO @ Ellycode / CEO @ Blexin Founder @ Blazor Developer Italiani MVP Developer Technologies
  • 36. Blazor Developer Italiani blazordevita fb.me/blazordeveloperitaliani blazordevita blazordev.it + + / Alla prossima!