Without middleware, messages that a computer passes to another computer would get lost. Middleware refers to a layer of software between the network and the application. It is quite a general term; it encompasses everything from the client's application programming interface (API) that sends a request for a service to the transmission of the message (Orfali). It allows client software to communicate with the server in an abstract manner, compared to explicit commands.
This abstract communication may not seem like such a big deal, but for vendors of different platforms and different applications, it is. Applications often speak their own dialect. Similarly, Chinese people speak their local dialect, such as Mandarin and Cantonese. When computers using different operating systems are connected together, its applications can barely communicate without middleware, because they speak in a different dialect and language. They certainly won't understand each other.
Middleware technologies provide a way around that: their interoperability and standardization, when combined, make it the perfect language translator. It opens communication between new applications and legacy — or, not-quite-modern — applications, converting data between different formats. The advantage is obvious, but it can also save money in upgrade costs.
The software also provides many other services:
authentication of computers
remote procedural calls — allows an application to execute a procedure on another computer
queues — allows computers to asynchronously communicate by leaving a message for the other computer to pick up later
time synchronization (Burghart)
distributed directories — allows a computer to access directories of another computer as if it were its own
...and much, much more!
Middleware is one technology that can seemingly do it all, and do it with each other seamlessly.