2013-10-29 26 views
6

Web Workers sono una tecnologia di cui mi confronto di volta in volta, sia come soggetto di post di blog, sia come menzione in una presentazione.Perché i Web Worker non vengono utilizzati di più?

Durante una presentazione più recente ho partecipato, l'oratore ha detto sui lavoratori web:

Io non sono davvero sicuro perché non vengono utilizzati di più.

mi sono reso conto, avendo pensato, che per una tecnologia con tali benefici evidenti & use cases, i lavoratori web sembrano avere avuto un adozione piuttosto lento, o stretto.

C'è qualche problema inerente con i lavoratori Web che li rende meno utili? Sto solo cercando nei posti sbagliati per esempi del loro uso? Oppure i programmatori JavaScript in generale non sono particolarmente utilizzati per creare applicazioni multi-thread.

+1

Questa è una domanda di opinione, ed è quindi probabile che venga chiusa come fuori tema per Stackoverflow. È una domanda interessante però. – Spudley

+1

@Spudley Avevo paura di questo - sono interessato alle opinioni delle persone finché dura comunque. –

+0

Penso che con alcune riformulazioni potrebbe essere reso un po 'più obiettivo - una domanda che richiede problemi con i Web Workers che impediscono l'adozione potrebbe essere ampia, ma penserei che sarebbe meglio della domanda basata sull'opinione che attualmente è . –

risposta

5

I principali motivi per cui non sono abituati molto (a mio parere):

  1. inerzia. Sono una tecnologia relativamente nuova e le persone non hanno ancora trovato il tempo di impararle. Sei andato a parlarne, il che significa che sei davanti alla curva; c'è un sacco di persone là fuori che non hanno ancora sentito il termine 'web worker' ancora, e tanto meno che pensano di programmarle.

  2. Compatibilità del browser. I browser più vecchi non li supportano. La maggior parte delle persone ha ancora bisogno di supportare almeno IE8 per i propri siti, quindi non può ancora usare la tecnologia come questa.

  3. Perché preoccuparsi? L'unico motivo per utilizzare una nuova tecnologia è se risolve un problema o raggiunge qualcosa di nuovo. La maggior parte dei siti non ha alcuna reale necessità per i web worker. O anche se lo fanno, non lo fanno vedi la necessità.

  4. Non abbastanza lucido. Il web è un mezzo molto visivo e molte delle nuove funzionalità del browser negli ultimi anni sono state molto visive. È facile persuadere qualcuno a provare una nuova funzione se è con aspetto buono. I web worker sono completamente non visivi; i benefici sono astratti. Gli sviluppatori possono farlo, ma per la maggior parte delle aziende le decisioni su cosa spendere tempo e denaro per migliorare un sito sono fatto da non-sviluppatori, il che rende più difficile per i lavoratori di Internet per ottenere un look in.

+0

In modo aneddotico ho osservato che l'inerzia "new tech" è meno comune nello sviluppo Web rispetto ad altre aree. Avevo in mente la mia domanda di più con i creatori di Library in mente, che affronta simultaneamente il terzo punto e rende il secondo particolarmente importante. Suppongo che [Modernizr] (http://modernizr.com/) offra un facile percorso di miglioramento progressivo? In ogni caso penserei che sia stato un gioco da ragazzi per cose come le librerie di giochi [{1}] (http://craftyjs.com/) (con cose come pathfinding ecc ...). Grazie per il vostro feedback! –

0

La mia opinione:

  1. Funzionano bene solo quando è necessario un sacco di calcoli. In altri casi, perdi tempo per condividere le risorse, fondere.
  2. Richiede la codifica aggiuntiva.
  3. per compiti semplici non danno molti vantaggi e JS di solito non sta facendo molti calcoli.
  4. non funziona su tutti i browser, IE8, ie9 non supporta (http://caniuse.com/webworkers)
  5. nessun accesso DOM in worker.
  6. Alcune persone usano solo setTimeout, setInterval, MA in queste non sono più minacce, solo 1 CPU funziona nello stesso momento.
  7. Non funzionano bene, quindi c'è solo 1 CPU. Modifica: ottieni benefici dai processi di esecuzione in background.
  8. a volte è difficile condividere le risorse, ci vuole troppo tempo e nel risultato finale non va bene.

Ma quando hai bisogno di fare un sacco di calcoli o eseguire processi pesanti in background, e si può ignorare i vecchi browser, i lavoratori web funziona davvero bene.

+0

Non sono sicuro che il punto 7 sia valido. La schedulazione dei thread è ancora meglio di niente, anche nel mondo del non-deal di essere limitato a un singolo processore. Le CPU sono intelligenti :) –

+0

d'accordo, aggiornato e aggiunto più informazioni. – ViliusL

0

Di solito, il sito Web con i calcoli sono i siti Intranet. La maggior parte delle grandi aziende utilizza prodotti Microsoft e utilizza IE come browser. Non è facile avere l'ultima versione di IE perché l'aggiornamento può distruggere molti siti Web intranet. Attualmente la mia azienda utilizza IE 9 e hanno in programma di passare a IE 10 in 2 anni .... Ho molte applicazioni che possono utilizzare Web Workers ma non posso perché non ho IE 10 ..

1

Non avere la maggior parte delle API supportate dai lavoratori ha messo un freno al loro utilizzo per molti dei miei progetti.

Firefox non avrà il supporto Websocket fino alla v35, performance.now in v34, e non c'è data per il supporto IndexedDB. Chrome ha recentemente aggiunto TextEncoder/Decoder in v38 e non può passare ImageData. Alcune funzionalità possono essere ingrandite, ma altre non possono, o sono particolarmente dolorose per aggirare lo scopo.

WebSocket non completati.

Problemi correlati