Middleware ist eine Softwareschicht, die Kommunikationsdienste für verteilte Anwendungen über Standardschnittstellen bereitstellt und damit die Integration unterschiedlicher Anwendungen und ihrer Daten ermöglicht.
Verschiedene Software-Systeme sprechen oft nicht unmittelbar dieselbe technische Sprache. Middleware setzt sich als vermittelnde Schicht zwischen diese Systeme und übernimmt die Übersetzungs- und Koordinationsarbeit, sodass eigentlich voneinander unabhängige Anwendungen Daten austauschen und zusammenarbeiten können, ohne dass jede Anwendung die technischen Details der anderen kennen muss.
Middleware liegt im Schichtenmodell oberhalb des Betriebssystems und der grundlegenden Netzwerkkommunikation, aber unterhalb der eigentlichen Fachanwendungen. Sie übernimmt Aufgaben wie den Transport komplexer Daten zwischen Systemen, die Vermittlung von Funktionsaufrufen über Systemgrenzen hinweg oder die Sicherstellung von Transaktionssicherheit über mehrere, ansonsten unabhängige Teilsysteme. Technisch nutzt Middleware dafür meist etablierte Netzwerkprotokolle als Grundlage, etwa HTTP, und baut darauf weitere Kommunikationsmuster auf, etwa für Nachrichtenwarteschlangen oder entfernte Prozeduraufrufe.
Ein Unternehmen betreibt ein älteres Warenwirtschaftssystem und eine neue Online-Shop-Anwendung, die beide unterschiedliche Datenformate verwenden. Eine Middleware übersetzt zwischen beiden Systemen und sorgt dafür, dass Bestelldaten aus dem Shop automatisch im Warenwirtschaftssystem ankommen, ohne dass eines der beiden Systeme angepasst werden muss.
Middleware wird eingesetzt, um heterogene, oft historisch gewachsene IT-Landschaften zu integrieren, Datenaustausch zwischen Alt- und Neusystemen zu ermöglichen und verteilte Anwendungen über Standardschnittstellen kommunizieren zu lassen, ohne dass jede Anwendung direkt mit jeder anderen verbunden werden muss.
Middleware ist kein einzelnes Produkt oder eine einzelne Technik, sondern eine funktionale Kategorie von Software, die sehr unterschiedlich ausgeprägt sein kann, von Nachrichtenwarteschlangen bis zu Transaktionsmonitoren. Häufig wird außerdem übersehen, dass Middleware selbst zusätzliche Komplexität und einen eigenen Betriebsaufwand mitbringt – sie löst Integrationsprobleme nicht automatisch, sondern verlagert sie in eine zentrale, sorgfältig zu pflegende Schicht.
Nicht zu verwechseln mit Application Programming Interface: Eine Programmierschnittstelle definiert, wie zwei Systeme konkret miteinander kommunizieren können, Middleware ist die Softwareschicht, die solche Schnittstellen bereitstellt oder zwischen ihnen vermittelt. Ebenfalls abzugrenzen ist Serviceorientierte Architektur: Diese ist ein übergeordnetes Architekturprinzip für den Aufbau von Software aus unabhängigen Diensten, Middleware ist eine mögliche technische Grundlage, auf der eine solche Architektur umgesetzt werden kann.