SlideShare a Scribd company logo
1 of 24
Download to read offline
DotNetCode.IT
Microsoft .Net Coding Community
www.dotnetcode.it
DotNetCode.IT
Microsoft .Net Coding Community
Progressive Web App (PWA)
Benvenuti
DotNetCode.IT
Microsoft .Net Coding Community
DotNetCode.IT
Microsoft .Net Coding Community
DotNetCode.IT
Microsoft .Net Coding Community
Speaker
Simone Natalini
AlmavivA
DotNetCode.IT
Microsoft .Net Coding Community
AGENDA
• Introduzione
• Cosa sono le Progressive Web App
• Tecnologie di una PWA
• Demo con ASP.NET Core e modelli di distribuzione
• Q&A
www.dotnetcode.it
DotNetCode.IT
Microsoft .Net Coding Community
Progressive Web App
DotNetCode.IT
Microsoft .Net Coding Community
Introduzione
Il termine «Progressive Web App» è stato coniato dagli
ingegneri di Google nel 2015, nonostante sia Apple che Mozilla
avessero già rilasciato anni prima dei framework per distribuire
applicazioni sulle rispettive piattaforme sotto una forma
diversa
www.dotnetcode.it
DotNetCode.IT
Microsoft .Net Coding Community
Cosa sono le Progressive Web App
Una Progressive Web App è un sito o una web app web
sviluppata seguendo una serie di pattern e sfruttando delle
tecnologie che le consentono di sfruttare al massimo sia le
normali funzionalità di un moderno sito web che quelle native
del sistema operativo.
www.dotnetcode.it
DotNetCode.IT
Microsoft .Net Coding Community
Cosa costituisce una Progressive Web App?
Una PWA è fatta di un insieme di tecnologie, pattern e in generale di
una nuova «filosofia» con il quale andiamo a costruire i nostri siti web.
Un sito web o una app possono essere considerati una PWA quando
rispettano alcuni requisiti o quando implementano diverse feature.
www.dotnetcode.it
DotNetCode.IT
Microsoft .Net Coding Community
Cosa costituisce una Progressive Web App?
In generale, una PWA può essere considerata una PWA quando è:
• Ricercabile: deve essere facilmente ricercabile e trovabile su un
motore di ricerca
• Installabile: l’utente non deve «fare fatica» nell’installare l’app
• Condivisibile: condividere l’app deve essere semplice come
condividere un link
• Indipendente dalla rete: l’app deve funzionare offline
• Autonoma: l’app deve poter mandare contenuti all’utente (es.
notifiche push) senza dover essere attivata dal browser
www.dotnetcode.it
DotNetCode.IT
Microsoft .Net Coding Community
Cosa costituisce una Progressive Web App?
• Responsive: in modo da poter essere eseguita e usata correttamente
su ogni dispositivo
• Sicura: essendo installata e interagendo con il sistema operativo del
dispositivo, il suo contenuto deve essere sicuro.
www.dotnetcode.it
DotNetCode.IT
Microsoft .Net Coding Community
Tecnologie di una PWA
Una Progressive Web App si basa principalmente su un insieme di
tecnologie standard:
• Web Manifest: un file JSON che segue uno schema standard con il
quale la web app si «presenta»
• Service Workers: un file Javascript che opera come worker in
background e fa da proxy virtuale tra le risorse del browser e la rete
(anche quando non c’è)
• Web Storage/IndexedDB: entrambe possono essere lo storage che
consente all’app di mantenere e persistere informazioni
www.dotnetcode.it
DotNetCode.IT
Microsoft .Net Coding Community
Tecnologie di una PWA: Il web manifest
Il Web Manifest è un file JSON che contiene diverse
informazioni fondamentali, come il nome, la descrizione, le
icone dell’app, la versione, oltre che le informazioni su come
comportarsi quando viene installata sul device dell’utente. Il
manifest deve essere presente nell’<head> della pagina
principale del nostro sito, e può essere disponibile sia in
anonimo che tramite l’utilizzo di credenziali.
www.dotnetcode.it
DotNetCode.IT
Microsoft .Net Coding Community
Tecnologie di una PWA: Il service worker
Il Service Worker è un proxy virtuale che opera tra il browser e
la rete, anche quando quest’ultima non c’è. Il suo compito
principale è quello di gestire il caching degli asset dell’app in
modo tale da fornirli quando richiesti (soprattutto quando si è
offline)
www.dotnetcode.it
DotNetCode.IT
Microsoft .Net Coding Community
Tecnologie di una PWA: Il service worker
Il Service Worker può essere molto potente, ed essere utilizzato per
qualcosa che va oltre la gestione del caching; infatti può eseguire
pesanti calcoli, ricevere e inviare notifiche e eseguire task in background
senza impattare minimamente sulle performance del sito, girando in un
thread separato da quello del sito.
www.dotnetcode.it
DotNetCode.IT
Microsoft .Net Coding Community
Tecnologie di una PWA: Il service worker
Il Service Worker inoltre può agire interamente da «rete», prenderne
il controllo quando si è online, manipolare le richieste in uscita e in
entrata dall’app (e in generale nel contesto del browser) servendo
contenuti cachati.
Proprio per questo, onde evitare utilizzi malevoli, si può registrare un
service worker solo se il sito viene servito in HTTPS.
www.dotnetcode.it
DotNetCode.IT
Microsoft .Net Coding Community
Tecnologie di una PWA: IndexedDB e Cache API
Come ogni app, per salvare dei dati, le PWA principalmente
sfruttano due tecnologie: IndexedDB e Cache API
L’IndexedDB è un database system transazionale, un quasi
normale RDBMS, ma contrariamente a quest’ultimi storicizza i
dati sotto forma di chiave-oggetto piuttosto che in forma
tabellare.
www.dotnetcode.it
DotNetCode.IT
Microsoft .Net Coding Community
Tecnologie di una PWA: IndexedDB e Cache API
La Cache API invece è un sistema che gestisce, memorizza e
restituisce le richieste inviate dall’app e le corrispettive risposte.
Lavora a stretto giro con il Service Worker, dato che infatti il
suo scopo principale è quello di servire da backend al Service
Worker quando l’app è offline, avendo previamente “cachato”
tutto il necessario
www.dotnetcode.it
DotNetCode.IT
Microsoft .Net Coding Community
DEMO
DotNetCode.IT
Microsoft .Net Coding Community
Q&A
DotNetCode.IT
Microsoft .Net Coding Community
Link utili
• https://developers.google.com/web/ilt/pwa/introduction-to-
service-worker
• https://developer.mozilla.org/en-
US/docs/Web/Progressive_web_apps
• https://en.wikipedia.org/wiki/Progressive_web_applications
• https://mdn.github.io/pwa-examples/a2hs/
• https://pwabuilder.com
• https://github.com/madskristensen/WebEssentials.AspNetCore.
ServiceWorker
www.dotnetcode.it
DotNetCode.IT
Microsoft .Net Coding Community
Grazie!
DotNetCode.IT
Microsoft .Net Coding Community
Grazie a Tutti!
DotNetCode.IT
Microsoft .Net Coding Community
DotNetCode.IT
Microsoft .Net Coding Community
Follow US!
www.dotnetcode.it
https://www.facebook.com/DotNetCode.IT
https://twitter.com/DotNetCodeIT
https://plus.google.com/+DotnetcodeIt

More Related Content

What's hot

.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il MobilePietro Libro
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On RailsLuca Mearelli
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETStefano Ottaviani
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazorNicolò Carandini
 
Wasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteWasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteNicolò Carandini
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web AppsLuca Fortin
 
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
 
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA ItalySMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA ItalyPaolo Dadda
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailDotNetMarche
 
App Mobile Powerapps
App Mobile PowerappsApp Mobile Powerapps
App Mobile PowerappsGiuneco S.r.l
 
Blazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web FormBlazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web FormAndrea 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
 
Modi innovativi per costruire App
Modi innovativi per costruire AppModi innovativi per costruire App
Modi innovativi per costruire AppCommit University
 

What's hot (17)

.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On Rails
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NET
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
 
Wasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteWasm and Blazor CDays keynote
Wasm and Blazor CDays keynote
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
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
 
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA ItalySMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
 
App Mobile Powerapps
App Mobile PowerappsApp Mobile Powerapps
App Mobile Powerapps
 
Blazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web FormBlazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web Form
 
Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
 
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
 
Modi innovativi per costruire App
Modi innovativi per costruire AppModi innovativi per costruire App
Modi innovativi per costruire App
 

Similar to Meetup Progressive Web App

Esposizione RIA
Esposizione RIAEsposizione RIA
Esposizione RIAdiodorato
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Whymca
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDLuca Masini
 
Vibecode presentazione
Vibecode presentazioneVibecode presentazione
Vibecode presentazioneThe Blue Seed
 
Applicazioni web based
Applicazioni web basedApplicazioni web based
Applicazioni web basedMarco Liverani
 
Framework di sviluppo web: introduzione a bootstrap e boostack
Framework di sviluppo web: introduzione a bootstrap e boostackFramework di sviluppo web: introduzione a bootstrap e boostack
Framework di sviluppo web: introduzione a bootstrap e boostackStefano Spagnolo
 
Presentazione Web Site
Presentazione Web SitePresentazione Web Site
Presentazione Web SiteWeb Site srl
 
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...Codemotion
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web AppsAndrea Dottor
 
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...DrupalDay
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store appsDotNetCampus
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angulardotnetcode
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi DiscussioneYeser Rema
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applicationsDotNetCampus
 
Introduzione a DotNetNuke
Introduzione a DotNetNukeIntroduzione a DotNetNuke
Introduzione a DotNetNukeMassimo Bonanni
 

Similar to Meetup Progressive Web App (20)

Esposizione RIA
Esposizione RIAEsposizione RIA
Esposizione RIA
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Swagger per tutti
Swagger per tuttiSwagger per tutti
Swagger per tutti
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
Vibecode presentazione
Vibecode presentazioneVibecode presentazione
Vibecode presentazione
 
Applicazioni web based
Applicazioni web basedApplicazioni web based
Applicazioni web based
 
Framework di sviluppo web: introduzione a bootstrap e boostack
Framework di sviluppo web: introduzione a bootstrap e boostackFramework di sviluppo web: introduzione a bootstrap e boostack
Framework di sviluppo web: introduzione a bootstrap e boostack
 
WordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWAWordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWA
 
Presentazione Web Site
Presentazione Web SitePresentazione Web Site
Presentazione Web Site
 
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi Discussione
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applications
 
SAL 2018 - Ditech-News
SAL 2018 - Ditech-NewsSAL 2018 - Ditech-News
SAL 2018 - Ditech-News
 
Introduzione a DotNetNuke
Introduzione a DotNetNukeIntroduzione a DotNetNuke
Introduzione a DotNetNuke
 

More from dotnetcode

Azure Meetup: Novità CosmosDB modalità Serverless e Cognitive Services
Azure Meetup: Novità CosmosDB modalità Serverless e Cognitive ServicesAzure Meetup: Novità CosmosDB modalità Serverless e Cognitive Services
Azure Meetup: Novità CosmosDB modalità Serverless e Cognitive Servicesdotnetcode
 
Azure Meetup: Understanding Azure App Service Plan
Azure Meetup: Understanding Azure App Service PlanAzure Meetup: Understanding Azure App Service Plan
Azure Meetup: Understanding Azure App Service Plandotnetcode
 
Azure Meetup: Keep your secrets and configurations safe in azure!
Azure Meetup: Keep your secrets and configurations safe in azure!Azure Meetup: Keep your secrets and configurations safe in azure!
Azure Meetup: Keep your secrets and configurations safe in azure!dotnetcode
 
Azure Meetup: Azure Storage/Datalake Deep Dive
Azure Meetup: Azure Storage/Datalake Deep DiveAzure Meetup: Azure Storage/Datalake Deep Dive
Azure Meetup: Azure Storage/Datalake Deep Divedotnetcode
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOpsdotnetcode
 
Meetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e KubernetesMeetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e Kubernetesdotnetcode
 
How to create custom modules for Visual Studio
How to create custom modules for Visual StudioHow to create custom modules for Visual Studio
How to create custom modules for Visual Studiodotnetcode
 
Exploring VS Code
Exploring VS CodeExploring VS Code
Exploring VS Codedotnetcode
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOpsdotnetcode
 
Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker dotnetcode
 
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1dotnetcode
 
Meetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure FunctionsMeetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure Functionsdotnetcode
 
Meetup DotNetCode Owasp
Meetup DotNetCode Owasp Meetup DotNetCode Owasp
Meetup DotNetCode Owasp dotnetcode
 
Meetup .NET & Micro ORM
Meetup .NET & Micro ORMMeetup .NET & Micro ORM
Meetup .NET & Micro ORMdotnetcode
 
Webhooks Meetup
Webhooks MeetupWebhooks Meetup
Webhooks Meetupdotnetcode
 
Meetup DotNetCode Dependency Injection
Meetup DotNetCode Dependency InjectionMeetup DotNetCode Dependency Injection
Meetup DotNetCode Dependency Injectiondotnetcode
 
Presentazione DotNetSchool
Presentazione DotNetSchoolPresentazione DotNetSchool
Presentazione DotNetSchooldotnetcode
 

More from dotnetcode (17)

Azure Meetup: Novità CosmosDB modalità Serverless e Cognitive Services
Azure Meetup: Novità CosmosDB modalità Serverless e Cognitive ServicesAzure Meetup: Novità CosmosDB modalità Serverless e Cognitive Services
Azure Meetup: Novità CosmosDB modalità Serverless e Cognitive Services
 
Azure Meetup: Understanding Azure App Service Plan
Azure Meetup: Understanding Azure App Service PlanAzure Meetup: Understanding Azure App Service Plan
Azure Meetup: Understanding Azure App Service Plan
 
Azure Meetup: Keep your secrets and configurations safe in azure!
Azure Meetup: Keep your secrets and configurations safe in azure!Azure Meetup: Keep your secrets and configurations safe in azure!
Azure Meetup: Keep your secrets and configurations safe in azure!
 
Azure Meetup: Azure Storage/Datalake Deep Dive
Azure Meetup: Azure Storage/Datalake Deep DiveAzure Meetup: Azure Storage/Datalake Deep Dive
Azure Meetup: Azure Storage/Datalake Deep Dive
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
Meetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e KubernetesMeetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e Kubernetes
 
How to create custom modules for Visual Studio
How to create custom modules for Visual StudioHow to create custom modules for Visual Studio
How to create custom modules for Visual Studio
 
Exploring VS Code
Exploring VS CodeExploring VS Code
Exploring VS Code
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker
 
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
 
Meetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure FunctionsMeetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure Functions
 
Meetup DotNetCode Owasp
Meetup DotNetCode Owasp Meetup DotNetCode Owasp
Meetup DotNetCode Owasp
 
Meetup .NET & Micro ORM
Meetup .NET & Micro ORMMeetup .NET & Micro ORM
Meetup .NET & Micro ORM
 
Webhooks Meetup
Webhooks MeetupWebhooks Meetup
Webhooks Meetup
 
Meetup DotNetCode Dependency Injection
Meetup DotNetCode Dependency InjectionMeetup DotNetCode Dependency Injection
Meetup DotNetCode Dependency Injection
 
Presentazione DotNetSchool
Presentazione DotNetSchoolPresentazione DotNetSchool
Presentazione DotNetSchool
 

Meetup Progressive Web App

  • 1. DotNetCode.IT Microsoft .Net Coding Community www.dotnetcode.it
  • 2. DotNetCode.IT Microsoft .Net Coding Community Progressive Web App (PWA) Benvenuti DotNetCode.IT Microsoft .Net Coding Community
  • 4. DotNetCode.IT Microsoft .Net Coding Community Speaker Simone Natalini AlmavivA
  • 5. DotNetCode.IT Microsoft .Net Coding Community AGENDA • Introduzione • Cosa sono le Progressive Web App • Tecnologie di una PWA • Demo con ASP.NET Core e modelli di distribuzione • Q&A www.dotnetcode.it
  • 6. DotNetCode.IT Microsoft .Net Coding Community Progressive Web App
  • 7. DotNetCode.IT Microsoft .Net Coding Community Introduzione Il termine «Progressive Web App» è stato coniato dagli ingegneri di Google nel 2015, nonostante sia Apple che Mozilla avessero già rilasciato anni prima dei framework per distribuire applicazioni sulle rispettive piattaforme sotto una forma diversa www.dotnetcode.it
  • 8. DotNetCode.IT Microsoft .Net Coding Community Cosa sono le Progressive Web App Una Progressive Web App è un sito o una web app web sviluppata seguendo una serie di pattern e sfruttando delle tecnologie che le consentono di sfruttare al massimo sia le normali funzionalità di un moderno sito web che quelle native del sistema operativo. www.dotnetcode.it
  • 9. DotNetCode.IT Microsoft .Net Coding Community Cosa costituisce una Progressive Web App? Una PWA è fatta di un insieme di tecnologie, pattern e in generale di una nuova «filosofia» con il quale andiamo a costruire i nostri siti web. Un sito web o una app possono essere considerati una PWA quando rispettano alcuni requisiti o quando implementano diverse feature. www.dotnetcode.it
  • 10. DotNetCode.IT Microsoft .Net Coding Community Cosa costituisce una Progressive Web App? In generale, una PWA può essere considerata una PWA quando è: • Ricercabile: deve essere facilmente ricercabile e trovabile su un motore di ricerca • Installabile: l’utente non deve «fare fatica» nell’installare l’app • Condivisibile: condividere l’app deve essere semplice come condividere un link • Indipendente dalla rete: l’app deve funzionare offline • Autonoma: l’app deve poter mandare contenuti all’utente (es. notifiche push) senza dover essere attivata dal browser www.dotnetcode.it
  • 11. DotNetCode.IT Microsoft .Net Coding Community Cosa costituisce una Progressive Web App? • Responsive: in modo da poter essere eseguita e usata correttamente su ogni dispositivo • Sicura: essendo installata e interagendo con il sistema operativo del dispositivo, il suo contenuto deve essere sicuro. www.dotnetcode.it
  • 12. DotNetCode.IT Microsoft .Net Coding Community Tecnologie di una PWA Una Progressive Web App si basa principalmente su un insieme di tecnologie standard: • Web Manifest: un file JSON che segue uno schema standard con il quale la web app si «presenta» • Service Workers: un file Javascript che opera come worker in background e fa da proxy virtuale tra le risorse del browser e la rete (anche quando non c’è) • Web Storage/IndexedDB: entrambe possono essere lo storage che consente all’app di mantenere e persistere informazioni www.dotnetcode.it
  • 13. DotNetCode.IT Microsoft .Net Coding Community Tecnologie di una PWA: Il web manifest Il Web Manifest è un file JSON che contiene diverse informazioni fondamentali, come il nome, la descrizione, le icone dell’app, la versione, oltre che le informazioni su come comportarsi quando viene installata sul device dell’utente. Il manifest deve essere presente nell’<head> della pagina principale del nostro sito, e può essere disponibile sia in anonimo che tramite l’utilizzo di credenziali. www.dotnetcode.it
  • 14. DotNetCode.IT Microsoft .Net Coding Community Tecnologie di una PWA: Il service worker Il Service Worker è un proxy virtuale che opera tra il browser e la rete, anche quando quest’ultima non c’è. Il suo compito principale è quello di gestire il caching degli asset dell’app in modo tale da fornirli quando richiesti (soprattutto quando si è offline) www.dotnetcode.it
  • 15. DotNetCode.IT Microsoft .Net Coding Community Tecnologie di una PWA: Il service worker Il Service Worker può essere molto potente, ed essere utilizzato per qualcosa che va oltre la gestione del caching; infatti può eseguire pesanti calcoli, ricevere e inviare notifiche e eseguire task in background senza impattare minimamente sulle performance del sito, girando in un thread separato da quello del sito. www.dotnetcode.it
  • 16. DotNetCode.IT Microsoft .Net Coding Community Tecnologie di una PWA: Il service worker Il Service Worker inoltre può agire interamente da «rete», prenderne il controllo quando si è online, manipolare le richieste in uscita e in entrata dall’app (e in generale nel contesto del browser) servendo contenuti cachati. Proprio per questo, onde evitare utilizzi malevoli, si può registrare un service worker solo se il sito viene servito in HTTPS. www.dotnetcode.it
  • 17. DotNetCode.IT Microsoft .Net Coding Community Tecnologie di una PWA: IndexedDB e Cache API Come ogni app, per salvare dei dati, le PWA principalmente sfruttano due tecnologie: IndexedDB e Cache API L’IndexedDB è un database system transazionale, un quasi normale RDBMS, ma contrariamente a quest’ultimi storicizza i dati sotto forma di chiave-oggetto piuttosto che in forma tabellare. www.dotnetcode.it
  • 18. DotNetCode.IT Microsoft .Net Coding Community Tecnologie di una PWA: IndexedDB e Cache API La Cache API invece è un sistema che gestisce, memorizza e restituisce le richieste inviate dall’app e le corrispettive risposte. Lavora a stretto giro con il Service Worker, dato che infatti il suo scopo principale è quello di servire da backend al Service Worker quando l’app è offline, avendo previamente “cachato” tutto il necessario www.dotnetcode.it
  • 21. DotNetCode.IT Microsoft .Net Coding Community Link utili • https://developers.google.com/web/ilt/pwa/introduction-to- service-worker • https://developer.mozilla.org/en- US/docs/Web/Progressive_web_apps • https://en.wikipedia.org/wiki/Progressive_web_applications • https://mdn.github.io/pwa-examples/a2hs/ • https://pwabuilder.com • https://github.com/madskristensen/WebEssentials.AspNetCore. ServiceWorker www.dotnetcode.it
  • 23. DotNetCode.IT Microsoft .Net Coding Community Grazie a Tutti! DotNetCode.IT Microsoft .Net Coding Community
  • 24. DotNetCode.IT Microsoft .Net Coding Community Follow US! www.dotnetcode.it https://www.facebook.com/DotNetCode.IT https://twitter.com/DotNetCodeIT https://plus.google.com/+DotnetcodeIt