พนักงานบริการสามารถทำอะไรได้บ้างที่พนักงานทำเว็บทำไม่ได้


112

พนักงานบริการสามารถทำอะไรได้บ้างที่พนักงานทำเว็บทำไม่ได้ หรือในทางกลับกัน?

ดูเหมือนว่าผู้ปฏิบัติงานบนเว็บจะเป็นส่วนหนึ่งของฟังก์ชันการทำงานของผู้ปฏิบัติงานบริการ ถูกต้องหรือไม่

คำตอบ:


143

มีความแตกต่างอย่างมากในสิ่งที่พวกเขามีไว้สำหรับ:

คนงานเว็บ

Web Workers ให้วิธีง่ายๆสำหรับเนื้อหาเว็บในการรันสคริปต์ในเธรดพื้นหลัง เธรดผู้ปฏิบัติงานสามารถทำงานได้โดยไม่รบกวนส่วนติดต่อผู้ใช้ นอกจากนี้ยังสามารถดำเนินการ I / O โดยใช้ XMLHttpRequest (แม้ว่าคุณสมบัติ responseXML และ channel จะเป็นโมฆะเสมอ) เมื่อสร้างแล้วผู้ปฏิบัติงานสามารถส่งข้อความไปยังรหัส JavaScript ที่สร้างขึ้นโดยโพสต์ข้อความไปยังตัวจัดการเหตุการณ์ที่ระบุโดยรหัสนั้น (และในทางกลับกัน)

ที่มา - การใช้ Web Workers

พนักงานบริการ

โดยพื้นฐานแล้วผู้ให้บริการจะทำหน้าที่เป็นพร็อกซีเซิร์ฟเวอร์ที่อยู่ระหว่างเว็บแอปพลิเคชันกับเบราว์เซอร์และเครือข่าย (เมื่อมี) พวกเขามีจุดมุ่งหมายเพื่อ (เหนือสิ่งอื่นใด) ทำให้สามารถสร้างประสบการณ์ออฟไลน์ที่มีประสิทธิภาพสกัดกั้นคำขอของเครือข่ายและดำเนินการที่เหมาะสมโดยพิจารณาว่าเครือข่ายนั้นพร้อมใช้งานหรือไม่และเนื้อหาที่อัปเดตอยู่บนเซิร์ฟเวอร์ นอกจากนี้ยังอนุญาตให้เข้าถึงการแจ้งเตือนแบบพุชและ API การซิงค์พื้นหลัง

ที่มา - Service Worker API

ดังนั้น Web Workers จึงมีความสะดวกในการเรียกใช้สคริปต์ราคาแพงโดยไม่ทำให้อินเทอร์เฟซผู้ใช้หยุดทำงานในขณะที่ Service Workers มีประโยชน์ในการแก้ไขการตอบสนองจากคำขอของเครือข่าย (ตัวอย่างเช่นเมื่อสร้างแอปออฟไลน์)


1
พนักงานบริการสามารถทำอะไรได้บ้างที่พนักงานทำเว็บทำไม่ได้
Pacerier

1
@Pacerier อ่านใบเสนอราคาที่สองและย่อหน้าสุดท้ายเพื่อตอบคำถามของคุณ
Buksy

ฉันเห็นด้วยกับ Pacerier ว่าสิ่งนี้ไม่ตอบคำถาม ฉันบอกแค่ว่าคนหนึ่งทำอะไรและอีกคนทำอะไร ผู้อ่านอาจได้ข้อสรุปจากข้อมูลนี้ แต่คำตอบที่ดีควรให้ความกระจ่างอาจจะยืนยันหรือไม่ยืนยันข้อสรุปของผู้อ่าน
kicia

ฉันชอบคำตอบอื่น ๆ ที่ Ali ให้ไว้นั่นคือคำอธิบายที่กว้างขึ้นเกี่ยวกับความแตกต่างระหว่างเทคโนโลยีทั้งสองนี้ แต่ฉันคิดว่าย่อหน้าสุดท้ายของคำตอบของฉันตอบคำถามได้อย่างชัดเจนWeb Workers สามารถช่วยคุณสร้างแอปออฟไลน์ได้ หากคุณคิดว่ามีคำตอบที่ดีกว่า
อย่า

1
@Buksy พิมพ์ผิดในความคิดเห็นของคุณ: [[บริการ]] คนงานสามารถช่วยคุณสร้างแอปออฟไลน์ได้
Ahmad Mobaraki

149

คำตอบของ Buksyนั้นถูกต้อง แต่ในความคิดของฉันมันไม่ได้ตอบคำถามเดิมกล่าวคือ: "พนักงานบริการทำอะไรได้บ้างที่คนทำงานบนเว็บทำไม่ได้หรือในทางกลับกัน"

มีความแตกต่างพื้นฐานในวงจรชีวิตและจำนวนอินสแตนซ์ต่อจุดเริ่มต้นที่คุณมีได้ ในระยะสั้น:

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

คำตอบของ Buksy คือแถวสุดท้ายของตาราง เครดิต: ผมเอาตารางนี้จากการเข้าใจอย่างลึกซึ้งเว็บแรงงานและพนักงานบริการโดยโนแลนลอว์สันเริ่มต้นจากสไลด์ 35

โดยเฉพาะอย่างยิ่งนี่คือวิธีที่คุณวางไข่และเลิกจ้างพนักงานเว็บ:

การใช้ Web Workers

ในขณะที่พนักงานบริการมีวงจรชีวิตของตนเองซึ่งเป็นที่ยอมรับว่า "ส่วนที่ซับซ้อนที่สุด":

วงจรชีวิตของพนักงานบริการ

รูปแบบชีวิตจึงเป็นความแตกต่างพื้นฐานอย่างหนึ่งระหว่างสองสิ่งนี้ (อันเป็นผลมาจากการใช้งานที่ตั้งใจไว้)

เคยมีความแตกต่างอย่างมากในการรองรับเบราว์เซอร์ : พนักงานบริการไม่สามารถใช้ได้เลยใน Safari สำหรับ iOS จนถึงวันที่ 11.3 (29 มีนาคม 2018) โปรดดูที่ฉันสามารถใช้พนักงานบริการได้หรือไม่ ในทางตรงกันข้ามผู้ปฏิบัติงานบนเว็บมีการรองรับเบราว์เซอร์ที่ดีขึ้นมากในปี 2012: ฉันสามารถใช้ Web Worker ได้หรือไม่

ถ้าคุณได้ให้การสนับสนุน IE11, คุณสามารถใช้แรงงานเว็บ: IE11 ไม่ได้มีคนงานบริการและเห็นได้ชัดในตอนท้ายของการสนับสนุนสำหรับ IE11 เป็น 14 เดือนตุลาคม,ในปี 2025

มีความแตกต่างเล็กน้อยในการรองรับ APIในเบราว์เซอร์โปรดดูHTML5 Worker Test (โดย Nolan Lawson) ในเบราว์เซอร์เฉพาะผู้ปฏิบัติงานประเภทหนึ่งอาจรองรับการเรียก API บางอย่างในขณะที่อีกประเภทหนึ่งไม่รองรับ ไปที่หน้านั้นและทดสอบเบราว์เซอร์ของคุณเอง!


3
ตารางนั้นอธิบายได้ดีมาก คำถามเดิมน่าจะเป็น
Drenai

1
พนักงานบริการสามารถทำอะไรได้บ้างที่ผู้ปฏิบัติงานเว็บที่ใช้ร่วมกันทำไม่ได้
Pacerier
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.