Co mogą zrobić pracownicy usług, czego nie potrafią pracownicy sieci?

111

Co mogą zrobić pracownicy usług, czego nie potrafią pracownicy sieci? Lub odwrotnie?

Wygląda na to, że pracownicy sieciowi są podzbiorem funkcjonalności pracowników usług. Czy to jest poprawne?

Ben Aston
źródło

Odpowiedzi:

141

Istnieje duża różnica w tym, do czego są przeznaczone:

Pracownicy sieciowi

Web Workers zapewniają prosty sposób na uruchamianie skryptów w treści WWW w wątkach w tle. Wątek roboczy może wykonywać zadania bez ingerencji w interfejs użytkownika. Ponadto mogą wykonywać operacje we / wy za pomocą XMLHttpRequest (chociaż atrybuty responseXML i kanał są zawsze zerowe). Po utworzeniu pracownik może wysyłać komunikaty do kodu JavaScript, który go utworzył, wysyłając komunikaty do modułu obsługi zdarzeń określonego przez ten kod (i odwrotnie).

Źródło - Korzystanie z zasobów sieciowych

Service Worker

Pracownicy usług zasadniczo działają jako serwery proxy, które znajdują się między aplikacjami internetowymi a przeglądarką i siecią (jeśli są dostępne). Mają one na celu (między innymi) umożliwienie tworzenia efektywnych doświadczeń offline, przechwytywania żądań sieciowych i podejmowania odpowiednich działań w oparciu o to, czy sieć jest dostępna, a zaktualizowane zasoby znajdują się na serwerze. Umożliwiają również dostęp do powiadomień push i interfejsów API synchronizacji w tle.

Źródło - Service Worker API

Dlatego pracownicy sieciowi są przydatni do uruchamiania kosztownych skryptów bez powodowania zawieszania się interfejsu użytkownika, podczas gdy pracownicy usług są przydatni do modyfikowania odpowiedzi na żądania sieciowe (na przykład podczas budowania aplikacji offline).

Buksy
źródło
1
Co mogą zrobić pracownicy usług, czego nie potrafią pracownicy sieci?
Pacerier
1
@Pacerier przeczytaj drugi cytat i ostatni akapit, aby odpowiedzieć na twoje pytanie
Buksy
Zgadzam się z Pacerierem, że to nie odpowiada na pytanie. Mówię tylko, co robi, a co drugie. Czytelnik mógłby na tej podstawie dojść do wniosku, ale dobra odpowiedź powinna wyjaśnić, a może nawet potwierdzić lub zaprzeczyć wnioskowi czytelnika.
kicia
Podoba mi się inna odpowiedź, którą udzielił Ali, jest to szerszy opis różnic między tymi dwoma technikami. Ale myślę, że ostatni akapit mojej odpowiedzi jasno odpowiada na pytanie, pracownicy sieci mogą pomóc ci zbudować aplikację offline . Jeśli uważasz, że jest lepsza odpowiedź, możesz dodać kolejną :)
Buksy
1
@Buksy, literówka w Twoim komentarzu: [[Service]] Pracownicy mogą pomóc Ci w tworzeniu aplikacji offline
Ahmad Mobaraki
146

Odpowiedź Buksy'ego jest prawidłowa, ale moim zdaniem nie odpowiada na pierwotne pytanie, a mianowicie: "Co mogą zrobić pracownicy usług, czego pracownicy sieci nie mogą? Albo odwrotnie?"

Istnieją fundamentalne różnice w ich cyklu życia i liczbie instancji na źródło, które możesz mieć. W skrócie:

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

Odpowiedź Buksy'ego to w zasadzie ostatni wiersz tabeli. Kredyt: Wziąłem tę tabelę od Demystifying Web Workers and Service Workers autorstwa Nolana Lawsona, zaczynając od slajdu 35 .

W szczególności, oto jak spawnujesz i usuwasz pracowników internetowych:

Korzystanie z pracowników sieci Web

mając na uwadze, że pracownicy usług mają swój własny cykl życia, który jest ich „najbardziej skomplikowaną częścią”:

Cykl życia elementu Service Worker

Tak więc styl życia jest podstawową różnicą między nimi (konsekwencją ich zamierzonego użycia).

Kiedyś istniała ogromna różnica w obsłudze przeglądarek : pracownicy serwisu nie byli w ogóle dostępni w Safari na iOS do 11.3 (29 marca 2018), zobacz Czy mogę korzystać z pracowników usług? Z drugiej strony pracownicy sieciowi mieli znacznie lepszą obsługę przeglądarek już w 2012 roku: Czy mogę korzystać z pracowników internetowych?

Jeśli musisz obsługiwać IE11, możesz używać tylko pracowników internetowych: IE11 nie ma pracowników usług i najwyraźniej koniec wsparcia dla IE11 przypada na 14 października 2025 r .

Istnieją subtelne różnice w obsłudze interfejsów API w różnych przeglądarkach, zobacz HTML5 Worker Test (również autorstwa Nolana Lawsona). W określonej przeglądarce jeden rodzaj pracownika może obsługiwać określone wywołanie interfejsu API, podczas gdy drugi nie. Odwiedź tę stronę i przetestuj własną przeglądarkę!

Ali
źródło
3
Ta tabela bardzo dobrze to wyjaśnia. Oryginalne pytanie prawdopodobnie byłoby lepiej sformułowane jako „Jaka jest różnica między ...”
Drenai,
1
Co mogą zrobić pracownicy usług, czego nie potrafią współdzieleni pracownicy sieci?
Pacerier