webentwicklung-frage-antwort-db.com.de

Was können Service-Mitarbeiter tun, was Web-Mitarbeiter nicht können?

Was können Service-Mitarbeiter tun, was Web-Mitarbeiter nicht können? Oder umgekehrt?

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

66
Ben

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. Außerdem können sie mithilfe von XMLHttpRequest E/A ausführen (obwohl die Attribute responseXML und channel immer null sind). Nach der Erstellung kann ein Worker 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 Webworkern

Servicemitarbeiter

Service-Mitarbeiter fungieren im Wesentlichen als Proxy-Server, die zwischen Webanwendungen und dem Browser und dem Netzwerk (sofern verfügbar) eingesetzt werden. 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 Ressourcen auf dem Server vorhanden sind. Sie ermöglichen auch den Zugriff auf Push-Benachrichtigungen und Hintergrundsynchronisierungs-APIs.

Source - Service Worker API

So können Sie mit Web Workern teure Skripts ausführen, ohne dass die Benutzeroberfläche einfriert, und mit Service Workern können Sie die Antwort von Netzwerkanforderungen ändern (z. B. beim Erstellen einer Offline-App).

93
Buksy

Buksys Antwort ist richtig, aber meiner Meinung nach beantwortet es nicht die ursprüngliche Frage, nämlich: "Was können Servicemitarbeiter tun, was Webmitarbeiter nicht können? Or. En umgekehrt? "

Es gibt grundlegende Unterschiede in ihrem Lebenszyklus und der Anzahl der Instanzen pro Origin, 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. Kredit: Ich nahm diese Tabelle von Demystifying Web Workers und Service Workers von Nolan Lawson, beginnend mit Folie 35 .

Im Einzelnen erfahren Sie hier, wie Sie Web Worker erzeugen und beenden:

Verwenden von Webworkern

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

Der Service Worker Lifecycle

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: Service-Mitarbeiter waren in Safari für iOS bis 11.3 (29. März 2018) überhaupt nicht verfügbar, siehe Kann ich Service-Mitarbeiter einsetzen? Im Gegensatz dazu hatten Web-Mitarbeiter eine viel bessere Browser-Unterstützung bereits im Jahr 2012: Kann ich Web-Worker verwenden?

Es gibt subtile Unterschiede in der API-Unterstützung zwischen den Browsern, siehe HTML5 Worker Test (auch von Nolan Lawson). In einem bestimmten Browser kann eine Art von Worker einen bestimmten API-Aufruf unterstützen, während der andere dies nicht tut. Besuchen Sie diese Seite und testen Sie Ihren eigenen Browser!

63
Ali