Does "middleware" have two different meanings and therefor is unnecessarily overloaded?
Horizontal: I saw some use middleware to mean something like proxy or gateway sitting between two entities at the same level. For example, https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware/?view=aspnetcore-3.1
Middleware is software that's assembled into an app pipeline to handle requests and responses. Each component:
Chooses whether to pass the request to the next component in the pipeline.
Can perform work before and after the next component in the pipeline.
- Vertical: I also saw some use the word to mean a level of abstraction, to hide the lower level from upper level that consumes the services provided by the middleware. For example, in Distributed Systems by Tanenbaum or by Coulouris, middleware is used to hide the heterogeneity between the individual computers with different platforms in distributed systems, and to provide a uniform programming interface to distributed application developers. There doesn't seem to be something sitting between the computers.
Or does the word have just one meaning or two very coherent meanings and I overestimate the differences?