Thursday , February 22 2024
Home / Tips / Was ist Middleware?

Was ist Middleware?

Sie haben vielleicht gehört, wie Leute über „Middleware“ gesprochen haben, und haben sich gefragt, was sie bedeuten. Lassen Sie uns das breite Spektrum an Technologien und Prozessen erkunden, auf die sich dieser Begriff beziehen könnte.

DIE ZENTRALEN THESEN: 

  • Middleware erleichtert die Verbindung verschiedener Apps mithilfe organisierter Regeln. Dies trägt dazu bei, dass Apps reibungslos zusammenarbeiten.
  • Es hilft auch dabei, Änderungen in Apps schnell vorzunehmen und zu verwenden. Middleware bietet Tools, die in Ihrem Arbeitsbereich leicht zugänglich sind.
  • Middleware ist wie Bausteine, die für alle Arten der Programmierung nützlich sind, unabhängig davon, ob es sich um die fortgeschrittenere oder die einfachere Art handelt.

Middleware bedeutet viele Dinge

Middleware ist ein flexibler Begriff, der für verschiedene Menschen unterschiedliche Bedeutungen hat. Einfach ausgedrückt handelt es sich um „Programme, die zwischen anderen Programmen ausgeführt werden“. Es bezieht sich auf jede Software, die separaten Code benötigt, um ihre Eingaben abzurufen und ihre Ausgaben zu verarbeiten.

Manche Middleware ist wie eine vollständige Anwendung, die Daten von einem Formular in ein anderes ändert. Es gibt klare Regeln und Formate, denen anderer Code folgen muss. Allerdings kann Middleware auch so klein wie eine einzelne Funktion sein und eine Verbindung zu einer Reihe anderer Funktionen in einem Framework herstellen.

Wie viele Softwaretypen nutzt Middleware den Gedanken der Modularität. Das bedeutet, einen komplizierten Prozess in kleinere, einfacher zu handhabende Teile zu zerlegen.

Wie funktioniert Middleware?

Middleware ist normalerweise nur so gut wie ihre Regeln und ihr Verhalten gemäß öffentlichen Standards. Durch strenge Kommunikationsregeln können Programmierer Software schreiben, die diesen Standards entspricht und korrekt funktioniert.

Stellen Sie sich einen Webanwendungsserver als eine Art Middleware vor. Es verknüpft das, was ein Benutzer auf einer Website sieht, mit der Logik und den Daten hinter den Kulissen. Diese Verbindung erfolgt mit einer Back-End-Anwendung und einer Datenbank. Da es nicht eng mit den Systemen verbunden ist, mit denen es kommuniziert, können Sie theoretisch einen App-Server durch einen anderen kompatiblen ersetzen, ohne den App-Code zu überarbeiten oder die Datenbankstruktur zu ändern.

Middleware-Teile nutzen häufig Technologien wie JSON, REST, XML und SOAP. Diese sind gut etabliert, weit verbreitet und textbasiert, was das Ändern oder Neuanordnen von Teilen erleichtert. Ihr Textformat und die Vielfalt an Toolsets machen zudem das Debuggen einfacher und zuverlässiger.

Verschiedene Arten von Middleware

Da das Wort „Middleware“ viel abdeckt, gibt es viele Beispiele und Möglichkeiten, es zu verwenden. Einige häufige sind:

Message Broker: Diese organisieren die Kommunikation zwischen verschiedenen Prozessen.

Webanwendungsserver und Frameworks: Sie helfen bei der Erstellung und Verwaltung von Webanwendungen.

Game Engines: Diese bieten Ihnen Standardaktionen, die Sie in Spielen verwenden, ändern oder ersetzen können.

Event-Streaming-Plattformen wie Apache Kafka: Diese verarbeiten den Fluss von Ereignissen oder Daten, während er geschieht.

Verwendung von Middleware in der Softwareentwicklung

Middleware ist wirklich nützlich, insbesondere in Web-Frameworks. Diese Frameworks bieten Ihnen in der Regel eine Grundkonfiguration, die Sie je nach Bedarf ändern und ergänzen können. Normalerweise leiten sie HTTP-Anfragen in einer bestimmten Reihenfolge durch eine Reihe von Funktionen, von denen einige bereits vorhanden sind und andere hinzugefügt werden können. Am Ende geben sie eine HTTP-Antwort zurück.

Express.js ist ein Framework, das dieses Setup verwendet. Wie es funktioniert, können Sie in diesem Beispiel einer in JavaScript geschriebenen Middleware-Funktion sehen:

app.use(‘/user/:id’, (req, res, next) => {
console.log(‘Anfragetyp:’, req.method)
nächste()
})

Die Funktion ist im Extremfall einfach:

Dies bewirkt einige Dinge:

  • Dabei handelt es sich um bestimmte Webadressen, die mit „/user/“ beginnen und eine ID dahinter haben.
  • Es zeichnet auf, welche Art von Anfrage gestellt wird, z. B. GET oder POST.
  • Es verwendet eine Funktion namens „next“, um die Kette der Middleware-Funktionen aufrechtzuerhalten.

Die letzte Verwendung von „next“ ist wirklich wichtig. Es zeigt, wie flexibel dieser Middleware-Ansatz ist. Solange jede Middleware-Funktion ihre Aufgabe selbstständig erledigt, können Sie sie problemlos ändern oder austauschen.

Das PHP-Framework Laravel macht etwas ganz Ähnliches mit Middleware. Sie können sehen, dass die Klasse im Code ausdrücklich den Namen „Middleware“ trägt.

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class EnsureTokenIsValid
{
/**
* Handle an incoming request.
*/
public function handle(Request $request, Closure $next): Response
{
if ($request->input(‘token’) !== ‘my-secret-token’) {
return redirect(‘home’);
}

return $next($request);
}
}

Schauen wir uns diese Klasse noch einmal an. Seine Aufgabe ist sehr spezifisch: Es prüft, ob eine Anfrage über ein Token verfügt. Wenn es einen findet, kann es die Aktionskette stoppen. Anstatt mit der nächsten Sache fortzufahren, kann es Sie an einen anderen Ort schicken. An dieser Stelle erhalten Sie die richtige Art von Antwort, und die Klasse sollte diese Antwort als Teil ihrer Vereinbarung verwenden.

Hier ist ein weiteres Beispiel von Django, einem Web-Framework, das Python verwendet. Django nennt sein Middleware-Setup ein „Plugin“. Das ist in etwa so, wie man vielleicht von „Hooks“ oder „Callbacks“ hört. Aber eigentlich handelt es sich dabei nur um eine weitere Möglichkeit, Middleware so einzurichten, dass sie in einem strukturierten Prozess flexibel ist.

def simple_middleware(get_response):
# One-time configuration and initialization.

def middleware(request):
# Code to be executed for each request before
# the view (and later middleware) are called.

response = get_response(request)

# Code to be executed for each request/response after
# the view is called.

return response

return middleware

Anschließend können Sie mit einem einfachen Array steuern, welche Middleware in welcher Reihenfolge ausgeführt wird:

MITTELWAREN = [
„django.middleware.security.SecurityMiddleware“,
„django.contrib.sessions.middleware.SessionMiddleware“,
„django.middleware.common.CommonMiddleware“,
„django.middleware.csrf.CsrfViewMiddleware“,
„django.contrib.auth.middleware.AuthenticationMiddleware“,
„django.contrib.messages.middleware.MessageMiddleware“,
„django.middleware.clickjacking.XFrameOptionsMiddleware“,
]

In Django gibt es eine Standardfunktion namens CommonMiddleware, die für die meisten Apps wichtige Aufgaben erledigt. Es stoppt bestimmte „schlechte“ Benutzer und korrigiert das Aussehen von URLs. Normalerweise stehen wirklich wichtige Sicherheitsaspekte in der Aufgabenreihe an erster Stelle. Aber mit Django können Sie die Reihenfolge entsprechend den Anforderungen Ihrer App ändern.

Warum ist Middleware nützlich?

Middleware ist wie ein Konnektor für Apps, die nicht für die Zusammenarbeit gedacht sind. Es hilft ihnen, ihre Kräfte zu bündeln und mithilfe strenger, organisierter Regeln miteinander zu kommunizieren.

Aus diesem Grund bietet uns Middleware einige wichtige Vorteile, wie zum Beispiel:

  • Dadurch können Apps schneller entwickelt und den Benutzern schneller zur Verfügung gestellt werden.
  • Wir helfen Apps, sich effizient zu verbinden.
  • Beschleunigen Sie den Prozess, wenn Sie Änderungen vornehmen.
  • Ermöglicht einfachen Zugriff auf die Werkzeuge, die Sie für Ihre Arbeit benötigen.

Letztlich geht es bei Middleware darum, modular zu sein, was für alle Arten der Programmierung von Vorteil ist, egal ob sie wirklich komplex oder einfacher ist.

About admin

Check Also

Tipps und Anleitungen

Kamera funktioniert in Google Meet auf dem Mac nicht

Haben Sie Probleme mit der Kamera Ihres Mac in Google Meet? Google Meet ermöglicht, ähnlich …

Leave a Reply

Your email address will not be published. Required fields are marked *