MIDDLEWARE


MIDDLEWARE


El Middleware es un software de conectividad que ofrece un conjunto de servicios que hacen posible el funcionamiento de aplicaciones distribuidas sobre plataformas heterogéneas. Funciona como una capa de abstracción de software distribuida, que se sitúa entre las capas de aplicaciones y las capas inferiores (sistema operativo y red).
Actualmente el uso de Internet como herramienta básica de comunicación es fundamental en muchos sectores industriales y profesionales. Desarrollar software moderno para Internet requiere afrontar nuevos requisitos, como por ejemplo: escalabilidad, el número de nodos y dispositivos gestionados por el sistema no debe establecer un límite para las aplicaciones; adaptabilidad, la aplicación debe soportar simultáneamente una amplia gama de dispositivos con recursos y funciones heterogéneos; flexibilidad, la aplicación debe permitir cambios en las condiciones de entorno, y dinamicidad, los nuevos dispositivos pueden estar disponibles durante breves periodos de tiempo.


HISTORIA DE MIDDLEWARE


Los Middleware han aparecido de manera relativamente reciente en el mundo de la informática, hoy
en día tecnologías móviles (celulares) están aplicando esta tecnología para el soporte de llamadas VOIP. En el pasado ganaron popularidad en la década de los 80, ya que eran la solución de cómo integrar las nuevas aplicaciones con los sistemas heredados (legacy systems), en todo caso, el termino ha sido usado desde 1968. También facilitaba la computación distribuida, mediante conexión de múltiples aplicaciones para crear una mucha mayor, sobre una red.

Un sistema distribuido es un sistema informático compuesto por computadoras autónomas (nodos) que se comunican mediante una red de comunicación. La principal diferencia entre un sistema distribuido y un sistema en red es la transparencia: en el sistema distribuido hay capas de software que permiten a las aplicaciones ejecutarse como si el sistema fuese parte de una única entidad de computación, mientras que en el sistema en red la aplicación es consciente de los nodos y debe realizar su gestión.

Los sistemas distribuidos son cada vez más populares e importantes en el campo de la computación
moderna. Los últimos avances en redes y el enorme despliegue y abaratamiento de los servicios de Internet han sido bien recibidos por los sectores empresariales. Como consecuencia, aplicaciones ya existentes han evolucionado rápidamente desde arquitecturas monolíticas a distribuidas. En este proceso de adaptación se han detectado nuevos requisitos para el software; dentro del proceso actual de globalización de las empresas, se requiere integrar software de empresas adquiridas o desarrollar software que distribuya la gestión de la empresa entre organizaciones geográficamente distribuidas. También se requiere confiabilidad y disponibilidad permanente de dichas aplicaciones.

Actualmente la programación de este tipo de aplicaciones es independiente del lenguaje de

programación y se realiza mediante componentes. El componente distribuido es un elemento de desarrollo del software distribuido que se programa de forma independiente del resto de la aplicación, facilitando así el análisis y desarrollo progresivo de partes específicas de la aplicación. Esto tiene como ventaja adicional la reducción del coste de las nuevas aplicaciones distribuidas mediante la reutilización de dichos componentes.

TAXONOMÍA DE LOS SOFTWARE MIDDLEWARE





Middleware orientado a mensajes
Este tipo de middleware facilita la comunicación mediante intercambio de mensajes.

Los mensajes pueden ser utilizados para solicitar la ejecución de servicio remoto, para notificación distribuida de eventos, o para implementar sistemas basados en publicación-suscripción.
Generalmente el middleware orientado a mensajes sólo proporciona de forma eficiente servicios asíncronos y colas de mensajes (no ofrece soporte para la comunicación síncrona). Este bajo nivel de abstracción suele completarse con capas adicionales que incorporen mecanismos de detección de fallos, gestión de prioridad de mensajes, desacople entre cliente y servidor (para facilitar la escalabilidad del software), y soporte básico de radiado de mensajes (multicast y broadcast).

Middleware basado en RPC
Este tipo de middleware proporciona gestión eficiente de llamadas remotas a procedimiento (Remote Procedure Call --RPC).
La principal ventaja de la RPC es que permite definir la interfaz de comunicación con los componentes mediante un lenguaje de definición de interfaz (Interface Definition Language--IDL).
A partir de esta definición existen herramientas automáticas de generación de código que generan el código necesario para realizar el empaquetado/desempaquetado de los mensajes y gestionar la comunicación a través de la red. Además, la RPC tiene implementaciones (bindings) para múltiples sistemas operativos y lenguajes de programación, aspecto que le convierten en una solución interesante para la programación de sistemas distribuidos multiplataforma.
Desde la perspectiva de los desarrolladores, la RPC además facilita la reutilización de código, ya que se utiliza de forma semejante a una llamada a procedimiento local.

Middleware orientado a transacciones
Este tipo de middleware facilita el desarrollo de sistemas que requieren transacciones distribuidas.
La transacción asegura que un conjunto de operaciones se realicen en todos los nodos del sistema o en ninguno. Generalmente se utilizan en aplicaciones que requieren consistencia de estado entre componentes distribuidos.
El principal inconveniente de este tipo de middleware es su eficiencia; la complejidad inherente a las transacciones distribuidas requiere un alto coste de ejecución. Por esta razón, este tipo de middleware sólo suele utilizarse cuando es realmente imprescindible para la aplicación.

Middleware orientado a objetos
Es una extensión del middleware orientado a RPC que agrega muchas características propias de los
lenguajes de programación orientados a objetos. Estas extensiones incluyen soporte para herencia, referencias a objetos y soporte de excepciones.
El middleware orientado a objetos comparte muchas de las ventajas atribuidas al middleware basado en RPC. De nuevo, el empaquetado y desempaquetado son generados automáticamente por los suplentes del cliente y del servidor, liberando al programador de esta tarea propensa al error.


Middleware basado en grupos
El simple intercambio de mensajes entre un emisor y un receptor, no es siempre un buen modelo de comunicación para un sistema distribuido. En muchas situaciones es más útil disponer de primitivas que permitan enviar datos desde un emisor a un grupo de procesos. Este tipo de comunicación es habitual en sistemas con requisitos de tolerancia a fallos, disponibilidad de servicio o reparto de carga. En estos casos, suele ser más sencillo diseñar la aplicación utilizando radiado de mensajes (multicast).
A continuación se describen brevemente las características de algunos middleware basados en grupos:
Transis: es un middleware con soporte de comunicación con grupo que proporciona comunicación con multicast fiable, y servicios que ayudan en la diseminación y replicación de la información.
Horus: es un middleware para el desarrollo y la experimentación de protocolos. Proporciona una implementación de alto rendimiento del modelo de sincronía virtual. Considera a los protocolos tipos abstractos de datos para proporcionar diferentes calidades de servicio. Este apilamiento se lleva a cabo en tiempo de ejecución, y se fuerza usando una interfaz uniforme y claramente definida, llamada Horus Common Protocol Interface (HCPI).
Ensemble: No es sólo un conjunto de herramientas, sino una arquitectura completa, y un conjunto de protocolos. Entre los objetivos principales que guían el diseño de Ensemble, los siguientes son especialmente destacables: 1) Abstraer la implementación de los niveles de protocolo lo más posible del sistema de ejecución. 2) Soportar la aplicación de métodos formales a implementaciones reales de protocolos de comunicación distribuida. 3) Proporcionar una plataforma flexible para facilitar la experimentación.

Isis: diseñado como un conjunto de herramientas, fue uno de los primeros sistemas que proporcionaron primitivas de comunicación que garantizasen entrega causal y totalmente ordenada. Se diseñó como un conjunto de herramientas para simplificar la construcción de sistemas distribuidos tolerantes a fallos, y está basada en los conceptos de grupo de procesos y sincronía virtual.

EVOLUCION MIDDLEWARE






Modelo centralizado:
• Toda la “inteligencia”, procesamiento de negocio, interfaces y persistencia, se realiza en un host central.
• También conocidas como “Mainframe architectures”
•  Los usuarios interactúan a través de terminales tontas
•  Capturan el teclado, envían la información al host, este procesa y se retorna la pantalla a la terminal.
• La interacción puede realizarse tanto en terminales unix, dos/windows u otras.
• Fueron (y lo son todavía) muy exitosas en ámbitos donde se realizan procesamientos intensos de datos, Por ejemplo, entidades bancarias, procesamiento de tarjetas de crédito, etc. Es común encontrar hoy día mainframes en perfecto funcionamiento. Sus programadores se cotizan en el mercado (escasean).



Modelo centralizado
• Fueron (y lo son todavía) muy exitosas en ámbitos donde se realizan procesamientos intensos de datos.
• Por ejemplo, entidades bancarias, procesamiento de tarjetas de crédito, etc.
• Es común encontrar hoy día mainframes en perfecto funcionamiento.
• Sus programadores se cotizan en el mercado (escasean).





Modelo centralizado
• Empresas como IBM utilizan sus productos tipo mainframe para soportar servidores J2EE.
• El caso de la línea y Series es un ejemplo de ello.
• El mainframe ejecuta un sistema operativo particular el cual ejecuta Websphere (Application Server).
• Las aplicaciones acceden a este como si entraran a un servidor tradicional.
• Hoy día existe un resurgimiento de las arquitecturas tipo mainframe.


Modelo de intercambio de archivos
• Conocidas también como “file sharing architectures”.
• Tiene su punto de partida con la popularización de las redes de área local.
• En esta, el servidor (o el PC) descarga en su espacio local archivos que se encuentran en el servidor.
•             El procesamiento solicitado por el cliente, es realizado en el espacio de procesamiento del mismo.
•             Funcionan cuando el volumen compartido es bajo, la contención por actualizaciones es baja y el volumen transferido es también bajo
•             Un ejemplo de esto, es un sistema desarrollado en Visual Basic con Access
•             Los clientes acceden a través de los programas (almacenado en el servidor en un disco compartido) a una base de datos/archivos indexados compartida
•             Modelo Cliente/Servidor
•             Como una evolución de las anteriores, surge este modelo.
•             El servidor de archivos es reemplazado por una base de datos (relacional).
•             Se tienen dos partes claramente diferenciadas, el cliente y el servidor.
•             El cliente emite consultas, las cuales son respondidas por un servidor.
•             En este caso, se recibe solo la respuesta, en vez de un archivo compartido.
•             El procesamiento es dividido entre el cliente y el servidor, balanceando la carga entre ambos.
•             Existen modelos basados en cliente servidor que extienden la idea:
 Arquitecturas en 2 capas
Arquitecturas en 3 capas
Arquitecturas en 3 capas con
Monitores transaccionales
 Servidores de mensajes
 Servidores de aplicación


Arquitectura en 2 capas
•             La presentación y la lógica de negocio se encuentran en la maquina cliente.
•             Los datos y el acceso a los mismos, se resuelve en el servidor.
•             El servidor suele ser mucho más poderoso que las maquinas cliente.
•             Este tipo de arquitecturas es buena cuando el volumen de los usuarios es alto.
•             Ahora la lógica de negocio puede colocarse también dentro de la base de datos (nuevas herramientas).

Lenguajes de programación en el DBMS (Java, C).
•             Procedimientos almacenados.
•             Triggers.
•             Todos estos enfoques limitan la portabilidad del sistema construido.
•             Sin embargo aumentan la eficiencia de los mismos, ya que el procesamiento:
•             Se hace más cerca de los datos.
•             Se hace en un entorno más poderoso (servidor).
•             Arquitectura en 3 capas
•             También conocidas como arquitecturas multicapa (no están limitadas a 3)
•             Una capa intermedia se añade entre el ambiente del cliente y el servidor de base de datos.
•             Esta capa puede implementarse de múltiples formas:

•                     Servidores de aplicación.
•             Monitores transaccionales.

•             Sistemas de mensajería.




PROTOCOLOS MIDDLEWARE




Protocolos de nivel de transporte de Internet Ambos permiten un paso de mensajes básico.


UDP: con fallos por omisión.

TCP: garantiza la entrega en condiciones normales, pero al coste de una bajada en el rendimiento  Generalmente, usamos TCP sobre IP, o TCP/IP  Aunque TCP/UDP abstraen del nivel de red, no abstraen perfectamente de los niveles de hardware y ssoo  Distinto almacenamiento de números (little endian/big endian)  Distinta codificación de caracteres (ASCII/Unicode).
Hay tres paradigmas de invocación remota Protocolos de petición-respuesta, un modo relativamente a bajo nivel para ejecutar una operación remota.
Sienta las bases para RPC y RMI Remote procedure call (RPC) es el primer modelo (y el más conocido) para facilitar las llamadas a servidores remotos
Remote method invocation (RMI) extensión de RP para la llamada a métodos de objetos en nodos remotos.

Protocolo de petición-respuesta
Se basa en tres primitivas de comunicación doOperation(s,args): invoca una operación remota en  
los argumentos indicados en args (parámetros y tipo de operación) getRequest: espera/adquiere una petición en el servidor  sendReply(r,c): manda el mensaje de respuesta r al cliente c.
WAP son las siglas de Wireless Application Protocol. Define un entorno de aplicación y una pila de protocolos para aplicaciones y servicios accesibles a través de terminales móviles. Consiste en un conjunto de especificaciones, definidas tanto por la Open Mobile Alliance como por el WAP Forum, que permiten a los desarrolladores diseñar aplicaciones de interconexión para terminales móviles, teléfonos generalmente.
La versión 1 de WAP aparece en 1999. El lenguaje de presentación de contenidos o lenguaje de marcas, es el WML, o Wireless Markup Language. En el capítulo siguiente se hablará en profundidad sobre los lenguajes de marcas.

La pila de protocolos de WAP 1 se compone de:
WAE (Wireless Application Environment). Es la base para el desarrollo de aplicaciones de propósito general, se combinan tecnologías similares a las usadas en el WWW y tecnologías relacionadas con telefonía móvil.

WSP (Wireless Session Protocol). Permite definir sesiones. Ofrece dos tipos de servicios, orientados a conexión y no orientados a conexión.

WTP (Wireless Transaction Protocol). Garantiza la entrega de los mensajes.

WTLS (Wireless Transport Layer Security). Proporciona integridad de datos, privacidad y autenticación en la comunicación de dos aplicaciones.


WDP (Wireless Datagram Protocol). Corresponde a la capa de transporte. Su funcionalidad es equivalente al protocolo UDP de Internet y, como él, no garantiza la entrega de los mensajes. Se apoya en los servicios de la "portadora" WAP, que depende de la red móvil que esté usando el terminal.



                                                                       APLICACIONES

En un Sistema Distribuido, el middleware (lógica de la mediación) es un software de conectividad que permite ofrecer un conjunto de servicios que hacen posible el funcionamiento de aplicaciones distribuidas sobre plataformas heterogéneas, el middleware funciona como una capa de abstracción de software distribuida que se sitúa entre las capas de aplicaciones y las capas inferiores (sistema operativo y red).

Los servicios de middleware proporcionan un conjunto más funcional de la API's para permitir una aplicación a:
Localizar claramente a través de la red, proporcionando así una interacción con otro servicio o aplicación
Los datos filtrados para que sean utilizables en un ambiente público a través de anonymization process para la protección de la privacidad.

Middleware ofrece algunas ventajas únicas tecnológicas para los negocios y la industria. Por ejemplo
, los sistemas tradicionales de bases de datos suelen ser desplegados en entornos cerrados, donde los usuarios acceden al sistema sólo a través de una red restringida o intranet (por ejemplo, red interna de una empresa).
Con el crecimiento de la World Wide Web, los usuarios pueden acceder a prácticamente cualquier base de datos para las que tengan derechos de acceso adecuados desde cualquier parte del mundo. Middleware aborda el problema de diferentes niveles de interoperabilidad entre las estructuras de base de datos diferente. Middleware facilita el acceso a la herencia de un sistema de gestión de bases de datos (DBMS) o aplicaciones a través de un servidor web, sin tener en cuenta las características específicas de base de datos.

Las empresas frecuentemente utilizan las aplicaciones de middleware para vincular la información de bases de datos de sus departamentos, tales como nóminas, ventas y contabilidad, o bases de datos alojadas en múltiples localizaciones geográficas. En el mercado de la salud que es altamente competitivo, los laboratorios hacen un amplio uso de aplicaciones de middleware para minería de
datos y sistema informático del laboratorio (LIS), y para combinar los sistemas de información durante fusiones de hospitales. Los Middleware ayudan a reducir la brecha entre LISs separados en una red de salud recién formado a raíz de una compra del hospital.
Los desarrolladores de redes inalámbricas pueden utilizar middleware para afrontar los retos asociados a los de sensores inalámbricos de red (WSN), o tecnologías WSN. La implementación de una aplicación de middleware permite WSN [Los analistas Middleware] desarrolladores]. Para integrar los sistemas operativos y hardware con la amplia variedad de aplicaciones diferentes que están disponibles actualmente.


Los middleware pueden ayudar a los desarrolladores de software a no tener que escribir APIs para todos los programas de control, que actúa como una interfaz de programación independiente para sus aplicaciones. Para la Internet del Futuro, el funcionamiento de la red a través del monitoreo de tráfico en escenarios multi-dominio, utilizando herramientas de mediación (middleware) es una poderosa ayuda, ya que permiten operadores, investigadores y [proveedores de servicios] para supervisar Calidad de servicio y analizar los eventuales fracasos en servicio de telecomunicaciones.


Read Users' Comments (0)

0 Response to "MIDDLEWARE"

Publicar un comentario