Saltar al contenido

Tipos de comunicación

Este tutorial expone los distintos tipos de comunicación que usan las aplicaciones para comunicarse entre procesos.

Como necesidad de comunicación entre los procesos surgen diferentes metdologías o formas de comunicación llamadas paradigmas de la comunicación.

Podemos realizar dos separaciones entre los distintos tipos de comunicación, la comunicación asíncrona y la síncrona.

La comunicación asíncrona podemos realizarla entre procesos que no estén en el mismo espacio de tiempo, no hace falta por lo tanto que sean simultáneos

Sin embargo, para la comunicación síncrona necesitamos que los procesos sean simultáneos y se lleven en el mismo momento de tiempo.

Los mecanismos de comunicación deben de conocer si los mensajes llegan o no al receptor y que hacer en el caso de que existiese algún problema.

También podemos subclasificar los envíos de los mensajes dependiendo de su topología, es decir, si el mensaje se envía a uno (unicast), uno a muchos (multicast o broadcast) o muchos a uno (cliente y servidor).

Envío de mensajes

En programación los programadores realizan subprogramas que contienen variables y pueden enviar o recibir datos entre ellos intercambiando “mensajes”. Para ello el emisor enviara un mensaje a través del canal de comunicación y el receptor podrá leerlo con las limitaciones que tenga ese canal.

Para lograr el paso de mensajes se usan determinadas API que han sido desarrolladas para esto entre las que podemos destacar SOAP, CORBA, REST o D-Bus

Estas API engloban las siguientes características:

– Primitivas de paso de mensajes punto a punto

– Primitivas de sincronización.

– Primitivas de comunicaciones colectivas

A la hora de desarrollar esto debemos de tener en cuenta entre otras cosas:

– Si la comunicación es síncrona o asíncrona.
– Si el envío será fiable.
– Si el envío llegará en orden o no
– Si los mensajes se envían uno a uno, uno a muchos, etc.

Memoria compartida

La memoria compartida se utiliza por la rapidez que nos ofrece para comunicar procesos, aunque tiene algunas limitaciones como que habitualmente los procesos deben de estar en la misma máquina (aunque existen sistemas de memoria compartida distribuida).

La memoria compartida requiere el uso de un protocolo que garantice la coherencia de los datos con los que trabaja.

Invocación Remota RPC.

RPC corresponde a la ejecución remata de procedimientos, que junto con el paso de mensajes es la forma más usada para la comunicación de aplicaciones distribuidas.

A través de la invocación remota podemos ejecutar procesos que se encuentran en otra dirección de red, que habitualmente están en otro equipo.

Utilizando RPC el programador es totalmente transparente a que el proceso se ejecuta en otra máquina remota, y cuando la máquina remota acabe el proceso enviará el resultado.

Publicación y suscripción

Es un tipo de comunicación en el que el emisor publica en un espacio sin conocer o saber quiénes son los receptores, los cuales estarán suscritos y recibirán los mensajes de las categorías a las que estén suscritas.

Comunicación por eventos

Este tipo de comunicación está formado por los eventos que surgen dentro de los procesos que corren en el sistema.

Habitualmente, para llevarlo a cabo se utilizan observadores o listener que “escuchan” determinados procesos, es decir, los observadores reciben una notificación de los procesos indicando que ha ocurrido un determinado evento.