Was können Servicemitarbeiter tun, was Webmitarbeiter nicht können?

108

Was können Servicemitarbeiter tun, was Webmitarbeiter nicht können? Oder umgekehrt?

Es scheint, dass Web-Worker eine Teilmenge der Funktionalität von Service-Workern sind. Ist das richtig?

Ben Aston
quelle

Antworten:

140

Es gibt einen großen Unterschied, wofür sie bestimmt sind:

Web Worker

Web Worker bieten eine einfache Möglichkeit für Webinhalte, Skripts in Hintergrundthreads auszuführen. Der Worker-Thread kann Aufgaben ausführen, ohne die Benutzeroberfläche zu beeinträchtigen. Darüber hinaus können sie E / A mit XMLHttpRequest ausführen (obwohl die Attribute responseXML und channel immer null sind). Nach der Erstellung kann ein Mitarbeiter Nachrichten an den JavaScript-Code senden, der sie erstellt hat, indem er Nachrichten an einen durch diesen Code angegebenen Ereignishandler sendet (und umgekehrt).

Quelle - Verwenden von Web Workern

Servicemitarbeiter

Servicemitarbeiter fungieren im Wesentlichen als Proxyserver, die sich zwischen Webanwendungen sowie dem Browser und dem Netzwerk befinden (sofern verfügbar). Sie sollen (unter anderem) die Erstellung effektiver Offline-Erlebnisse ermöglichen, Netzwerkanforderungen abfangen und geeignete Maßnahmen ergreifen, je nachdem, ob das Netzwerk verfügbar ist und aktualisierte Assets auf dem Server gespeichert sind. Sie ermöglichen auch den Zugriff auf Push-Benachrichtigungen und Hintergrundsynchronisierungs-APIs.

Quelle - Service Worker-API

Web Worker sind daher praktisch, um teure Skripte auszuführen, ohne dass die Benutzeroberfläche einfriert, während Service Worker nützlich sind, um die Antwort von Netzwerkanforderungen zu ändern (z. B. beim Erstellen einer Offline-App).

Buksy
quelle
1
Was können Servicemitarbeiter tun, was Webmitarbeiter nicht können?
Pacerier
1
@ Pacerier las das zweite Zitat und den letzten Absatz, um deine Frage zu beantworten
Buksy
Ich stimme Pacerier zu, dass dies die Frage nicht beantwortet. Ich erzähle nur, was einer tut und was der andere. Ein Leser könnte auf dieser Grundlage zu einer Schlussfolgerung kommen, aber eine gute Antwort sollte eine Schlussfolgerung des Lesers klarstellen, vielleicht sogar bestätigen oder nicht bestätigen.
Kicia
Ich mag die andere Antwort, die Ali gegeben hat, eine umfassendere Beschreibung der Unterschiede zwischen diesen beiden Technikern. Ich denke jedoch, dass der letzte Absatz meiner Antwort die Frage klar beantwortet. Die Web Worker können Ihnen beim Erstellen der Offline-App helfen . Wenn Sie der Meinung sind, dass es eine bessere Antwort gibt, können Sie gerne eine weitere hinzufügen :)
Buksy
1
@Buksy, Ein Tippfehler in Ihrem Kommentar: Die [[Service]] Mitarbeiter können Ihnen beim Erstellen der Offline-App helfen
Ahmad Mobaraki
143

Buksys Antwort ist richtig, aber meiner Meinung nach beantwortet sie nicht die ursprüngliche Frage: "Was können Servicemitarbeiter tun, was Web-Mitarbeiter nicht können? Oder umgekehrt?"

Es gibt grundlegende Unterschiede in ihrem Lebenszyklus und der Anzahl der Instanzen pro Ursprung, die Sie haben können. Zusamenfassend:

               | Web Workers  | Service Workers  |
|--------------|--------------|------------------|
| Instances    | Many per tab | One for all tabs |
| Lifespan     | Same as tab  | Independent      |
| Intended use | Parallelism  | Offline support  |

Buksys Antwort ist im Grunde die letzte Zeile der Tabelle. Gutschrift: Ich habe diese Tabelle von Nolan Lawson ab Folie 35 aus Demystifying Web Workers and Service Workers entnommen .

Im Folgenden erfahren Sie insbesondere, wie Sie Web-Worker erzeugen und beenden:

Verwenden von Web Workern

in der Erwägung, dass Servicemitarbeiter ihren eigenen Lebenszyklus haben, was zugegebenermaßen ihr "kompliziertester Teil" ist:

Der Service Worker-Lebenszyklus

Der Lebensstil ist also ein grundlegender Unterschied zwischen den beiden (eine Folge ihrer beabsichtigten Verwendung).

Früher gab es einen großen Unterschied in der Browserunterstützung : Servicemitarbeiter waren in Safari für iOS bis 11.3 (29. März 2018) überhaupt nicht verfügbar. Siehe Kann ich Servicemitarbeiter verwenden? Im Gegensatz dazu hatten Web-Worker bereits 2012 eine viel bessere Browser-Unterstützung: Kann ich Web-Worker verwenden?

Wenn Sie IE11 unterstützen müssen, können Sie nur Web-Worker verwenden: IE11 verfügt nicht über Service-Worker, und anscheinend endet die Unterstützung für IE11 am 14. Oktober 2025 .

Es gibt subtile Unterschiede in der API-Unterstützung zwischen den Browsern, siehe HTML5 Worker Test (ebenfalls von Nolan Lawson). In einem bestimmten Browser unterstützt möglicherweise eine Art von Worker einen bestimmten API-Aufruf, die andere nicht. Besuchen Sie diese Seite und testen Sie Ihren eigenen Browser!

Ali
quelle
2
Diese Tabelle erklärt es sehr gut. Die ursprüngliche Frage wäre wahrscheinlich besser formuliert als "Was ist der Unterschied zwischen ..."
Drenai
1
Was können Servicemitarbeiter tun, was Shared Web Worker nicht können?
Pacerier