¿Qué es el patrón de middleware?

4 respuestas

7

El autor del proyecto que vinculó describe el middleware como un "motor de estado" para la lógica empresarial, similar a Windows Communication Foundation. No es la definición habitual de middleware (software que une dos o más aplicaciones heterogéneas), y no creo "patrón de middleware" es una cosa.

Creo que el autor está jugando un poco rápido y suelto con su terminología.

    
respondido por el Robert Harvey 01.07.2013 - 19:02
4

Basado en lo que puedo decir del ejemplo, básicamente permite un conjunto arbitrario de ganchos de acción previa y acción posterior que están encadenados de una manera definida (por lo tanto, construyes la pila por la que pasa) en una inicial particular estado de una entrada (en este caso, nil , pero no hay ningún requisito para que sea así).

Su motivación parece estar en el contexto de las solicitudes HTTP en las que podría modificar las propiedades de solicitud / respuesta de cualquier manera. No creo que este patrón sea demasiado útil en el sentido general (y llamarlo "middleware" es ciertamente una apropiación indebida).

La ventaja parece ser la separación de preocupaciones, por ejemplo, Algo maneja el sistema generalizado para enganchar y encadenar operaciones a una entrada. Cualquier suscripción a este servicio podría implementarse fácilmente en otros contextos y conectarse directamente a una secuencia de operaciones. También es fácil adivinar los efectos secundarios de insertar cualquier operación en particular en la cadena, siempre que se haga de forma estática.

La desventaja para mí es que el contexto se elimina por completo: no está claro en qué está operando sin una convención de nomenclatura sólida o cuál es el impacto de cualquier cambio en los suscriptores sin entender el contexto. Tendría que incluir tanto el contexto de la persona que llama como lo que hace en la convención de nomenclatura para que sea comprensible desde ambos lados.

Para mí, parece que sería mejor representar las operaciones como un concepto completo; p.ej. estableciendo todas las propiedades en un solo lugar. Puedo ver la necesidad de tal vez una parte de la aplicación para inyectar propiedades y es un uso mucho más interesante, por ejemplo, tal vez en el contexto de una solicitud HTTP tenga algo que cambie el tipo de respuesta a XML mientras escupe XML.

Sin embargo, la forma en que se configura, debe asegurarse de que fue el único punto que configuró el tipo de respuesta, el único que será para una solicitud en particular, o solo el último que sobrescribiría cualquiera que viniera antes eso. De lo contrario, tendrías problemas.

No estoy seguro de que resolver el problema de esta manera sea un patrón convincente, pero estoy totalmente de acuerdo en que podría ser porque lo observé y lo pensé durante 30 minutos. Supongo que alguien dedica más tiempo que eso a hacerlo, por lo que podría haber cosas que me faltan.

    
respondido por el Joel 01.07.2013 - 19:05
4

La primera vez que encontré el 'patrón' de middleware en node.js connect, y luego expresé, los proyectos: es solo una forma clara y sencilla de escribir código asíncrono, donde las devoluciones de llamada se insertan en una API 'framework', cada una de que se espera que acepte un parámetro de devolución de llamada, que se ejecutará cuando la rutina regrese. En el contexto de connect, que es un marco de aplicación de servidor HTTP, todas las partes del ciclo de solicitud y la lógica de la aplicación se pueden implementar o acceder, con devoluciones de llamada encadenadas. Por lo tanto, en este contexto, el middleware es una unidad de código independiente que proporciona un servicio a través de una API predefinida. Podría ser autenticación y autorización, solicitar análisis de carga de archivos, ajustar datos de vista a través de una transformación XSLT ... Supongo que sigue la metáfora del uso tradicional del término, como se describe en una respuesta anterior.

    
respondido por el LeeGee 05.09.2014 - 00:09
2

Por supuesto, el término middleware ha cambiado bastante desde que esta pregunta se publicó (hace casi 5 años cuando escribo esto).

Mientras leía el libro recientemente publicado, Creación de microservicios con ASP.NET Core (por Kevin Hoffman) Vine en este término y quería saber más al respecto.

Eso me llevó al sitio de Microsoft que ahora lo define de la siguiente manera:

  

¿Qué es el middleware?

     

Middleware es un software que se ensambla en un   aplicación de la tubería para manejar las solicitudes y respuestas. Cada   componente:

     
  • elige si pasar la solicitud al siguiente componente en el   tubería.
  •   
  • Puede realizar trabajos antes y después de invocar el siguiente componente de la canalización.
  •   

El patrón de middleware se usa a menudo como una forma de describir cómo se maneja el enrutamiento de mensajes en un sistema de microservicios. Algo como un controlador central que decide qué microservicio recibirá el mensaje entrante. De esta manera, es un "componente de middleware" que maneja el enrutamiento de mensajes.

    
respondido por el raddevus 28.01.2018 - 21:14

Lea otras preguntas en las etiquetas