Was ist Middleware genau?

202

Ich habe in letzter Zeit viele Leute über Middleware sprechen hören , aber wie lautet die genaue Definition von Middleware? Wenn ich mir Middleware anschaue, finde ich viele Informationen und einige Definitionen, aber beim Lesen dieser Informationen und Definitionen scheint es, dass sich fast alle „Waren“ mitten in etwas befinden. Also, sind alle Dinge Middleware?

Oder haben Sie ein Beispiel für eine Ware, die keine Middleware ist?

Michel
quelle

Antworten:

219

Nehmen wir an, Ihr Unternehmen stellt 4 verschiedene Produkte her, Ihr Kunde hat weitere 3 verschiedene Produkte von weiteren 3 verschiedenen Unternehmen.

Eines Tages dachte der Kunde, warum integrieren wir nicht alle unsere Systeme in ein riesiges System? Zehn Minuten später gab die IT-Abteilung bekannt, dass dies zwei Jahre dauern wird.

Sie (der weise Entwickler) sagten, warum integrieren wir nicht einfach alle verschiedenen Systeme und lassen sie in einer homogenen Umgebung zusammenarbeiten? Der Client-Manager starrt Sie an ... Sie fuhren fort, wir werden eine Middleware verwenden, wir werden die Ein- / Ausgänge aller verschiedenen Systeme und die von ihnen verwendeten Ressourcen untersuchen und dann ein geeignetes Middleware-Framework auswählen.

Immer noch dem Non-Tech-Manager erklären
Mit dem Middleware-Framework in der Mitte wird das erste System X-Zeug produzieren, das System Y und Z würden diese Ausgaben verbrauchen und so weiter.

medopal
quelle
Tolles Beispiel! Auf diese Weise wird es nicht zu einer heterogenen Umgebung? nicht homogen.
Rabia Naz Khan
Middleware ist eine Datenkomponente (Aggregation + Transformation).
Überaustausch
92

Middleware ist ein schrecklich nebulöser Begriff. Was in einem Fall "Middleware" ist, wird in einem anderen nicht sein. Im Allgemeinen können Sie erwarten, dass etwas, das als Middleware eingestuft ist, die folgenden Eigenschaften aufweist:

  • Hauptsächlich (normalerweise ausschließlich) Software; benötigt normalerweise keine spezielle Hardware.

  • Wenn es nicht vorhanden wäre, müssten Anwendungen, die davon abhängen, es als Teil ihrer Anwendung einbeziehen und würden viel Duplizierung erfahren.

  • Mit ziemlicher Sicherheit werden zwei Anwendungen verbunden und Daten zwischen ihnen übertragen.

Sie werden feststellen, dass dies fast die gleiche Definition wie ein Betriebssystem ist. So kann beispielsweise ein TCP / IP-Stack oder Caching als Middleware betrachtet werden. Ihr Betriebssystem könnte jedoch auch dieselben Funktionen bieten. In der Tat kann Middleware als eine spezielle Erweiterung eines Betriebssystems betrachtet werden, die für eine Reihe von Anwendungen spezifisch ist, die davon abhängen. Es bietet nur einen übergeordneten Service.

Einige Beispiele für Middleware:

  • verteilter Cache
  • Nachrichtenwarteschlange
  • Transaktionsmonitor
  • Paketumschreiber
  • automatisiertes Backup-System
John Feminella
quelle
20

Wikipedia hat eine recht gute Erklärung: http://en.wikipedia.org/wiki/Middleware

Es beginnt mit

Middleware ist Computersoftware, die Softwarekomponenten oder -anwendungen verbindet. Die Software besteht aus einer Reihe von Diensten, mit denen mehrere Prozesse, die auf einem oder mehreren Computern ausgeführt werden, interagieren können.

Was ist Middleware gibt einige Beispiele.

aioobe
quelle
1
Ich habe es selbst schon gefunden, aber es scheint, dass Wikipedia sagt, dass alles Middleware ist oder haben Sie ein Beispiel für eine Ware, die keine Middleware ist
Michel
2
Ich würde klarstellen, indem ich ... "eine oder mehrere Maschinen zur Interaktion hinzufüge, die von Haus aus nicht in der Lage wären". Ansonsten stimme zu, nichts falsch mit dieser Antwort.
Jeriley
1
Besser zu sagen "ein oder mehrere [Prozesse] zur Interaktion, die von Haus aus nicht möglich wären".
25.
19

Es gibt (mindestens) drei verschiedene Definitionen, die mir bekannt sind

  • Im Business Computing ist Middleware eine Messaging- und Integrationssoftware zwischen Anwendungen und Diensten

  • Beim Spielen ist Middleware so ziemlich alles, was von einem Drittanbieter bereitgestellt wird

  • In (einigen) eingebetteten Softwaresystemen stellt Middleware Dienste bereit, die von Anwendungen verwendet werden und aus den Funktionen der Hardwareabstraktionsschicht bestehen. Sie befindet sich zwischen der Anwendungsschicht und der Hardwareabstraktionsschicht.

Pete Kirkham
quelle
15

Einfach ausgedrückt ist Middleware eine Softwarekomponente, die Dienste zur Integration unterschiedlicher Systeme bereitstellt.

In einer komplexen Unternehmensumgebung gibt es eine Reihe von Herausforderungen, wenn Sie zwei oder mehr Unternehmenssysteme zusammen integrieren müssen, um miteinander zu kommunizieren. Normalerweise verstehen sich diese Systeme nicht gegenseitig, da sie auf verschiedenen Plattformen mit verschiedenen Sprachen (wie C ++, Java, Cobol usw.) entwickelt wurden.

Hier kommt also Middleware-Software in Bild, die Dienste wie anbietet

  • Umwandlung von Nachrichtenformaten von einer App in eine andere,
  • Weiterleiten und Anreichern von Nachrichten neben der Sicherheit,
  • Verschlüsselung,
  • Validierung und
  • Anwenden unterschiedlicher Geschäftsregeln auf diese Nachrichten.

Ein typisches Beispiel für Middleware sind ESB- Produkte wie IBM Message Broker (WMB / IIB), WESB, Datapower XI50, Oracle Fusion, Mule und viele andere.

Daher befindet sich die Middleware hauptsächlich zwischen den dienstverbrauchenden Apps und den Dienstanbieter-Apps und hilft diesen Apps, miteinander zu kommunizieren.

SAK123
quelle
14

In der Middleware geht es darum, wie unsere Anwendung auf eingehende Anfragen reagiert. Middlewares untersuchen die eingehende Anfrage und treffen Entscheidungen basierend auf dieser Anfrage. Wir können ganze Anwendungen nur mit Middleware erstellen. Zum Beispiel ist ASP.NET ein Webframework, das die folgenden Hauptkomponenten der HTTP-Middleware umfasst.

  1. Ausnahme- / Fehlerbehandlung
  2. Statischer Dateiserver
  3. Authentifizierung
  4. MVC Middlewares

Wie im obigen Diagramm gezeigt, gibt es in ASP.NET verschiedene Middleware-Komponenten, die die eingehende Anforderung empfangen und an eine C # -Klasse (in diesem Fall eine Controller-Klasse) umleiten.

Eldiyar Talantbek
quelle
10

Middleware ist ein allgemeiner Begriff für Software, die dazu dient, separate, häufig komplexe und bereits vorhandene Programme "zusammenzukleben". Einige Softwarekomponenten, die häufig mit Middleware verbunden sind, umfassen Unternehmensanwendungen und Webdienste.

Falcucci
quelle
6

In der Entwicklung von Webanwendungen gibt es eine gängige Definition: (und ich mache diesen Wortlaut, aber er scheint zu passen): Eine Komponente, die eine HTTP-Anforderung und / oder -Antwort modifiziert, aber (normalerweise) nicht der Antwort dient in seiner Gesamtheit entworfen, um verkettet zu werden, um eine Pipeline von Verhaltensänderungen während der Anforderungsverarbeitung zu bilden.

Beispiele für Aufgaben, die üblicherweise von Middleware implementiert werden:

  • Gzip-Antwortkomprimierung
  • HTTP-Authentifizierung
  • Protokollierung anfordern

Der entscheidende Punkt hierbei ist, dass keiner von diesen vollständig für die Reaktion auf den Kunden verantwortlich ist. Stattdessen ändert jeder das Verhalten in irgendeiner Weise als Teil der Pipeline, sodass die eigentliche Antwort von etwas später in der Sequenz (Pipeline) kommt.

Normalerweise werden die Middlewares vor einer Art "Router" ausgeführt, der die Anforderung (häufig den Pfad) untersucht und den entsprechenden Code aufruft, um die Antwort zu generieren.

Persönlich hasse ich den Begriff "Middleware" wegen seiner Generizität, aber er wird allgemein verwendet.

Hier finden Sie eine zusätzliche Erklärung, die speziell für Ruby on Rails gilt.

Brad Peabody
quelle
6

Middleware steht zwischen Webanwendungen und Webdiensten, die von Haus aus nicht kommunizieren können und häufig in verschiedenen Sprachen / Frameworks geschrieben sind.

Ein solches Beispiel ist die OWIN middleware for .NETUmgebung, bevor die Eigentümer gezwungen waren, Web-Apps in einer Microsoft-Hosting-Software namens zu hosten IIS. Nachdem owin entwickelt wurde, hat es die Kapazität zum Hosten sowohl in IIS als auch in Self Host hinzugefügt. In IIS wurde nur die Unterstützung für Owin hinzugefügt, die als Schnittstelle fungierte. Auch wird es möglich host .NET web apps on Linux via Mono, was wiederum Unterstützung für Owin hinzufügte.

Es wurde auch die Fähigkeit zum Erstellen eines Single Page ApplicationsOwin-Verarbeitungs- Http/ Antwortkontexts hinzugefügt , sodass Sie zusätzlich zu authentication/authorizationowin Logik über OAuth2 hinzufügen können, z. B. Middleware so konfigurieren können, dass eine Klasse registriert wird, die Logik der Benutzerauthentifizierung enthält (z. B. OAuth2-Implementierung) oder Klasse, die Logik zum Verwalten von http-Anforderungs- / Antwortnachrichten enthält. Auf diese Weise können Sie eine Anwendung über ein anderes Datenformat (wie JSON, XML usw., wenn Sie auf das Web abzielen) mit anderen Anwendungen / Diensten kommunizieren lassen.

Daniel
quelle
3

Einige Beispiele für Middleware: CORBA, Remote Method Invocation (RMI), ...

Bei den oben genannten Beispielen handelt es sich um Software, mit der Sie die Kommunikation zwischen verschiedenen Prozessen (entweder auf demselben Computer oder über das Internet verteilt) sicherstellen können.

fstuijt
quelle
2

Aus meiner eigenen Erfahrung mit Webwork bestand eine Middleware aus Benutzern (dem Webbrowser) und der Backend-Datenbank. Es war die Software, die Dinge aufnahm, die Benutzer eingegeben hatten (Beispiel: Bestellungen für iPads, magische Geschäftslogik, dh prüfen, ob genügend iPads verfügbar sind, um die Bestellung auszuführen) und die Backend-Datenbank aktualisierte, um diese Änderungen widerzuspiegeln.

Eviljack
quelle
2

Es ist nur eine Software oder ein Tool, auf dem Ihre Anwendung ausgeführt wird, und Anwendungsfunktionen in Bezug auf Hochverfügbarkeit, Skalierbarkeit und Integration in andere Software oder Systeme, ohne dass Sie sich um Codeänderungen auf Anwendungsebene kümmern müssen.

Beispiel: Das Betriebssystem, auf dem Ihre Anwendung ausgeführt wird, erfordert eine IP-Änderung. Sie müssen sich in Ihrem Code keine Gedanken darüber machen. Es ist der Middleware-Stack, auf dem Sie die Konfiguration einfach aktualisieren können.

Beispiel 2: Sie haben Probleme mit der Zuweisung des Laufzeitspeichers und haben das Gefühl, dass die Anwendungsnutzung zugenommen hat. Sie müssen nicht viel darüber tun, es sei denn, Sie haben einen Fehler oder einen Engpass in Ihrem Code. Dies kann leicht durch Einstellen der Middleware-Softwarekonfiguration erreicht werden welche Ihre Anwendung läuft.

Beispiel 3: Sie haben mehrere unterschiedliche Software und diese müssen miteinander kommunizieren oder Daten in einem gemeinsamen Format senden, das für alle Systeme verständlich ist. Hier bieten sich Middleware-Systeme an.

Hoffe, die bereitgestellten Informationen helfen.

Afzal Haque
quelle
2

Es ist eine Softwareschicht zwischen dem Betriebssystem und den Anwendungen auf jeder Seite eines verteilten Computersystems in einem Netzwerk. Tatsächlich verbindet es heterogene Netzwerk- und Softwaresysteme.

Maryam Sheikh
quelle
0

Ich habe es immer als die älteste Software angesehen, die ich installieren musste. Die gesamte App verwendete einen Webserver, einen Datenbankserver und einen Anwendungsserver. Der Webserver ist die Middleware zwischen den Daten und der App.

Rick
quelle
0

Wenn ich mich nicht irre, können Sie im Softwareanwendungsframework basierend auf dem Kontextmiddleware die folgenden Rollen in Betracht ziehen , die kombiniert werden können, um bestimmte Aktivitäten zwischen dem Benutzer requestund der Anwendung auszuführen response.

  • Adapter
  • Desinfektionsmittel
  • Validator
ANM Saiful Islam
quelle