in Architettura Software

Service Workers

Continuiamo in questo post l’analisi del funzionamento di un service worker. Come già descritto in precedenza si tratta di uno script eseguto in background all’interno del browser.

Uno dei suoi punti di forza è il fatto che viene eseguito in maniera indipendente ed isolato dal DOM dell’applicazione.

Il suo posizionamento è tra il browser e la rete internet: potremmo considerarlo come una sorta di proxy.

Tecnicamente si tratta di un file javascript che a differenza di altri file javascript viene eseguito in background e viene attivato da particolare eventi che si verificano nel sistema.

In particolare può essere utilizzato anche per fornire token ad api esterne. Vedremo questo particolare tipo di funzionamento in seguito.

L’associazione di un service Worker alle Progressive Web App (PWA) è molto sentita. Questo perchè consentono la realizzazione di applicazioni offline, rendendo disponibili offline risorse proveniente dalla rete internet.

Prima di proseguire nell’analisi dei vantaggi dell’utilizzo di service Worker analizziamo due aspetti piuttosto importanti, che per qualche verso, possono anche essere considerati come limiti.

Il primo è legato al funzionamento soltanto nell’ambito di applicazioni web che utilizzano il protocollo HTTPS.

Questo garantisce anche un livello di sicurezza e impedisce eventuali tentativi di modifica esterna del service worker stesso.

Il secondo, di materia piu tecnica, riguarda la necessità di utilizzare brower di nuova generazione che supportino il lro utilizzo.

Ovviamente anche la scelta del sistema operativo può influenzare la possibilità o meno di utilizzare browser differenti.

Il consiglio prima di addentrarci nell’utilizzo dei service worker è quello di verificare la compatibilità di tutti i browser che dovranno utilizzare l’applicazione o la PWA.

Ma qual’è la reale potenza di un service worker? Cosa possiamo implementare utilizzandoli?

In primo luogo possiamo realizzare applicazione che vengono eseguite in background. Una volta installato, i siti web possono utilizzare il codice messo a disposizione del service worker senza dover aver alcuna pagina aperta.

Tutto questo può avvenire in background.

Sfruttando questa funzionalità possiamo ipotizzare di utilizzare i service worker per la memorizzazione di token di accesso alle api, rendendoli di fatto isolati dal resto dell’applicazione e dal DOM.

Inoltre, l’utilizzo di un service worker è consigliato al momento della realizzazione di applicazioni che dovranno continuare a funzionare anche offline. Per certi versi i service worker vanno a sostituire (rendendo le operazioni piu semplici da gestire) quella che in origine era chiamata AppCache.

Il livello di programmabilità del service worker consente di interagire con la rete esterna: nel caso in cui sia diponibile vengono memorizzate le informazioni necessarie al funzionamento aggiornando quelle esistenti.

Nel caso in cui l’applicazione non abbia connettività, il service worker utilizza le informazioni memorizzate in locale, per garantire il normale funzionamento dell’applicazione sottostante.

Un’altra caratteristica dei service worker è la possibilità di creare applicazioni che sfruttano le notifiche push.

La capacità di utilizzare le notifiche push è fornita dall’esecuzione in background del service worker: utilizzando le Push Api è possibile inviare la notifica al service worker della presenza di una notifica push e mediante le Notification Api è possibile visualizzarla all’interno del browser.

Anche in questo caso è necessario verificare prima di qualsiasi analisi/implementazione, la disponibilità sui browser target di queste funzionalità.

Nei prossimi post ci addentremo in alcuni esempi di come possono essere utilizzati.