sábado, 12 de febrero de 2011

UNIDAD 1 PANORAMA GENERAL DE LAS APLICACIONES DISTRIBUIDAS

UNIDAD 1

PANORAMA GENERAL DE LAS APLICACIONES DISTRIBUIDAS

1.1 EVOLUCIÓN DE LAS APLICACIONES DISTRIBUIDAS

Migración de Aplicaciones al Modelo Cliente Servidor

Muchas de las aplicaciones de oficina utilizadas actualmente poseen buenos modelos de datos e interfaces realmente claras que permitieron en su momento un significativo aumento de la productividad. El problema es que ven afectada su posibilidad de crecimiento por características tecnológicas de base que dificultan el acceso a alta velocidad dentro de la Red Local e impiden el acceso desde fuentes remotas como Internet y otras redes no locales.

Tal es el caso de la mayoría de las aplicaciones desarrolladas en los últimos años en que el acceso a datos se efectuaba a partir de aplicaciones monolíticas que concentran en una sola capa tanto la interfaz visual como lo métodos de acceso a datos, lo que comúnmente se conoce como modelos Cliente - Cliente.

Estas aplicaciones Cliente- Cliente concentran toda la actividad en los equipos de los usuarios, dejando al los servidores la labor de meros reservorios de datos compartidos.

Así ante cada petición de datos, el servidor devuelve archivos completos que luego son procesados por el equipo cliente, para obtener el resultado.

Por ejemplo, suponiendo que una base de cliente tuviera un tamaño medio de 5Mb y se efectúa una búsqueda muy simple de un cliente en particular, el servidor no efectuará la búsqueda por sí sino que devuelve la tabla de 5Mb completa, luego el equipo del usuario procesa la búsqueda en su equipo para seleccionar 1 registro de digamos unos 1Kb y descarta el resto de la información.

1.1.1 APLICACIONES MONOLÍTICAS

Son aquellas en las que el software se estructura en grupos funcionales muy acoplados, involucrando los aspectos referidos a la presentación, procesamiento y almacenamiento de la información.

En este rubro están considerados las distintas aplicaciones para escritorio: sistemas operativos, ofimática, juegos monousuario, etc.

1.1.2 APLICACIONES CLIENTE/SERVIDOR

Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa (el servidor) que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.

En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema.

La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma.

1.1.2 APLICACIONES DE 2,3 Y N CAPAS

Arquitectura de Desarrollo de Aplicaciones en dos, tres y N Capas

En la actualidad existen tres tipos de arquitecturas de capas, y que muchas veces estas capas reciben el nombre de niveles.

Las arquitecturas son las siguientes.

1. Arquitectura de dos capas;

2. Arquitectura de tres capas;

3. Arquitectura de cuatro capas.

Arquitectura de Dos Capas

La arquitectura de dos capas en la actualidad es muy utilizada, aunque con muchas fallas, todavía no se ha podido dejar de usar.

Estas arquitecturas fueron las primeras en aprovecharse de la estructura cliente-servidor.

Las capas que esta arquitectura presenta son las siguientes: Nivel de aplicación;

Nivel de la base de datos.

El nivel de Aplicación

Este nivel es en el que se encuentra toda la interfaz del sistema y es la que el usuario puede disponer para realizar su actividad con el sistema.

Nivel de la Base de Datos

Este nivel de la Base de Datos también llamado el Repositorio de Datos, es la capa en donde se almacena toda la información ingresada en el sistema y que se deposita en forma permanente.

Herramientas para el Desarrollo de Aplicaciones en Dos Capas

Existen herramientas para el desarrollo en dos capas por ejemplo mencionaremos a Visual Basic, Access y SQL

Visual Basic 6.0

Visual Basic es la herramienta más conocida para el desarrollo de aplicaciones en dos capas, ya que por su facilidad para la elaboración de la interfaz visual, y por su facilidad de aprendizaje la han convertido en una herramienta básica para el desarrollo de sistemas. Además posee librerías muy poderosas y de mucha ayuda para los desarrolladores, como los controles Active X, los módulos de clase que ayudan para la creación de funciones para nuestra aplicación y los módulos de los Active X en donde se pueden añadir nuestras propias librerías.

Se puede mencionar también otra herramienta muy importante y que en los últimos años ha sido la base para la creación de nuevas tecnologías, es JAVA.

Java

Java es considerado como una herramienta muy poderosa, además de su alcance, también es fácil de aprender ya que la mayoría de sentencias son hechas en C++.

Además Java es hoy en día la base para la construcción de tecnologías nuevas, este es el caso de todo lo que es orientado hacia el Internet. Por ejemplo, Microsoft ya la está utilizando para crear la plataforma .NET que es la tecnología de punta de Microsoft.

SQL Server

Esta herramienta es el motor de base de datos en donde se sitúa la capa del repositorio de datos.

Este motor es muy conocido y de mucha utilidad para el diseño de aplicaciones de dos capas ya que es muy potente y no tan difícil de aprender, además posee un analizador de consultas en donde se las puede crear de una forma muy segura. También tiene un administrador corporativo en donde se encuentra toda la información del motor, y aquí también se pueden crear las sentencias para nuestra base de datos. Por último, SQL Server contiene funciones para la elaboración de disparadores y procedimientos, y que son de mucha utilidad al momento de realizar nuestra base de datos.

Desventajas

Las desventajas de dos niveles son:

• El nivel de las aplicaciones se recargan, entremezclando aspectos típicos del manejo de la interfaz con las reglas del negocio.

• Las reglas del negocio quedan dispersas entre el nivel de aplicación y los procedimientos de la base de datos.

• El nivel de aplicación puede ser demasiado pesado para el cliente.

Arquitectura de Tres Capas

La arquitectura de dos capas si bien ayudó en unos años atrás, se vio la necesidad de crear una nueva arquitectura ya que en dos capas se tenía algunos problemas en la capa de aplicación ya que la principal desventaja de esta era el peso que tenia para el cliente, como se mencionó anteriormente.

Por estas razones, existe una fuerte y bien avanzada tendencia a adoptar una arquitectura de tres capas.

Y es así que se creó la arquitectura de tres capas las cuales son:

• Nivel de Aplicación

• Nivel de Dominio de la aplicación;

• Nivel de Repositorio.

Nivel de Aplicación

La diferencia de este nivel aplicado ahora en una arquitectura de tres capas es que solo tiene que trabajar con la semántica propia de aplicación, sin tener que preocuparse de cómo esta implementado este ni de su estructura física.

Nivel de Dominio de Aplicación

En cambio este nivel se encarga de toda la estructura física y el dominio de aplicación.

Algo muy importante y que es la mayor ventaja de esta arquitectura es que ahora únicamente se cambia la regla en el servidor de aplicación y esta actuará en todos los clientes, cosa que ni sucedía con la arquitectura en dos capas que si alguna regla se la cambia, se tenía que ir a cada cliente a realizar el cambio.

Nivel de Repositorio

En realidad este nivel no ha cambiado para nada y sigue siendo la capa en donde se almacenan los datos y toda la información.

Herramientas para el Desarrollo de Aplicaciones en Tres Capas

Las herramientas para el desarrollo de tres capas son:

• Visual Basic en lo que se refiere a la capa de Aplicación

• SQL Server en lo que se refiere al repositorio de datos.

• MTS en lo que se refiere al nivel del dominio de Aplicación

En si estos son unos ejemplos de las herramientas que se utilizan en desarrollo de aplicaciones en tres capas, pero no son las únicas.

Además de las herramientas ya mencionadas, también existen otras que no son muy conocidas, pero que nos pueden servir para la elaboración de aplicaciones en tres capas. Este es el caso de ORACLE en cuanto a la capa de repositorio de datos, Visual Estudio.NET en lo que se refiere a la capa de aplicación. Además también se podría hablar de los JAVA BINs que son herramientas orientadas para las aplicaciones de tres capas pero en el Internet.

Oracle

Este motor de base de datos, cuenta con muchas herramientas muy útiles para el desarrollo de aplicaciones en dos, tres y n capas ya que tiene la posibilidad de crear aplicaciones orientadas a objetos y esta es la mayor diferencia con el resto de motores, ya que estos son relacionales y no orientados a objetos.

La última versión en Oracle es la 9i que todavía no se lanza al mercado, pero que elimina errores de las últimas versiones, por ejemplo esta versión (personal), se la puede instalar en un procesador Pentium IV sin ningún problema, cosa que no sucedía con la versión 8.0

Visual Studio. NET

Es la nueva tecnología de Microsoft y que nos ayuda en el desarrollo de aplicaciones para el Internet ya que está construido con un sinnúmero de herramientas muy fáciles de aprender ya que está elaborado con muchos lenguajes de programación y que no se tiene la necesidad de saber un lenguaje específico. También se tiene un lenguaje de programación nuevo y es el sishar que admite un serie de lenguajes y al momento de compilarlos no existe ningún problema.

También se podría hablar de herramientas de diseño como por ejemplo Racional Rose Esta herramienta es utilizada para el diseño de una aplicación orientada a objetos y que tiene sus tres capas.

Utiliza el UML que es el lenguaje unificado para la elaboración de aplicaciones.

Desventajas

La mayor desventaja que tiene esta arquitectura es que no se puede realizar un repositorio de datos distribuido, un ejemplo de este tipo de repositorio es el de los bancos que necesitan de un repositorio de datos distribuido para poder tener sus sucursales en otros países y ciudades.

Arquitectura de N Capas

En la actualidad se está implementando la arquitectura de capas con una capa llamada la de presentación.

Las capas son las siguientes:

• Nivel de Presentación;

• Nivel de Aplicación;

• Nivel de Dominio de la aplicación;

• Nivel de Repositorio

Nivel de Presentación

Este nivel no hace ningún cálculo o actualizaciones sobre el dominio, ni siquiera tiene una visualización sobre la capa de dominio, De esto se encarga la capa de aplicación.

Nivel de Aplicación

Es la encargada de los cálculos, las actualizaciones y el acceso a la capa de dominio, esta interactúa con el nivel de presentación y con el nivel de dominio para que se tenga un contacto indirecto entre estas dos capas.

En si esto es la diferencia básica de la arquitectura de tres capas y la de n capas, que hay el nivel del dominio y el del repositorio cumplen el mismo papel solo que esta vez el repositorio puede estar distribuido en varios partes, esto facilita mucho al sistema para su distribución.

Herramientas para la Arquitectura de N Capas

Básicamente son las mismas que la arquitectura en tres capas, la diferencia es en el repositorio de datos que ahora tiene que ser una herramienta que pueda distribuirse (ORACLE).

Tecnologías de Desarrollo de Aplicaciones de Dos, Tres y N Niveles

En cuanto a las tecnologías que se han presentado en el desarrollo de aplicaciones nosotros hablaremos de lo que es lo que está en la actualidad y esto es el DNA.

El DNA es en la actualidad la tecnología de punta y que se refiere a la distribución de aplicaciones, esta tecnología fue creada por Microsoft, viendo la necesidad de tener una distribución de sistemas mucho más amplia y que ayude en el desarrollo de sistemas.

El DNA es la principal idea para la elaboración de un desarrollo de tres y n capas.

Otra característica de esta tecnología es que está compuesta de MTS que es el que realiza las transacciones de un sistema, se podría decir que en la tercera capa ya que esta realiza todos los cálculos y está entre la capa de aplicación y la capa de presentación.

También como hemos dicho anteriormente para la elaboración de diagramas orientados a objetos nosotros tenemos a UML que es un lenguaje estándar para diagramar. Las herramientas que utilizan este lenguaje son Racional Roce, Argo, Poseidón entre otras.

Además tenemos la tecnología JAVA con sus JAVA bins que ayudan a la elaboración de aplicaciones para el Internet.

Otras herramientas no muy conocidas, pero muy importantes y poderosas para la elaboración de diagramas son Power Builder, entre otras.

Además en la actualidad SQL ha sacado una nueva versión como es SQL 2000 que tiene nuevas funciones para la elaboración de aplicaciones orientadas a objetos.

1.1.4.- Aplicaciones distribuidas

Aplicación distribuida

Es una aplicación con distintos componentes que se ejecutan en entornos separados, normalmente en diferentes plataformas conectadas a través de una red. Las típicas aplicaciones distribuidas son de dos niveles (cliente-servidor), tres niveles (cliente-middleware-servidor) y multinivel.

Middleware: Sistema Distribuido organizado con un sistema

Componentes de una aplicación distribuida.

Una aplicación distribuida que sigue el modelo cliente-servidor tiene los siguientes componentes:

Lado servidor: Programa que se ejecuta en un computador que está conectado a una red. Esta a la escucha en un puerto, esperando las peticiones de los clientes; por ejemplo, un servidor Web escucha en el puerto 80. Un computador que ejecuta un servidor de aplicación necesita estar conectado a la red para responder a las peticiones de los clientes. Lado cliente: Programa que ejecuta el usuario de la aplicación. El cliente hace sus peticiones al servidor a través de la red. Por ejemplo, un navegador Web.

Protocolo de aplicación para la comunicación entre el cliente y el servidor. El protocolo define el tipo de mensajes intercambiados; por ejemplo, el protocolo de la capa de aplicación de la Web, HTTP, define el formato y la secuencia de los mensajes transmitidos entre el navegador y el servidor Web.

Formato de los mensajes que se intercambian, algunas veces forma parte del servicio; por ejemplo, en el correo electrónico se define el formato de los mensajes electrónicos.

Estos componentes son independientes de la arquitectura de red que se utiliza.

Ejemplos de aplicaciones distribuidas.

Algunas de las aplicaciones distribuidas más conocidas son remote login, correo electrónico, navegación Web, streaming, telefonía IP y compartición de ficheros (P2P).

1.2 EVOLUCIÓN DE LAS TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES DISTRIBUIDAS.

En el contexto del proceso de interacción persona-ordenador, la interfaz gráfica de usuario, es el artefacto tecnológico de un sistema interactivo que posibilita, a través del uso y la representación del lenguaje visual, una interacción amigable con un sistema informático.

La interfaz gráfica de usuario (en inglés Graphical User Interface, GUI) es un tipo de interfaz de usuario que utiliza un conjunto de imágenes y objetos gráficos para representar la información y acciones disponibles en la interfaz. Habitualmente las acciones se realizan mediante manipulación directa para facilitar la interacción del usuario con la computadora.

Surge como evolución de la línea de comandos de los primeros sistemas operativos y es pieza fundamental en un entorno gráfico.

Como ejemplo de interfaz gráfica de usuario podemos citar el escritorio o desktop del sistema operativo Windows y el entorno X-Windows de Linux.

Interfaces gráficas (GUIs)

GPA

Intenta ser la interfaz de usuario gráfica estándar de Gnu PG. GPA se hospeda en este sitio.

K Gpg?

Es una interfaz de usuario de KDE para Gnu PG.

Seahorse

Es una interfaz de usuario de GNOME para Gnu PG.

wija

wija is a free and cross-platform Jabber/XMPP client written in Java, with built-in Gnu PG key rings management GUI. Its extended protocols allow users to encrypt chat and multi-user chat as well as encrypting/signing messages and signing presence of the user. It is multilingual and runs on GNU/Linux, Mac OS X and Windows.

XAP

Es el panel de aplicaciones X y gestor de ficheros.

Interfaz De Usuario: Una Mirada Al Futuro

El futuro de la interfaz de usuario para la tecnología de las computadoras es fascinante y lleno de sorpresas increíbles. Después de haber mostrado la magia misteriosa de imágenes proyectadas en el aire, el investigador de interfaz de usuario Jeff Han lo invita a que vea lo asombroso que será trabajar con computadoras, una vez que nos hayamos sacado de encima los ratones y comencemos a dibujar y manipular objetos en pantalla directamente con nuestros dedos.

Jeff Han es un investigador científico del NYU’s Courant Institute of Mathematical Sciences y el inventor de una pantalla de computadora sensible al tacto “libre de interfaz”.

1.2.1 De Interfaz de Usuario.

Aquí es donde su aplicación presenta información a los usuarios y acepta entradas o respuestas del usuario para usar por su programa. Idealmente, la IU no desarrolla ningún procesamiento de negocios o reglas de validación de negocios. Por el contrario, la IU debería relegar sobre la capa de negocios para manipular estos asuntos. Esto es importante, especialmente hoy en día, debido a que es muy común para una aplicación tener múltiples IU, o para sus clientes o usuarios, que le solicitan que elimine una IU y la remplace con otra.

Algunas tecnologías de interfaz de usuario son:

  • API Win 32.
  • HTMAL.
  • Dell HTML.
  • Lenguajes de scrips.

1.2.2.- DE APLICACION

Capa de aplicación (ó Servicios de aplicación): Es la capa de mantenimiento general, se encarga normalmente de los requerimientos de calidad de servicio, como las caches, la gestión de excepciones, rendimiento, etc.

La adopción de un diseño distribuido de aplicaciones empresariales, aumenta la reusabilidad, reduce la cantidad de recursos, y los costes necesarios de desarrollo y mantenimiento.


Este nuevo enfoque de diseño pone en manos de los desarrolladores no solo la funcionalidad que demandan las aplicaciones, sino también la seguridad, rapidez y flexibilidad.


Algunas tecnologías de aplicación son:

  • CORBA.
  • DNA.
  • EJB.
  • XML.

1.2.3.- DE BASES DE DATOS:

Desde que se empezaron a introducir los ordenadores para automatizar la gestión de las empresas en la década de los sesenta, la evolución de los sistemas de información ha tenido una considerable repercusión en la gestión de los datos, desplazándose el centro de gravedad de la informática, que estaba situado en el proceso, hacia la estructuración de los datos.

Esta nueva generación de bases de datos, se caracteriza por proporcionar capacidades de gestión de datos, objetos y gestión de conocimiento y pretende responder a las necesidades de aplicaciones tales como: CASE (Ingeniería del software asistida por ordenador), CAD/ CAM/CIM, SIG (sistemas de información geográfica), información textual, aplicaciones científicas, sistemas médicos, publicación digital, educación y formación, sistemas estadísticos, comercio electrónico, etc.

A la hora de clasificar los avances en el campo de las bases de datos, podemos identificar tres dimensiones: rendimiento, funcionalidad/inteligencia y distribución/integración.

* Rendimiento. Hay que tener en cuenta que los datos almacenados en bases de datos crecen de forma exponencial. Además, los avances en el hardware y el abaratamiento del mismo determinan de forma importante la evolución de las bases de datos. Dentro de esta dimensión, destacan los siguientes tipos de tecnologías: bases de datos paralelas, bases de datos en tiempo real y bases de datos en memoria principal.

* Inteligencia. La funcionalidad de las bases de datos ha ido aumentando de forma considerable, ya que gran parte de la semántica de los datos que se encontraba dispersa en los programas ha ido migrando hacia el servidor de datos.
También hay que tener en cuenta que aspectos como la incertidumbre y el tiempo se están incorporando a las bases de datos. Surgen así las bases de datos activas, deductivas, orientadas a objetos, multimedia, temporales, seguras, difusas, los almacenes de datos y la minería ddatos.

* Distribución. El avance espectacular de las comunicaciones así como la difusión cada día mayor del fenómeno Internet/Web, ha revolucionado el mundo de las bases de datos. También la aparición de la informática móvil obliga a replantearse algunos conceptos fundamentales de las bases de datos. En esta dimensión podemos destacar las siguientes tecnologías: bases de datos distribuidas, federadas y multibases de datos; bases de datos móviles, y bases de datos y web.

1.2.4 De Comunicación De Datos.

La construcción de aplicaciones distribuidas ha emergido como la arquitectura predominante para la construcción de aplicaciones multiplataforma en la mayor parte de las empresas.


Este cambio radical en los modelos de computación, desde los sistemas monolíticos basados en mainframe y los tradicionales sistemas cliente-servidor, hacia sistemas distribuidos multiplataforma altamente modularles, representa el desarrollo rápido y avance de la investigación en el mundo del desarrollo de aplicaciones, tal y como se pone de manifiesto en las últimas tendencias de las grandes empresas de tecnología, como Sun con su estrategia Sun One, o Microsoft con DotNET (.Net).


Algunas tecnologías de comunicación de datos son:

  • Intranet.
  • Internet.

1.2.5 DE CONEXIÓN ENTRE CAPAS.

Como tecnología, las arquitecturas de capas proporcionan una gran cantidad de beneficios para las empresas que necesitan soluciones flexibles y fiables para resolver complejos problemas inmersos en cambios constantes.


Todas las aplicaciones basadas en capas permitirán trabajar con clientes ligeros, tal como navegadores de Internet, WebTV, Teléfonos Inteligentes, PDAs (Personal Digital Assistants o Asistentes Personales Digitales) y muchos otros dispositivos preparados para conectarse a Internet.


De este modo, las arquitecturas de capas se están posicionando rápidamente como la piedra angular de los desarrollos de aplicaciones empresariales y las compañías están adoptando esta estrategia a una velocidad de vértigo como mecanismo de posicionamiento en la economía emergente que tiene su base en la red (lo que se ha venido a denominar "Nueva Economía").


Actualmente, la Red (Internet, intranets y extranets) es el ordenador o, como diría Sun Microsystems, el ordenador es la Red. Este paradigma está creando un cambio fundamental en los modelos de computación que, a su vez, proporciona desafíos y oportunidades como nunca antes había se habían producido.


Una tecnología de conexión de capas es:

  • Arquitectura DAO.

1.3 ESCENARIOS DE UTILIZACIÓN DE LAS APLICACIONES DISTRIBUIDAS.

Algunas de las aplicaciones distribuidas más conocidas son remote login, correo electrónico, navegación Web, streaming, telefonía IP y compartición de ficheros (P2P).

Algunos escenarios que utilizan aplicaciones distribuidas son:

  • PHP
    Eduacaión a distancia - moddle.
    Creación de blogs - Wordpress.
    Creador de wikis - MediaWiki.
    Administrar BD en web - PHPMyAdmin.

  • ASP
    E-commerce - eCAM.
    E-commerce - ProdMentor.

1.4.- PROBLEMAS COMUNES EN EL DESARROLLO Y USO DE LAS APLICACIONES DISTRIBUIDAS.

El desarrollo de aplicaciones distribuidas requirió de nuevas técnicas de diseño y de generación de modelos. También trajo nuevos problemas. Existen 2 tipos distintos de arquitecturas que se utilizaron antes de .NET para hacer aplicaciones distribuidas: Llamadas a Procedimiento Remoto (RPC) Arquitecturas basadas en mensajes

Se verán los problemas técnicos que este tipo de arquitecturas tiene y finalmente como los Estándares Web son utilizados para hacer la nueva generación de aplicaciones distribuidas

Hay una serie de problemas comunes en el diseño de las aplicaciones distribuidas:

La compatibilidad de los Tipos de Datos: Distintos sistemas operativos tienen diferentes tipos de datos que no son siempre compatibles entre sí.

Fallas del Servidor: Debido a que los componentes pueden ser remotos, una falla de cualquiera de ellos puede hacer que toda la aplicación falle .

Fallas del Cliente: El servidor debe saber como responder a las fallas del cliente.

Reintento de llamadas: Si por ejemplo, se hace una llamada a un método en un servidor para generar una orden de compra muy grande, y el servidor responde pero se pierde la respuesta por fallas de red, no es muy eficiente volver a enviar la orden de compra.

Seguridad: En aplicaciones distribuidas los problemas de seguridad se multiplican. Por ejemplo, se debe considerar como: Autenticar a los usuarios Autorizarlos a acceder a los recursos Encriptar la información que viaja por la red Evitar ataques de denegación de servicio

Sincronización de la hora: Hay operaciones que dependen de la fecha y la hora. Por ejemplo, no es lógico en una aplicación procesar un envío de mercadería antes de haber recibido la orden de compra. Si el cliente y el servidor tienen fechas distintas, se debe generar un mecanismo de sincronización de hora para evitar este problema.

La arquitectura basada en RPC Qué es RPC:
RPC son llamadas a procedimientos o funciones en sistemas remotos, es decir en máquinas distintas a la máquina local. Transparencia de localización:
El desarrollador utiliza los componentes sin necesidad de saber su ubicación física. Con RPC tanto en el cliente como en la máquina donde reside el componente hay subsistemas que se ocupan de la comunicación y el intercambio de datos.

Llamadas Sincrónicas:
En RPC las llamadas a los procedimientos son sincrónicas. Esto quiere decir que cuando una aplicación hace una llamada a un procedimiento RPC debe esperar que el servidor le responda para poder continuar con el procesamiento. Esto presenta problemas en un entorno distribuido, mucho más si pensamos en distribuir los componentes en Internet.

Las llamadas sincrónicas con RPC tienen desventajas: Uso de múltiples componentes: Si su aplicación distribuida depende de muchos componentes que se llaman entre sí, esto hace que la aplicación sea más susceptible a fallas. Balanceo de Carga y Tolerancia a fallos: Es el problema de como las aplicaciones descubren la información necesaria para poder conectarse otros servidores en el caso de que el que esta utilizando falle. O de como balancean el procesamiento entre varios servidores Esto no es posible con RPC.

Priorización: Con RPC es muy difícil detectar que servidores están con mucha carga de trabajo y derivar la llamada RPC a otro servidor menos ocupado.

Picos de carga de Trabajo: RPC no puede manejar los picos de carga de trabajo que puede tener un servidor si tiene llamadas RPC de muchos clientes.

La arquitectura basada en Mensajes Otra arquitectura para desarrollar aplicaciones distribuidas es la basada en mensajes.

Esta tecnología es asincrónica. Lo que significa que el cliente puede seguir con el procesamiento mientras espera la respuesta del servidor. Utiliza mensajes en vez de llamadas a funciones.

Tiene desventajas: Procesamiento del Mensaje:
El programador debe manejar en el código el empaquetamiento y des empaquetamiento de los mensajes. Además debe controlar su validez Interoperabilidad:
Los sistemas de mensajería utilizan tecnología propietaria. Se necesita software para permitir el envío de mensajes y la comunicación los distintos sistemas. Flujo de Carga y secuenciamiento de los mensajes:
Se necesita de algún mecanismo para coordinar el flujo y la secuencia de los mensajes. Por ejemplo, no se puede procesar una orden de envío de un producto antes de que se procesa la orden de pedido del producto.