in Architettura Software

Web Workers

I WebWorker consento di eseguire script javascript in background, in thread separati consentendo un livello di parallismo che impedisce di bloccare il thread principale.

Consentono di eseguire script (anche complessi) ma non di apportare modifiche direttamente al DOM. In questo modo estendono le funzionalità di javascript che viene eseguito all’interno di un unico thread e che potrebbe bloccare l’interfaccia UI del browser.

La presenza dei WebWorker è stata inseriti all’interno di HTML5 e consente di mantenere reattive le UI delle applicazioni web anche in presenza di attività lunghe e complesse.

Javascript come linguaggio consente di eseguire attività asincrone, ma non parallele. Ogni elaborazione viene effettuata all’interno del thread principale, anche se possiamo in qualche modo simulare una specie di parallellismo .

E’ importante notare che all’interno del web worker non è possibile modificare il DOM: questa funzionalità rispecchia un’architettura legata alla sicurezza. E’ comunque possibile, con qualche riga di codice, delegare al thread principale la possibilità di modificare il DOM.

Altro punto importante è che un web worker deve rispettare la same-origin policy , ovvero che non può accedere ad url al di fuori di quello in cui è scato scaricato lo script del thread principale.

Lo scambio di messaggi tra il thread principale ed il thread del worker deve utilizzare strutture date primitive, non è possibile lo scambio di funzioni.

Un WebWorker esegue un file script per eseguire attività.

Le specifiche del W3C in cui vengono definite le caratteristiche dei web worker possono essere scaricate da qui.

Un web worker è un oggetto che istanza un oggetto Worker che puà essere

  • dedicated worker: è un worker che viene utilizzato solo dallo script che lo ha invocato. Solitamente utilizzati per poter eseguire un unico web worker
  • shared worker: è l’opposto di un dedicated worker. Garantisce l’accesso a molti scripts e può e può eseguire tutti i task presenti all’interno del web worker
  • service worker: ha le funzionalità di proxy tra l’applicazione ed il browser, consente di eseguire gli scritps anche nel caso di applicazioni che devono essere eseguite offline.