Middleware, también conocido como lógica de intercambio de información entre aplicaciones (interlogical) o agente intermedio, es un sistema de software que ofrece servicios y funciones comunes para las aplicaciones. En general, el middleware se encarga de las tareas de gestión de datos, servicios de aplicaciones, mensajería, autenticación y gestión de API. Es un software que asiste a una aplicación para interactuar o comunicarse con otras aplicaciones, o paquetes de programas, redes, hardware o sistemas operativos. Este simplifica el trabajo de los programadores en la compleja tarea de generar las conexiones y sincronizaciones que son necesarias en los sistemas distribuidos. De esta forma, se provee una solución que mejora la calidad de servicio, así como la seguridad, el envío de mensajes, la actualización del directorio de servicio, etc.

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). El middleware abstrae de la complejidad y heterogeneidad de las redes de comunicaciones subyacentes, así como de los sistemas operativos y lenguajes de programación, proporcionando una API para la fácil programación y manejo de aplicaciones distribuidas. Dependiendo del problema a resolver y de las funciones necesarias, serán útiles diferentes tipos de servicios de middleware. Por lo general el middleware del lado cliente está implementado por el Sistema Operativo, el cual posee las bibliotecas que ejecutan todas las funcionalidades para la comunicación a través de la red.

Se encarga de las tareas de gestión de datos servicios de aplicaciones mensajería auto indicación y gestiones de apps. También facilita el acceso a una red y aumenta la velocidad de ejecución del sistema.

Es definido en dos categorías conocidas como integración y aplicación. Cada middleware dispone de ciertos protocolos y paradigmas.

Está basado y orientado a los procedimientos de interacción de los datos de modo que se ejecuta la sincronización de un proceso en específico.

El middleware abarca desde servidores web hasta sistemas de autenticación y herramientas de mensajería:

- Automatización empresarial inteligente - Transmisión de datos - Integración completa - Automatización empresarial inteligente - Transmisión de datos - Integración completa

Definición

El middleware es todo software que se sitúa entre el sistema operativo y las aplicaciones que corren sobre él. Este funciona como una capa de traducción que posibilita la comunicación y la administración de datos en aplicaciones distribuidas. El middleware busca proporcionar a los sistemas distribuidos la propiedad de la transparencia, esto es, enmascarar la naturaleza heterogénea del sistema. Esto se logra proporcionando las siguientes características: Ofrecer la capacidad de solicitar y recibir datos de manera transparente. Liberando a los diseñadores y administradores del sistema de problemas de implementación derivados de la complejidad del sistema operativo. En la práctica el middleware se representa mediante procesos u objetos dentro de un conjunto de equipos que interactúan entre sí para implementar la comunicación y el intercambio de recursos para las aplicaciones distribuidas.

Historia

El origen de la palabra middleware se remonta al año 1960, donde la palabra fue usada durante la '1960 NATO Software Engineering Conference', siendo una idea de cómo conectar el nuevo software con sistemas más antiguos. Durante las décadas previas a los años 1990, fue solamente descrito como un software para la gestión de conexión en redes, pero para cuando las tecnologías en redes alcanzaron una penetración y visibilidad suficiente, el software middleware había evolucionado en un conjunto de paradigmas y servicios. De esta forma se estaba ofreciendo una manera más fácil, robusta y controlable, para construir aplicaciones distribuidas.

Taxonomía de los programas de middleware center|thumb|700px|Esquema taxonomía de software middleware.

La taxonomía o clasificación del software middleware puede ser descrita en dos grandes categorías: una de integración y otra de aplicación. Estas poseen a su vez diferentes clases.

Categoría de integración Es el tipo de integración que posee la capacidad de unirse con sistemas heterogéneos. Cada middleware posee diferentes protocolos de comunicación o formas de operar en diferente software. Los tipos de integración se pueden ver como:

Orientados a procedimiento o procesos Los middleware que son orientados a procesos, utilizan una comunicación sincronizada (como por ejemplo el teléfono). Una de las características de estos, es que utilizan el client stub y el server skeleton. El client stub convierte la petición en un mensaje que es mandado al servidor; luego el server skeleton recibe el mensaje, lo convierte en la petición y llama a la aplicación del servidor donde ésta es procesada. Terminado el procesamiento, ocurre el proceso inverso. El client stub verifica los errores, envía los resultados al software que inició la petición y entonces suspenden el proceso. Las ventajas de estos middleware es que usan un tipo estándar en nombres de servicios y procesos remotos, pueden retornar respuesta aún con problemas en la red y pueden manejar múltiples tipos de formatos para datos y niveles heterogéneos de sistemas de servicio. Las desventajas son que no poseen escalabilidad, no pueden retornar la información a un programa diferente del que realizó la solicitud (reflexión) y poseen procesos muy rígidos.

Orientados a objetos Soportan pedidos de objetos distribuidos. La comunicación entre los objetos puede ser sincronizada, sincronizada diferida o no sincronizada. Soportan múltiples pedidos similares realizados por múltiples clientes en una transacción. La forma de operar es:

El objeto cliente llama a un método lógico para obtener un objeto remoto. Un ORB Proxy (también conocido como stub) pone en orden la información (marshalling o serialización) y la transmite a través del agente (broker). El agente actúa como punto medio y contacta con diversas fuentes de información, obtiene sus referentes IDs, recolecta información y, en ocasiones, la reorganiza. El proxy remoto (también conocido como skeleton) desordena (unmarshalling o deserialización) la información que le llega del agente y se la pasa al objeto servidor. El objeto servidor procesa la información y genera un resultado que es devuelto al cliente siguiendo los pasos inversos.

Las ventajas son que permiten generar reflexión y escalabilidad, que opera con múltiples tipos de información y estados y que soporta procesos múltiples. Las desventajas consisten en obtener la existencia de vínculos antes de la ejecución y de un código contenedor para algunos sistemas heredados.

Orientados a mensajes (MOM, Message-oriented middleware) Se pueden dividir en dos tipos, espera y publicación/suscripción. El paso de espera se puede dividir en mensaje y espera. El paso de mensaje inicia con que la aplicación envía un mensaje a uno o más clientes, con el MOM del cliente. El servidor MOM, recoge las peticiones de la cola (Message Broker) en un orden o sistema de espera predeterminado. Los actos del servidor MOM son como un router y usualmente no interactúan con estas. El MOM de publicación y suscripción actúa de manera ligeramente diferente, es más orientado a eventos. Si un cliente quiere participar por primera vez, se une al bus de información. Dependiendo de su función, si es como publicador, suscriptor y ambas, este registra un evento. El publicador envía una noticia de un evento al bus de memoria. El servidor MOM envía un anuncio al suscriptor registrado cuando la información está disponible.

Orientados a componentes Un componente es un «programa que realiza una función específica, diseñada para operar e interactuar fácilmente con otros componentes y aplicaciones». El middleware, en este caso, se organiza en una configuración de componentes. Los puntos fuertes de este middleware es que es configurable y reconfigurable. La reconfiguración se puede realizar en tiempo de ejecución, lo que ofrece una gran flexibilidad para satisfacer las necesidades de un gran número de aplicaciones.

Agentes Los agentes son un tipo de middleware que posee varios componentes: Entidades. Pueden ser objetos o procesos. Medios de comunicación. Pueden ser canales, tuberías, etc. Leyes. Identifican la naturaleza interactiva de los agentes. Pueden ser la sincronización o el tipo de esquema. Las ventajas de los middleware agentes son que la capacidad de éstos para realizar una gran cantidad de tareas en nombre del usuario y para cubrir una amplia gama de estrategias basadas en el entorno que les rodea. Sin embargo, su implementación es complicada debido a la complejidad y dificultades dadas por las operaciones que manejan.

Categoría de aplicación La clasificación por aplicación incluye los middleware que son ajustados para aplicaciones específicas.

Middleware para acceso a información (DAM, Data Access middleware) Los middleware para acceso a información tienen la característica de poder interactuar con diversas fuentes de datos. En este tipo de middleware se encuentran los que procesan transacciones, gateways de bases de datos y sistemas distribuidos de transacción/procedimiento.

Sus ventajas residen en la comunicación que tienen entre múltiples fuentes de datos, la conversión del lenguaje de programación de la aplicación a un lenguaje aceptado por la fuente de datos de destino y la capacidad de respuesta en un formato y lenguaje aceptable para el solicitante.

Middleware de escritorio Los middleware de escritorio pueden hacer variaciones en la presentación de la información pedida por el usuario por aplicaciones de rastreo y asistencia, controlar cualquier servicio de transporte y proveer una copia de seguridad y otras operaciones de fondo. Otras pueden ser manutención y gráficas, ordenamientos, directorios de servicios, manejo de información de la base de datos, manejo de procesos, calendarización de trabajos, notificación de eventos de servicios, manejo de instalación de software, servicios de cifrado y control de accesos.

Middleware basados en la web Este tipo de middleware asiste al usuario con la navegación web, el uso de interfaces que le permiten encontrar páginas de su interés y detectar cambios de interés del usuario basado en su historial de búsquedas. Provee de un servicio de identificación para un gran número de aplicaciones y comunicación entre procesos independiente del sistema operativo, protocolo de red y plataforma de hardware. Los middleware que se encuentran fuertemente unidos a la red se llaman servidores de aplicaciones, ya que mejoran el rendimiento, disponibilidad, escalabilidad, seguridad, recuperación de información, y soportan la administración colaborativa y su uso. Los middleware pueden contactar directamente a la aplicación ganando mejor comunicación entre el servidor y el cliente. Otros servicios importantes dados por este tipo de middleware son servicios de directorios, correos electrónicos, cadenas de suministros de gran tamaño, accesos remotos a información, descarga de archivos, accesos a programas y acceso a aplicaciones remotas.

Middleware a tiempo real La información en tiempo real es caracterizada porque la información correcta en un instante puede no serlo en otro. Los middleware en tiempo real soportan las peticiones sensibles al tiempo y políticas de planificación. Esto se realiza con servicios que mejoran la eficiencia de las aplicaciones de usuario. Los middleware en tiempo real se pueden dividir en diferentes aplicaciones:

Aplicación de base de datos en tiempo real. Sensor de procesamiento. Transmisión de información.

La información que pasa a través de un middleware en tiempo real se ha incrementado dramáticamente con la introducción de internet, redes inalámbricas, y las nuevas aplicaciones basadas en la difusión.