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:
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.
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).
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:
hizmet çalışanlarının kendi yaşam döngüleri vardır ki bu kuşkusuz onların "en karmaşık kısmı":
Ö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!