I am trying to identify the parts of an architecture.
The server (Python) acts as a web-service, delivering files and data. The client (JS) requests the data which it needs by sending
xmlhttprequests to the server.
I read that there can be a "middleware" layer that connects the application with its node of the distributed system. The point of the middleware is to abstract away the underlying network communication
SOAP is given as an example for being a middleware protocol. I do not use SOAP (or REST) Does that mean I do not have a middleware? I'm using plain old HTTP for the communication. Is that enough of an abstraction to be called a middleware? On the other hand, HTTP is part of the TCP/IP stack, which makes me think it is a part of the network communication and not an abstraction thereof. That would suggest that I do not use/have a middleware.
What exactly is a middleware in this scenario?
One part of the problem is that it's not very clear what the middleware actually is and that there are different definitions of it.
What I found so far and what I asked this question upon is that there exists one layer of middleware, per node in the distributed system. The middleware layers are not directly connected. It is the network underneath the middleware that ensures the connection. The middleware is there to provide an abstraction layer between the application and the network.
See this image:
Each middleware block is separate. that makes sense. Chances are that the middleware for Mac OS is an entirely different thing than the middleware for Windows. On each application builds upon its specific middleware.
Another way to think about it is that the middleware actually is pretty much the only thing that connects the nodes of the distributed system as can be seen in the image from wikipedia:
This looks like a contradiction. In one scenario, each part of the application talks to its individual middleware, which in turn talks to the node of the network. The middleware is the common base line that separates the distributed application from the distributed system underneath. In the other, the middleware is some big blob that spans across all nodes which means that there is no such thing as individual middlewares for each node.
I have the growing suspicion that everybody makes up their own interpretation of this not strictly defined terminology.
is that there is no (clear) answer. The accepted answer provides reasonable thoughts about the whole matter. The terminology falls apart if applied in a rigorous concrete way.