• Uncategorized

Interne bewerbung Muster

Die Netzwerkleistung ist für verschiedene Clienttypen unterschiedlich. Beispielsweise ist ein Mobilfunknetz in der Regel viel langsamer und hat eine viel höhere Latenz als ein nicht-mobiles Netzwerk. Und natürlich ist jedes WAN viel langsamer als ein LAN. Dies bedeutet, dass ein systemeigener mobiler Client ein Netzwerk verwendet, das sehr unterschiedliche Leistungsmerkmale aufweist als ein LAN, das von einer serverseitigen Webanwendung verwendet wird. Die serverseitige Webanwendung kann mehrere Anforderungen an Backenddienste stellen, ohne die Benutzerfreundlichkeit zu beeinträchtigen, bei der ein mobiler Client nur wenige erstellen kann. Wenn Die API-Gatewayebene in mehrere API-Gateways aufgeteilt wird, kann dies beim Identifizieren der verschiedenen API-Gateway-Typen ein primärer Dreh- und Angelpunkt sein, wenn Ihre Anwendung über mehrere Client-Apps verfügt, sodass Sie eine andere Fassade für die Anforderungen jeder Client-App haben können. Dieser Fall ist ein Muster mit dem Namen “Backend for Frontend” (BFF), bei dem jedes API Gateway eine andere API bereitstellen kann, die auf jeden Client-App-Typ zugeschnitten ist, möglicherweise sogar basierend auf dem Client-Formfaktor, indem er einen bestimmten Adaptercode implementiert, der unter mehreren internen Microservices aufruft, wie im folgenden Bild gezeigt: Ein neues ASP.NET Core-Projekt, unabhängig davon, ob es in Visual Studio oder über die Befehlszeile erstellt wurde, beginnt als einfacher “All-in-One”-Monolith. Sie enthält das gesamte Verhalten der Anwendung, einschließlich Präsentations-, Geschäfts- und Datenzugriffslogik. Abbildung 5-1 zeigt die Dateistruktur einer Einzelprojekt-App. Um eine lose Kopplung zu gewährleisten, verfügt jeder Dienst über eine eigene Datenbank. Die Aufrechterhaltung der Datenkonsistenz zwischen Diensten ist eine Herausforderung, da zwei Phasen-Commit/verteilte Transaktionen für viele Anwendungen keine Option sind. Eine Anwendung muss stattdessen das Saga-Muster verwenden. Ein Dienst veröffentlicht ein Ereignis, wenn sich seine Daten ändern.

Andere Dienste nutzen dieses Ereignis und aktualisieren ihre Daten. Es gibt mehrere Möglichkeiten, Daten zuverlässig zu aktualisieren und Ereignisse zu veröffentlichen, einschließlich Event Sourcing und Transaction Log Tailing. Bei monolithischen Anwendungen werden die Anwendungskern-, Infrastruktur- und UI-Projekte alle als eine einzige Anwendung ausgeführt. Die Laufzeitanwendungsarchitektur sieht möglicherweise etwa in Abbildung 5-12 aus. Fordert die Aggregation an. Als Teil des Gatewaymusters können Sie mehrere Clientanforderungen (in der Regel HTTP-Anforderungen), die mehrere interne Microservices in einer einzigen Clientanforderung verwenden, aggregieren. Dieses Muster ist besonders praktisch, wenn eine Clientseite/-bildschirm Informationen von mehreren Microservices benötigt. Bei diesem Ansatz sendet die Client-App eine einzelne Anforderung an das API-Gateway, die mehrere Anforderungen an die internen Microservices sendet und dann die Ergebnisse aggregiert und alles an die Client-App zurücksendet. Der Hauptvorteil und das Ziel dieses Designmusters besteht darin, die Chatness zwischen den Client-Apps und der Back-End-API zu reduzieren, was besonders für Remote-Apps a-the-Datacenter wichtig ist, in denen die Microservices leben, wie mobile Apps oder Anfragen von SPA-Apps, die von JavaScript in Client-Remote-Browsern stammen. Für normale Web-Apps, die die Anforderungen in der Serverumgebung ausführen (z. B. eine ASP.NET Core MVC-Web-App), ist dieses Muster nicht so wichtig, da die Latenz sehr viel kleiner ist als bei Remoteclient-Apps.

Da Anwendungen immer komplexer werden, besteht eine Möglichkeit, diese Komplexität zu verwalten, darin, die Anwendung entsprechend ihren Verantwortlichkeiten oder Anliegen aufzuteilen. Dies folgt der Trennung von Anliegen Prinzip und kann dazu beitragen, eine wachsende Codebasis organisiert zu halten, so dass Entwickler leicht finden können, wo bestimmte Funktionen implementiert ist. Layered Architecture bietet jedoch eine Reihe von Vorteilen, die über die reine Codeorganisation hinausgehen. Die API mehrerer Microservices ist möglicherweise nicht gut für die Anforderungen verschiedener Clientanwendungen ausgelegt.

You may also like...