Freigeben über


Einführung der eShopOnContainers-Referenz-App

Tipp

Diese Inhalte sind ein Auszug aus dem E-Book „Architecting Cloud Native .NET Applications for Azure“, verfügbar in der .NET-Dokumentation oder als kostenlos herunterladbare PDF-Datei, die offline gelesen werden kann.

Cloud Native .NET apps for Azure eBook cover thumbnail.

Microsoft hat in Zusammenarbeit mit führenden Communityexperten eine umfassende cloudnative Microservices-Referenzanwendung, eShopOnContainers, erstellt. Diese Anwendung wurde mithilfe von .NET und Docker sowie optional Azure, Kubernetes und Visual Studio erstellt, um einen Onlineshop zu erstellen.

eShopOnContainers Sample App Screenshot.

Abbildung 2-1. Screenshot der eShopOnContainers-Beispiel-App.

Bevor Sie mit diesem Kapitel beginnen, empfehlen wir, die eShopOnContainers-Referenzanwendung herunterzuladen. Dadurch sollte es für Sie einfacher sein, den dargestellten Informationen zu folgen.

Features und Anforderungen

Beginnen wir mit einer Überprüfung der Features und Anforderungen der Anwendung. Die eShopOnContainers-Anwendung stellt einen Onlineshop dar, der verschiedene physische Produkte wie T-Shirts und Kaffeebecher verkauft. Wenn Sie schon einmal online eingekauft haben, sollte Ihnen die Verwendung des Shops relativ vertraut sein. Hier sind einige der grundlegenden Features, die der Shop implementiert:

  • Auflisten von Katalogelementen
  • Elemente nach Typ filtern
  • Elemente nach Marke filtern
  • Elemente in den Warenkorb legen
  • Elemente bearbeiten oder aus dem Warenkorb entfernen
  • Auschecken
  • Registrieren eines Kontos
  • Anmelden
  • Abmelden
  • Bestellungen überprüfen

Die Anwendung hat auch die folgenden nicht funktionalen Anforderungen:

  • Sie muss Hochverfügbarkeit bieten und automatisch skaliert werden, um dem zunehmenden Datenverkehr gerecht zu werden (und wieder herunterskaliert werden, wenn der Datenverkehr zurückgeht).
  • Sie sollte eine benutzerfreundliche Überwachung ihrer Integritäts- und Diagnoseprotokolle ermöglichen, um Probleme zu beheben, die auftreten könnten.
  • Sie sollte einen agilen Entwicklungsprozess unterstützen, einschließlich Unterstützung für Continuous Integration und Continuous Deployment (CI/CD).
  • Zusätzlich zu den beiden Web-Front-Ends (herkömmlich und Single-Page-Webanwendung) muss die Anwendung auch mobile Client-Apps unterstützen, die verschiedene Arten von Betriebssystemen ausführen.
  • Sie sollte das plattformübergreifende Hosting und die plattformübergreifende Entwicklung unterstützen.

eShopOnContainers reference application development architecture.

Abbildung 2-2: Entwicklungsarchitektur der eShopOnContainers-Referenzanwendung.

Auf die eShopOnContainers-Anwendung kann über Web- oder mobile Clients zugegriffen werden, die auf die Anwendung über HTTPS zugreifen und dabei entweder auf die ASP.NET Core MVC-Serveranwendung oder ein entsprechendes API-Gateway ausgerichtet sind. API-Gateways bieten mehrere Vorteile, z. B. die Entkopplung von Back-End-Diensten von einzelnen Front-End-Clients und eine höhere Sicherheit. Die Anwendung verwendet auch ein verwandtes Muster, das als Back-End-for-Front-Ends (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 Warenkörbe der Benutzer verwalten und Bestellungen aufgeben. Jeder dieser separaten Dienste verfügt über einen eigenen beständigen Speicher. Es gibt keinen einzelnen primären Datenspeicher, mit dem alle Dienste interagieren. Stattdessen erfolgt die Koordination und Kommunikation zwischen den Diensten je nach Bedarf und mithilfe eines Nachrichtenbusses.

Jeder der verschiedenen Microservices ist basierend auf seinen individuellen Anforderungen anders konzipiert. Dieser Aspekt bedeutet, dass sich ihre Technologiestapel unterscheiden können, obwohl sie alle mithilfe von .NET erstellt und für die Cloud entworfen wurden. Einfachere Dienste bieten einfachen CRUD-Zugriff (Create-Read-Update-Delete) auf die zugrunde liegenden Datenspeicher, während fortschrittlichere Dienste domänengesteuerte Entwurfsansätze und -muster verwenden, um die geschäftliche Komplexität zu verwalten.

Different kinds of microservices

Abbildung 2-3: Verschiedene Arten von Microservices.

Übersicht über den Code

Da Microservices verwendet werden, umfasst die eShopOnContainers-App eine ganze Reihe separater Projekte und Lösungen in ihrem GitHub-Repository. Zusätzlich zu den separaten Lösungen und ausführbaren Dateien sind die verschiedenen Dienste so konzipiert, dass sie in ihren eigenen Containern ausgeführt werden, sowohl während der lokalen Entwicklung als auch zur Laufzeit in der Produktionsumgebung. Abbildung 2-4 zeigt die vollständige Visual Studio-Projektmappe, in der die verschiedenen Projekte organisiert sind.

Projects in Visual Studio solution.

Abbildung 2-4. Projekte in Visual Studio-Projektmappe.

Der Code ist so organisiert, dass er die verschiedenen Microservices unterstützt, und innerhalb jedes Microservices ist der Code in Domänenlogik, Infrastrukturbelange und Benutzerschnittstelle oder Dienstendpunkt unterteilt. In vielen Fällen können die Abhängigkeiten der einzelnen Dienste durch Azure-Dienste in der Produktion und alternative Optionen für die lokale Entwicklung erfüllt werden. Schauen wir uns an, wie die Anforderungen der Anwendung den Azure-Diensten entsprechen.

Grundlegendes zu Microservices

Dieses Buch konzentriert sich auf cloudnative Anwendungen, die mithilfe der Azure-Technologie erstellt werden. Weitere Informationen über bewährte Methoden für Microservices und die Architektur von Microservice-basierten Anwendungen finden Sie in dem Begleitbuch .NET-Microservices: .NET-Microservices-Architektur für .NET-Containeranwendungen.