Nótese que, en la práctica, muy pocos sistemas siguen un único paradigma el pie de la letra: o realizan algunas modificaciones, o combinan varios de ellos dependiendo del caso.
Características
Las características de una aplicación o programa distribuido son:
- Comunicación entre procesos: participación de dos o más procesos y que intercambien datos entre ellos (IPC).
- Sincronización de eventos: envío y recepción de forma sincronizada. Una comunicación solo es efectiva cuando uno transmite y otro recibe, y en el orden preciso: el receptor debe estar preparado antes de la transmisión o se podrían perder datos.
Abstracciones
Proceso mental que consiste en extraer las características esenciales e ignorar detalles superfluos, con el propósito de simplificar determinadas operaciones y realizar la programación más fácil.
Se trata de uno de los principios de la programación: esconder los detalles de un sistema complejo para hacerlo más accesible.
Lógicamente, esto causa un peor rendimiento y dificulta las optimizaciones.
$$ \text{Abstracción} \uparrow\uparrow \implies \text{Rendimiento} \downarrow\downarrow $$Se debería escoger el nivel más alto de abstracción que permita hacer la solución. Se prima la velocidad de desarrollo, no la eficiencia del programa final.
Esto puede dar lugar los problemas que se discuten en Computer, Enhance!, Thirty million line problem, Preventing the Collapse of Civilization, Better Software Conference y muchos otros seguidores de esta nueva tendencia de volver a software más sencillo. Sin embargo, la abstracción es la dirección que lleva la industria.
Paradigmas
| Paso de mensajes |
| ||||||||||
| Arquitectura Cliente - Servidor |
| ||||||||||
| Igual a Igual Peer to Peer |
| ||||||||||
| Sistema de mensajes |
| ||||||||||
| Llamar a procedimientos remotos Remote Procedure Call (RPC) |
| ||||||||||
| Objetos distribuidos |
| ||||||||||
| Basado en componentes |
| ||||||||||
| Agentes móviles |
| ||||||||||
| Aplicaciones colaborativas |
| ||||||||||