Hizmet çalışanları web çalışanlarının yapamayacağı ne yapabilir?


112

Hizmet çalışanları web çalışanlarının yapamayacağı ne yapabilir? Ya da tam tersi?

Görünüşe göre web çalışanları, hizmet çalışanlarının işlevselliğinin bir alt kümesi. Bu doğru mu?

Yanıtlar:


143

Amaçlandıkları şey arasında büyük bir fark var:

Web Çalışanları

Web Çalışanları, web içeriğinin komut dosyalarını arka planda çalıştırması için basit bir yol sağlar. Çalışan iş parçacığı, kullanıcı arabirimine müdahale etmeden görevleri gerçekleştirebilir. Ek olarak, XMLHttpRequest kullanarak G / Ç gerçekleştirebilirler (responseXML ve kanal öznitelikleri her zaman boş olsa da). Çalışan, oluşturulduktan sonra, onu oluşturan JavaScript koduna, bu kodla belirtilen bir olay işleyicisine mesajlar göndererek mesajlar gönderebilir (ve bunun tersi de geçerlidir).

Kaynak - Web Çalışanlarını Kullanma

Hizmet Çalışanı

Hizmet çalışanları temelde web uygulamaları ile tarayıcı ve ağ (mevcut olduğunda) arasında yer alan proxy sunucuları olarak hareket eder. Bunlar (diğer şeylerin yanı sıra) etkili çevrimdışı deneyimler oluşturmayı, ağ isteklerini yakalamayı ve ağın kullanılabilir olup olmadığına ve güncellenmiş varlıkların sunucuda bulunup bulunmadığına bağlı olarak uygun eylemi gerçekleştirmeyi amaçlamaktadır. Ayrıca push bildirimlerine ve arka planda senkronizasyon API'lerine erişime izin verirler.

Kaynak - Service Worker API

Dolayısıyla, Web Çalışanları, kullanıcı arayüzünün donmasına neden olmadan pahalı komut dosyalarını çalıştırmak için kullanışlıdır, Hizmet Çalışanları ise ağ isteklerinden gelen yanıtı değiştirmek için kullanışlıdır (örneğin, çevrimdışı bir uygulama oluştururken).


1
Hizmet çalışanları web çalışanlarının yapamayacağı ne yapabilir?
Pacerier

1
@Pacerier sorunuzu yanıtlamak için ikinci alıntıyı ve son paragrafı oku
Buksy

Pacerier ile bunun soruyu yanıtlamadığına katılıyorum. Ben sadece birinin ne yaptığını ve diğerinin ne yaptığını söylüyorum. Bir okuyucu buna dayanarak bir sonuca varabilir, ancak iyi bir cevap okuyucunun bir sonucunu açıklığa kavuşturmalı, hatta doğrulamalı veya onaylamamalıdır.
kicia

Ali'nin verdiği diğer yanıtı beğendim, bu iki teknoloji arasındaki farklılıkların daha geniş bir açıklaması. Ancak yanıtımın son paragrafının soruyu net bir şekilde yanıtladığını düşünüyorum, Web Çalışanları çevrimdışı uygulamayı oluşturmanıza yardımcı olabilir . Eğer gidecekseniz, daha iyi bir cevap düşünüyorsanız, başka :) eklemek için çekinmeyin
Buksy

1
@Buksy, Yorumunuzda bir yazım hatası: [[Hizmet]] Çalışanlar çevrimdışı uygulamayı oluşturmanıza yardımcı olabilir
Ahmad Mobaraki

149

Buksy'nin cevabı doğru ama bence asıl soruya cevap vermiyor: "Servis çalışanları ne yapabilir ki web çalışanları yapamaz mı? Ya da tam tersi?"

Yaşam döngüleri ve sahip olabileceğiniz kaynak başına örnek sayısında temel farklılıklar vardır. Kısacası:

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

Buksy'nin cevabı temelde tablonun son satırıdır. Kredi: Bu tabloyu, 35. slayttan başlayarak Nolan Lawson'ın Demystifying Web Workers and Service Workers kitabından aldım .

Özellikle, web çalışanlarını şu şekilde ortaya çıkarır ve sonlandırırsınız:

Web Çalışanlarını Kullanma

hizmet çalışanlarının kendi yaşam döngüleri vardır ki bu kuşkusuz onların "en karmaşık kısmı":

Hizmet Çalışanı Yaşam Döngüsü

Öyleyse, yaşam tarzı ikisi arasındaki temel bir farktır (amaçlanan kullanımlarının bir sonucudur).

Tarayıcı desteğinde çok büyük bir fark vardı: Servis çalışanları 11.3'e (2018 Mart 29) kadar iOS için Safari'de hiç mevcut değildi, bkz. Servis çalışanlarını kullanabilir miyim? Bunun aksine, web çalışanları 2012'de çok daha iyi bir tarayıcı desteğine sahipti: Web çalışanlarını kullanabilir miyim?

IE11 hizmet işçileri yoktur ve görünüşe: Eğer IE11 desteklemek varsa, sadece web işçileri kullanabilirsiniz IE11 için destek sonu 14 Ekim olduğunu 2025 .

Tarayıcılar arasında API desteğinde ince farklılıklar vardır , bkz. HTML5 Worker Test (ayrıca Nolan Lawson tarafından). Belirli bir tarayıcıda, bir tür çalışan belirli bir API çağrısını desteklerken diğeri desteklemez. Bu sayfayı ziyaret edin ve kendi tarayıcınızı test edin!


3
Bu tablo bunu çok iyi açıklıyor. Orijinal soru muhtemelen "
Aradaki

1
Hizmet çalışanları, paylaşılan web çalışanlarının yapamayacağı ne yapabilir?
Pacerier
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.