Apa yang bisa dilakukan pekerja layanan yang tidak bisa dilakukan oleh pekerja web?

109

Apa yang bisa dilakukan pekerja layanan yang tidak bisa dilakukan oleh pekerja web? Atau sebaliknya?

Tampaknya pekerja web adalah bagian dari fungsionalitas pekerja layanan. Apakah ini benar?

Ben Aston
sumber

Jawaban:

140

Ada perbedaan besar dalam tujuan mereka:

Pekerja Web

Pekerja Web menyediakan cara sederhana bagi konten web untuk menjalankan skrip di utas latar belakang. Rangkaian pekerja dapat melakukan tugas tanpa mengganggu antarmuka pengguna. Selain itu, mereka dapat melakukan I / O menggunakan XMLHttpRequest (meskipun atribut responseXML dan saluran selalu null). Setelah dibuat, seorang pekerja dapat mengirim pesan ke kode JavaScript yang membuatnya dengan memposting pesan ke event handler yang ditentukan oleh kode itu (dan sebaliknya.)

Sumber - Menggunakan Pekerja Web

Pekerja Layanan

Pekerja layanan pada dasarnya bertindak sebagai server proxy yang berada di antara aplikasi web, dan browser serta jaringan (jika tersedia). Mereka dimaksudkan untuk (antara lain) memungkinkan pembuatan pengalaman offline yang efektif, mencegat permintaan jaringan, dan mengambil tindakan yang sesuai berdasarkan ketersediaan jaringan dan aset yang diperbarui berada di server. Mereka juga akan mengizinkan akses ke pemberitahuan push dan API sinkronisasi latar belakang.

Sumber - API Pekerja Layanan

Jadi Web Worker berguna untuk menjalankan skrip mahal tanpa menyebabkan antarmuka pengguna terhenti, sedangkan Service Worker berguna untuk mengubah respons dari permintaan jaringan (misalnya, saat membuat aplikasi offline).

Buksy
sumber
1
Apa yang bisa dilakukan pekerja layanan yang tidak bisa dilakukan oleh pekerja web?
Pacerier
1
@Pacerier membaca kutipan kedua dan paragraf terakhir untuk menjawab pertanyaan Anda
Buksy
Saya setuju dengan Pacerier bahwa ini tidak menjawab pertanyaan tersebut. Saya hanya memberi tahu apa yang dilakukan dan apa yang dilakukan yang lain. Seorang pembaca mungkin sampai pada kesimpulan berdasarkan itu, tetapi jawaban yang baik harus menjelaskan, bahkan mungkin mengkonfirmasi atau tidak mengonfirmasi kesimpulan pembaca.
kicia
Saya suka jawaban lain yang diberikan Ali, deskripsi yang lebih luas tentang perbedaan antara kedua teknisi tersebut. Tapi saya pikir paragraf terakhir dari jawaban saya dengan jelas menjawab pertanyaan itu, Pekerja Web dapat membantu Anda membangun aplikasi offline . Jika menurut Anda ada jawaban yang lebih baik, silakan tambahkan lagi :)
Buksy
1
@Buksy, Salah ketik di komentar Anda: [[Layanan]] Pekerja dapat membantu Anda membuat aplikasi offline
Ahmad Mobaraki
144

Jawaban Buksy benar tetapi menurut saya tidak menjawab pertanyaan awal, yaitu: "Apa yang bisa dilakukan service worker yang tidak bisa dilakukan oleh web worker? Atau sebaliknya?"

Ada perbedaan mendasar dalam siklus hidupnya dan jumlah instans per asal yang dapat Anda miliki. Pendeknya:

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

Jawaban Buksy pada dasarnya adalah baris terakhir dari tabel tersebut. Kredit: Saya mengambil tabel ini dari Demystifying Web Workers and Service Workers oleh Nolan Lawson, mulai dari slide 35 .

Secara khusus, berikut adalah cara Anda menelurkan dan menghentikan pekerja web:

Menggunakan Pekerja Web

sedangkan pekerja layanan memiliki siklus hidup mereka sendiri, yang diakui sebagai "bagian paling rumit" mereka:

Siklus Hidup Pekerja Layanan

Jadi gaya hidup adalah salah satu perbedaan mendasar antara keduanya (konsekuensi dari tujuan penggunaannya).

Dulu ada perbedaan besar dalam dukungan browser : Pekerja layanan tidak tersedia sama sekali di Safari untuk iOS hingga 11,3 (29 Maret 2018), lihat Bisakah saya menggunakan pekerja layanan? Sebaliknya, pekerja web memiliki dukungan browser yang jauh lebih baik di tahun 2012: Dapatkah saya menggunakan pekerja web?

Jika Anda harus mendukung IE11, Anda hanya dapat menggunakan pekerja web: IE11 tidak memiliki pekerja layanan, dan tampaknya akhir dari dukungan untuk IE11 adalah pada 14 Oktober 2025 .

Ada perbedaan halus dalam dukungan API mereka di seluruh browser, lihat Tes Pekerja HTML5 (juga oleh Nolan Lawson). Di browser tertentu, satu jenis pekerja mungkin mendukung panggilan API tertentu sedangkan yang lainnya tidak. Kunjungi halaman itu dan uji browser Anda sendiri!

Ali
sumber
3
Tabel itu menjelaskannya dengan sangat baik. Pertanyaan awal mungkin akan lebih baik diutarakan sebagai "Apa perbedaan antara ..."
Drenai
1
Apa yang dapat dilakukan pekerja layanan yang tidak dapat dilakukan oleh pekerja web bersama?
Pacerier