javascript - validacion - ¿Qué pueden hacer los trabajadores de servicios que los trabajadores web no pueden hacer?
validar formulario javascript html5 (2)
¿Qué pueden hacer los trabajadores de servicios que los trabajadores web no pueden hacer? ¿O viceversa?
Parece que los trabajadores web son un subconjunto de la funcionalidad de los trabajadores del servicio. ¿Es esto correcto?
Hay una gran diferencia en lo que están destinados:
Trabajadores web
Web Workers proporciona un medio simple para que el contenido web ejecute scripts en subprocesos en segundo plano. El subproceso de trabajo puede realizar tareas sin interferir con la interfaz de usuario. Además, pueden realizar E / S utilizando XMLHttpRequest (aunque los atributos responseXML y channel siempre son nulos). Una vez creado, un trabajador puede enviar mensajes al código JavaScript que lo creó publicando mensajes en un controlador de eventos especificado por ese código (y viceversa).
Fuente: uso de trabajadores web
Trabajador del servicio
Los trabajadores de servicios esencialmente actúan como servidores proxy que se ubican entre las aplicaciones web y el navegador y la red (cuando están disponibles). Su objetivo es (entre otras cosas) permitir la creación de experiencias fuera de línea efectivas, interceptar las solicitudes de la red y tomar las medidas adecuadas en función de si la red está disponible y los activos actualizados residen en el servidor. También permitirán el acceso a notificaciones push y API de sincronización en segundo plano.
Por lo tanto, Web Workers es útil para ejecutar scripts costosos sin causar que la interfaz de usuario se congele, mientras que los Service Workers son útiles para modificar la respuesta de las solicitudes de red (por ejemplo, al crear una aplicación fuera de línea).
La respuesta de Buksy es correcta, pero en mi opinión no responde a la pregunta original, a saber: "¿Qué pueden hacer los trabajadores de servicios que los trabajadores de la web no pueden hacer o viceversa?"
Existen diferencias fundamentales en su ciclo de vida y la cantidad de instancias por origen que puede tener. En breve:
| Web Workers | Service Workers |
|--------------|--------------|------------------|
| Instances | Many per tab | One for all tabs |
| Lifespan | Same as tab | Independent |
| Intended use | Parallelism | Offline support |
La respuesta de Buksy es básicamente la última fila de la tabla. Crédito: Tomé esta tabla de Demystifying Web Workers and Service Workers de Nolan Lawson, a partir de la diapositiva 35 .
En particular, así es como genera y termina trabajadores web:
Considerando que los trabajadores de servicios tienen su propio ciclo de vida, que es sin duda su "parte más complicada":
El ciclo de vida del trabajador de servicio
Así que el ciclo vital es una diferencia fundamental entre los dos (una consecuencia de su uso previsto).
Solía haber una gran diferencia en el soporte del navegador: los trabajadores de servicio no estaban disponibles en Safari para iOS hasta el 11.3 (29 de marzo de 2018), consulte ¿Puedo usar trabajadores de servicio? En contraste, los trabajadores web ya tenían un soporte de navegador mucho mejor en 2012: ¿Puedo usar trabajadores web?
Existen diferencias sutiles en su compatibilidad con API en todos los navegadores, consulte Prueba de trabajo HTML5 (también de Nolan Lawson). En un navegador en particular, un tipo de trabajador podría admitir una determinada llamada API mientras que el otro no. ¡Visita esa página y prueba tu propio navegador!