Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Tipp
Dieser Inhalt ist ein Auszug aus dem eBook, Architecting Cloud Native .NET Applications for Azure, verfügbar auf .NET Docs oder als kostenlose herunterladbare PDF, die offline gelesen werden kann.
Microsoft hat in Zusammenarbeit mit führenden Communityexperten eine umfassende Cloud-native Microservices-Referenzanwendung, eShopOnContainers, erstellt. Diese Anwendung wurde entwickelt, um die Verwendung von .NET und Docker, sowie optional Azure, Kubernetes und Visual Studio zu demonstrieren, um einen Online-Shop zu erstellen.
Abbildung 2-1. Screenshot der eShopOnContainers-Beispiel-App.
Bevor Sie mit diesem Kapitel beginnen, empfehlen wir, die Referenzanwendung "eShopOnContainers" herunterzuladen. Wenn Sie dies tun, sollte es für Sie einfacher sein, den Informationen zu folgen, die präsentiert werden.
Eigenschaften und Anforderungen
Beginnen wir mit einer Überprüfung der Features und Anforderungen der Anwendung. Die eShopOnContainers-Anwendung stellt einen Online-Shop dar, der verschiedene physische Produkte wie T-Shirts und Kaffeebecher verkauft. Wenn Sie zuvor etwas online gekauft haben, sollte die Nutzung des Stores relativ vertraut sein. Hier sind einige der grundlegenden Features, die der Store implementiert:
- Katalogeinträge auflisten
- Filtern von Elementen nach Typ
- Filtern von Elementen nach Marke
- Hinzufügen von Elementen zum Einkaufskorb
- Bearbeiten oder Entfernen von Elementen aus dem Korb
- Check-Out
- Registrieren eines Kontos
- Anmelden
- Abmelden
- Bestellungen überprüfen
Die Anwendung hat auch die folgenden nicht funktionalen Anforderungen:
- Es muss hoch verfügbar sein und muss automatisch skaliert werden, um einen erhöhten Datenverkehr zu erreichen (und wieder herunterskalieren, sobald der Datenverkehr abfällt).
- Sie sollte eine benutzerfreundliche Überwachung der Gesundheits- und Diagnoseprotokolle bieten, um Probleme zu beheben, die auftreten.
- Er sollte einen agilen Entwicklungsprozess unterstützen, einschließlich Unterstützung für kontinuierliche Integration und Bereitstellung (CI/CD).
- Zusätzlich zu den beiden Web-Front-Ends (traditionell und Single Page Application) muss die Anwendung auch mobile Client-Apps unterstützen, die verschiedene Arten von Betriebssystemen ausführen.
- Sie sollte plattformübergreifende Hosting- und plattformübergreifende Entwicklung unterstützen.
Abbildung 2-2. eShopOnContainers Referenz-Anwendungsentwicklungsarchitektur.
Die eShopOnContainers-Anwendung ist über Web- oder mobile Clients zugänglich, die über HTTPS auf die Anwendung zugreifen und sich entweder in die ASP.NET Core MVC-Serveranwendung oder in ein geeignetes API-Gateway richten. API-Gateways bieten mehrere Vorteile, z. B. das Decoupieren von Back-End-Diensten von einzelnen Front-End-Clients und eine bessere Sicherheit. Die Anwendung verwendet auch ein verwandtes Muster, das als Back-End-for-Frontends (BFF) bezeichnet wird, das das Erstellen separater API-Gateways für jeden Front-End-Client empfiehlt. Die Referenzarchitektur veranschaulicht das Aufteilen der API-Gateways basierend darauf, ob die Anforderung von einem Web- oder mobilen Client stammt.
Die Funktionalität der Anwendung ist in viele unterschiedliche Microservices unterteilt. Es gibt Dienste, die für die Authentifizierung und Identität verantwortlich sind, Artikel aus dem Produktkatalog auflisten, die Einkaufskörbe der Benutzer verwalten und Bestellungen aufgeben. Jeder dieser separaten Dienste verfügt über einen eigenen beständigen Speicher. Es gibt keinen einzigen primären Datenspeicher, mit dem alle Dienste interagieren. Stattdessen erfolgt die Koordination und Kommunikation zwischen den Diensten nach Bedarf und mithilfe eines Nachrichtenbus.
Jeder der verschiedenen Microservices ist je nach individuellen Anforderungen unterschiedlich konzipiert. Dieser Aspekt bedeutet, dass sich der Technologiestapel unterscheiden kann, obwohl er alle mit .NET erstellt und für die Cloud entwickelt wurde. Einfachere Dienste bieten einfachen Create-Read-Update-Delete (CRUD)-Zugriff auf die zugrunde liegenden Datenspeicher, während erweiterte Dienste Domain-Driven Entwurfsansätze und -muster verwenden, um die Geschäftskomplexität zu verwalten.
Abbildung 2-3. Verschiedene Arten von Microservices.
Übersicht über den Code
Da sie Microservices verwendet, enthält die eShopOnContainers-App einige separate Projekte und Lösungen im GitHub-Repository. Zusätzlich zu separaten Lösungen und ausführbaren Dateien sind die verschiedenen Dienste so konzipiert, dass sie innerhalb ihrer eigenen Container sowohl während der lokalen Entwicklung als auch zur Laufzeit in der Produktion ausgeführt werden. Abbildung 2-4 zeigt die vollständige Visual Studio-Projektmappe, in der die verschiedenen Projekte organisiert sind.
Abbildung 2-4. Projekte in Visual Studio-Lösung.
Der Code ist organisiert, um die verschiedenen Microservices zu unterstützen, und innerhalb jedes Microservice wird der Code in Domänenlogik, Infrastrukturbedenken und Benutzeroberflächen oder Dienstendpunkt unterteilt. In vielen Fällen können die Abhängigkeiten jedes Diensts von Azure-Diensten in der Produktion und alternative Optionen für die lokale Entwicklung erfüllt werden. Sehen wir uns an, wie die Anforderungen der Anwendung Azure-Diensten zugeordnet sind.
Grundlegendes zu Microservices
Dieses Buch konzentriert sich auf cloudeigene Anwendungen, die mit Azure-Technologie erstellt wurden. Weitere Informationen zu den bewährten Methoden von Microservices und zum Erstellen von mikroservicebasierten Anwendungen finden Sie im Begleitbuch .NET Microservices: Architecture for Containerized .NET Applications.