¿Qué es el middleware exactamente?

203

He escuchado a mucha gente hablar recientemente sobre middleware , pero ¿cuál es la definición exacta de middleware? Cuando busco en el middleware, encuentro mucha información y algunas definiciones, pero al leer esta información y definiciones, parece que la mayoría de los "productos" están en el medio de algo. Entonces, ¿son todas las cosas middleware?

¿O tienes un ejemplo de un software que no es middleware?

Michel
fuente

Respuestas:

219

Digamos que su compañía fabrica 4 productos diferentes, su cliente tiene otros 3 productos diferentes de otras 3 compañías diferentes.

Algún día el cliente pensó: ¿por qué no integramos todos nuestros sistemas en un sistema enorme? Diez minutos después, su departamento de TI dijo que tomará 2 años.

Usted (el desarrollador inteligente) dijo: ¿por qué no solo integramos todos los diferentes sistemas y los hacemos trabajar juntos en un entorno homogéneo? El administrador del cliente que lo mira ... Continuó, usaremos un Middleware, estudiaremos las entradas / salidas de todos los diferentes sistemas, los recursos que usan y luego elegiremos un marco de Middleware apropiado.

Aún explicando al gerente no tecnológico
Con el framework Middleware en el medio, el primer sistema producirá cosas X, el sistema Y y Z consumirían esas salidas y así sucesivamente.

medopal
fuente
¡Gran ejemplo! De esta manera, ¿no se convertirá en un entorno heterogéneo? no homogéneo
Rabia Naz khan
El middleware es un componente de datos (agregación + transformación).
intercambiar en exceso el
92

Middleware es un término terriblemente nebuloso. Lo que es "middleware" en un caso no estará en otro. En general, puede esperar que algo clasificado como middleware tenga las siguientes características:

  • Principalmente (generalmente exclusivamente) software; generalmente no necesita ningún hardware especializado.

  • Si no estuviera allí, las aplicaciones que dependen de él tendrían que incorporarlo como parte de su aplicación y experimentarían mucha duplicación.

  • Es casi seguro que conecta dos aplicaciones y pasa datos entre ellas.

Notarás que esta es más o menos la misma definición que un sistema operativo. Entonces, por ejemplo, una pila TCP / IP o almacenamiento en caché podría considerarse middleware. Pero su sistema operativo también podría proporcionar las mismas características. De hecho, el middleware puede considerarse como una extensión especial de un sistema operativo, específico de un conjunto de aplicaciones que dependen de él. Simplemente proporciona un servicio de nivel superior.

Algunos ejemplos de middleware:

  • caché distribuida
  • cola de mensajes
  • monitor de transacciones
  • reescritor de paquetes
  • sistema de respaldo automatizado
John Feminella
fuente
20

Wikipedia tiene una muy buena explicación: http://en.wikipedia.org/wiki/Middleware

Empieza con

Middleware es un software de computadora que conecta componentes o aplicaciones de software. El software consta de un conjunto de servicios que permite que múltiples procesos que se ejecutan en una o más máquinas interactúen.

Qué es Middleware da algunos ejemplos.

aioobe
fuente
1
Ya lo encontré yo mismo, pero parece que Wikipedia dice que todo es middleware o tienes un ejemplo de un software que no es middleware
Michel
2
Aclararía agregando ... "una o más máquinas para interactuar que de forma nativa no podrían". De lo contrario, de acuerdo, nada de malo con esa respuesta.
jeriley
1
Es mejor decir "uno o más [procesos] para interactuar que de forma nativa no podrían".
fstuijt
19

Hay (al menos) tres definiciones diferentes que conozco

  • En informática empresarial, el middleware es un software de mensajería e integración entre aplicaciones y servicios.

  • en juegos, el middleware es bastante bueno cualquier cosa que sea proporcionada por un tercero

  • En (algunos) sistemas de software integrados, el middleware proporciona servicios que utilizan las aplicaciones, que se componen de las funciones proporcionadas por la capa de abstracción de hardware: se ubica entre la capa de aplicación y la capa de abstracción de hardware.

Pete Kirkham
fuente
15

En pocas palabras, Middleware es un componente de software que proporciona servicios para integrar sistemas dispares juntos.

En un entorno empresarial complejo, hay una serie de desafíos cuando necesita integrar dos o más sistemas empresariales para comunicarse entre sí. Normalmente, estos sistemas no entienden el lenguaje de los demás, ya que se desarrollan en diferentes plataformas que utilizan diferentes lenguajes (como C ++, Java, Cobol, etc.).

Así que aquí viene el software de middleware en la imagen que proporciona servicios como

  • transformación de formatos de mensajes de una aplicación a otra,
  • enrutar y enriquecer mensajes además de cuidar la seguridad,
  • cifrado
  • validación y
  • aplicando diferentes reglas comerciales a estos mensajes.

Un ejemplo típico de middleware es un producto ESB como IBM Message Broker (WMB / IIB), WESB, Datapower XI50, Oracle Fusion, Mule y muchos otros.

Por lo tanto, el middleware se ubica principalmente entre las aplicaciones que consumen servicios y las aplicaciones del proveedor de servicios, y ayuda a estas aplicaciones a comunicarse entre sí.

SAK123
fuente
14

Middleware trata sobre cómo nuestra aplicación responde a las solicitudes entrantes. Middlewares analiza la solicitud entrante y toma decisiones basadas en esta solicitud. Podemos construir aplicaciones completas solo usando middlewares. Por ejemplo, ASP.NET es un marco web que comprende los siguientes componentes principales de middleware HTTP.

  1. Manejo de excepciones / errores
  2. Servidor de archivos estático
  3. Autenticación
  4. MVC Middlewares

Como se muestra en el diagrama anterior, hay varios componentes de middleware en ASP.NET que reciben la solicitud entrante y la redirigen a una clase C # (en este caso, una clase de controlador).

Eldiyar Talantbek
fuente
10

Middleware es un término general para software que sirve para "unir" programas separados, a menudo complejos y ya existentes. Algunos componentes de software que se conectan frecuentemente con middleware incluyen aplicaciones empresariales y servicios web.

falcucci
fuente
6

Hay una definición común en el desarrollo de aplicaciones web que es (y estoy haciendo esta redacción pero parece encajar): un componente que está diseñado para modificar una solicitud y / o respuesta HTTP pero que (por lo general) no sirve la respuesta en su totalidad, diseñado para ser encadenado entre sí para formar una tubería de cambios de comportamiento durante el procesamiento de solicitudes.

Ejemplos de tareas que comúnmente implementa el middleware:

  • Compresión de respuesta gzip
  • Autenticación HTTP
  • Solicitar registro

El punto clave aquí es que ninguno de estos es totalmente responsable de responder al cliente. En cambio, cada uno cambia el comportamiento de alguna manera como parte de la tubería, dejando que la respuesta real provenga de algo más adelante en la secuencia (tubería).

Por lo general, los middlewares se ejecutan antes de algún tipo de "enrutador", que examina la solicitud (a menudo la ruta) y llama al código apropiado para generar la respuesta.

Personalmente, odio el término "middleware" por su carácter genérico, pero es de uso común.

Aquí hay una explicación adicional específicamente aplicable a Ruby on Rails.

Brad Peabody
fuente
6

Middleware se interpone entre las aplicaciones web y los servicios web que de forma nativa no pueden comunicarse y que a menudo están escritos en diferentes idiomas / marcos.

Un ejemplo de ello es el OWIN middleware for .NETentorno, antes de que las personas debidas se vieran obligadas a alojar aplicaciones web en un software de alojamiento llamado Microsoft IIS. Después de que se desarrolló Owin, ha agregado capacidad para alojar tanto en IIS como en auto host, en IIS solo se agregó soporte para Owin, que actuó como una interfaz. También es posible host .NET web apps on Linux via Mono, lo que nuevamente agregó soporte para Owin.

También agregó capacidad para crear Single Page Applications, Owin manejando el Httpcontexto de solicitud / respuesta, por lo que además de poder agregar authentication/authorizationlógica a través de OAuth2, por ejemplo, puede configurar el middleware para registrar una clase que contenga lógica de autenticación de usuario (por ejemplo, implementación de OAuth2) o clase que contiene la lógica de cómo administrar los mensajes de solicitud / respuesta http, de esa manera puede hacer que una aplicación se comunique con otras aplicaciones / servicios a través de diferentes formatos de datos (como json, xml, etc. si está apuntando a la web).

Daniel
fuente
3

Algunos ejemplos de middleware: CORBA, Invocación de método remoto (RMI), ...

Los ejemplos mencionados anteriormente son todas las piezas de software que le permiten ocuparse de la comunicación entre diferentes procesos (ya sea que se ejecutan en la misma máquina o se distribuyen a través de Internet, por ejemplo).

fstuijt
fuente
2

Desde mi propia experiencia con el trabajo web, un middleware era algo entre los usuarios (el navegador web) y la base de datos de back-end. Fue el software el que tomó las cosas que los usuarios pusieron (por ejemplo: pedidos de iPads, hizo una lógica comercial mágica, es decir, verificó si hay suficientes iPads disponibles para completar el pedido) y actualizó la base de datos de back-end para reflejar esos cambios.

eviljack
fuente
2

Es solo una pieza de software o una herramienta en la que se ejecuta su aplicación y capacidades de replicación con respecto a la alta disponibilidad, escalabilidad, integración con otros softwares o sistemas sin que se preocupe por los cambios en el código de nivel de la aplicación.

Por ejemplo: el sistema operativo en el que se ejecuta su aplicación requiere un cambio de IP, no tiene que preocuparse por eso en su código, es la pila de middleware en la que puede actualizar la configuración.

Ejemplo 2: Experimenta problemas con la asignación de memoria en tiempo de ejecución y siente que el uso de su aplicación ha aumentado, no tiene que preocuparse mucho a menos que tenga un error o un cuello de botella en su código, se puede lograr fácilmente ajustando la configuración del software de middleware en que ejecuta tu aplicación.

Ejemplo 3: tiene múltiples software dispares y necesita que se comuniquen entre ellos o que envíen datos en un formato común que sea comprensible para todos los sistemas, entonces aquí es donde los sistemas de middleware son útiles.

Espero que la información proporcionada ayude.

Afzal Haque
fuente
2

Es una capa de software entre el sistema operativo y las aplicaciones en cada lado de un sistema informático distribuido en una red. De hecho, conecta redes heterogéneas y sistemas de software.

Maryam Sheikh
fuente
0

Siempre lo consideré el software más antiguo que tuve que instalar. La aplicación total utilizó un servidor web, un servidor de base de datos y un servidor de aplicaciones. El servidor web es el middleware entre los datos y la aplicación.

Almiar
fuente
0

Si no me equivoco, en el marco de la aplicación de software , según el contexto , puede considerar middlewarelos siguientes roles que se pueden combinar para realizar ciertas actividades entre el usuario requesty la aplicación response.

  • Adaptador
  • Desinfectante
  • Validador
ANM Saiful Islam
fuente