En primer lugar, necesitamos saber qué es realmente ” asíncrono” .
La palabra “Asíncrono” se usa de dos maneras dentro del desarrollo web.
En 2005 Jesse James Garrett acuñó la palabra AJAX que significaba “JavaScript y XML asincrónicos”.
Ahora piense en la condición de que esté viendo la página de sus canales de noticias en su Facebook y mientras deseaba que le gustara una foto de su amigo, hizo clic en el botón Me gusta debajo de la foto de su amigo y, de repente, toda la página se actualizó , ¿no sería mejor que la página envíe su solicitud de que me guste esta foto en segundo plano y que el botón Me gusta cambie su estado sin actualizar la página y la base de datos también se actualice, lo que eventualmente le enviará una notificación a su amigo.
Este patrón se llama Ajax, aunque XML ya no se usa pero se usa JSON.
Ahora esta Asíncrona (palabra) se usó en el sentido de que la página no se actualizó para cambiar el contenido.
Hay otro término sin bloqueo . Aquí viene el Node.js. El servidor NodeJs envía y recibe datos del cliente de manera no bloqueante. Aquí, sin bloqueo significa que los datos no se establecerán en una cola y se recibirán en el cliente uno tras otro. Aquí están involucrados HTML 5 WebSockets. WebSockets proporciona una conexión dúplex completa , donde el cliente no necesita enviar una nueva llamada AJAX a través de HTTP para buscar actualizaciones en el servidor, pero el servidor envía las actualizaciones una vez que se establece la conexión, y esta conexión dura hasta que el propio cliente solicite cerrando esta conexión. Esto también se llama comunicación web en tiempo real . Full duplex o web en tiempo real significa que el cliente no necesita esperar para enviar la segunda solicitud para que el servidor complete la primera solicitud, los datos del servidor no bloquean el camino para los datos del cliente y viceversa viceversa
- ¿Cuáles son los pros y los contras del diseño de dos paneles AJAX popularizado por la nueva interfaz de usuario de Twitter?
- Cómo bloquearme de Facebook
- Si construyo mi propia aplicación web compleja (Django) copiando y ajustando pequeños fragmentos de código tomados de 100 aplicaciones simples diferentes escritas por otras personas, ¿puedo considerarme un programador? ¿Por qué? Por qué no?
- ¿Es segura una aplicación web node.js (r) de los ataques DDOS?
- ¿Por qué las aplicaciones de gestión de proyectos no son más innovadoras?
Si miras este video de 9 minutos sobre MeteorJs, sabrás lo poderosa que podría ser la web en tiempo real.
Pero si implementa WebSockets, puede crear el mismo mecanismo en tiempo real en casi todos los idiomas del lado del servidor. Piense en el sistema de chat y notificación de Facebook.
Ahora digamos algunas palabras sobre la programación asincrónica.
La programación asincrónica significa que diferentes bits de código se ejecutan como hilos diferentes. Esto significa que el procesamiento a nivel de aplicación de entrada y salida se realiza en paralelo.
Ahora, si toma un nodo, el nodo tiene un solo subproceso y el procesamiento a nivel de aplicación de entrada y salida no se realiza en paralelo.
Resumen : el nodo se procesa como una aplicación de subproceso único (síncrono) en el procesador y se entrega al cliente de forma no bloqueante (asíncrono / en tiempo real).
También puede lograr este comportamiento sin bloqueo utilizando cualquier otro lenguaje del lado del servidor si implementa websockets en él, por ejemplo, Ratchet – PHP WebSockets.