Middleware abstracts the underlying communication process between components. This means that the frontend application communicates only to the middleware and does not have to learn the language of other backend software components.