Erfahren Sie mehr über .NET Aspire-Komponenten

Abgeschlossen

Obwohl jeder Microservice in Ihrer App wahrscheinlich einzigartig ist, weisen sie häufig ähnliche Anforderungen für die Sicherung von Diensten wie Datenbanken und Caches auf. Es kann eine Herausforderung sein, in jedem Microservice Code zu schreiben, der eine Schnittstelle zu diesen unterstützenden Diensten bildet. In .NET Aspire wird dieser Code reduziert, da Sie stattdessen eine .NET Aspire-Komponente hinzufügen. Es gibt integrierte Komponenten für viele gängige Anforderungen, die Sie wahrscheinlich in Microservices benötigen werden.

Stellen Sie sich vor, Sie arbeiten für ein Unternehmen für Outdoor-Bekleidung und -Ausrüstung. Ihre Entwicklungsteams haben damit begonnen, ihre Microservices für die neue eShop Web-App zu entwerfen. Jeder Microservice benötigt möglicherweise Dienste wie Datenbanken, Messagingdienste und Caches. Sie möchten prüfen, wie .NET Aspire bei der Interaktion mit diesen Diensten helfen kann.

In dieser Lerneinheit lernen Sie die Komponenten kennen, die in .NET Aspire standardmäßig enthalten sind, und erfahren, wie Sie die beste Komponente für Ihren Microservice auswählen.

Verwenden von .NET Aspire-Komponenten

Jede .NET Aspire-Komponente ist ein NuGet-Paket, das Sie mit dem NuGet-Paket-Manager zu Ihrem Projekt hinzufügen können. In Visual Studio gibt es ein neues Menüelement: Hinzufügen .NET Aspire-Komponente>. Diese Aktion zeigt den Paket-Manager mit einem Filter an, der nur .NET Aspire-Komponenten anzeigt:

Screenshot des NuGet-Paket-Managers in Visual Studio mit .NET Aspire-Komponenten.

Hinweis

Sie erfahren, wie Sie diese Komponententools in der Übung später in diesem Modul verwenden können.

Visual Studio Code mit der C# Dev Kit-Erweiterung unterstützt auch das Hinzufügen von .NET Aspire-Komponenten.

Screenshot: Befehlspalette von Visual Studio Code mit einer Liste der .NET Aspire-Projekttypen

Alternativ kann die .NET CLI .NET-Komponenten hinzufügen. Zum Beispiel:

dotnet add package Aspire.StackExchange.Redis --prerelease

Im Projekt AppHost müssen Sie die Komponente registrieren und in den Projekten nutzen, die sie aufrufen:

var cache = builder.AddRedis("cache");

builder.AddProject<Projects.AspireSample_Web>("webfrontend")
    .WithReference(cache);

Anschließend können Sie die Abhängigkeitsinjektion verwenden, um sie dem verbrauchenden Projekt hinzuzufügen:

build.AddRedisClient("cache");

Der sonstige Verwendungscode variiert je nach der von Ihnen verwendeten Komponente.

Hinweis

Jeder .NET Aspire-Komponententyp verfügt in der Regel über ein entsprechendes Hostingpaket. Hosting-Pakete konfigurieren die Ressourcen und Abhängigkeiten, die die App benötigt, und Sie installieren sie im Projekt AppHost, nicht im konsumierenden Projekt.

Datenbankkomponenten

In cloudnativen Apps ist jeder Microservice für das Speichern eigener Daten verantwortlich und benötigt möglicherweise eine Datenbank mit strukturierten oder halbstrukturierten Daten, die gelesen und geschrieben werden können. Da jeder Microservice unabhängig entwickelt wird, kann es vorkommen, dass mehrere verschiedene Datenbanksysteme von verschiedenen Teilen Ihrer gesamten Anwendung verwendet werden.

.NET Aspire enthält Komponenten für die folgenden relationalen Datenbankserver:

  • PostgreSQL: Ein beliebter Open-Source-Datenbankserver mit einer Implementierung der Structured Query Language (SQL).
  • MySQL: Ein weiterer Open-Source-SQL-Datenbankserver.
  • SQL-Datenbank: Das SQL-Datenbanksystem von Microsoft.

Hinweis

Die Komponente .NET Aspire SQL-Datenbank kann mit Microsoft SQL Server oder Azure SQL-Datenbank arbeiten, einer Implementierung von SQL Server in der Azure-Cloud. Ebenso umfasst Azure Platform-as-a-Service (PaaS)-Implementierungen von PostgreSQL und MySQL. Der Standort, an dem Sie eine Datenbank betreiben, ist eine Entscheidung für jedes Microservice-Architekturteam, aber .NET Aspire-Komponenten können viele Cloud-Standorte unterstützen und erzwingen keinen bestimmten Hostingdienst.

Wenn Sie mit halbstrukturierten Daten arbeiten möchten, bietet .NET Aspire Unterstützung für diese NoSQL-Systeme:

  • MongoDB: Ein plattformübergreifender, dokumentenorientierter NoSQL-Datenbankserver.
  • Azure Cosmos DB: Das flexible NoSQL-Datenbanksystem von Microsoft, das in Azure gehostet wird.

Speicherkomponenten

In .NET Aspire werden die Speicherkomponenten für Microservices bereitgestellt, die Dateien, Daten oder Nachrichten in Azure Storage-Konten speichern müssen. Es gibt eine Komponente für jeden der drei Dienste in Azure Storage. Wählen Sie Ihre Komponente je nachdem, was Sie mit Azure Storage tun möchten:

  • Azure Blob Storage: Verwenden Sie diesen Dienst zum Speichern und Abrufen von Blob-Dateien, wie z. B. Bilder und Videos.
  • Azure Table Storage: Verwenden Sie diesen Dienst, um Zeilen in halbstrukturierten Datentabellen zu speichern und abzurufen.
  • Azure Queue Storage: Verwenden Sie diesen Dienst, um Nachrichten in Warteschlangen zur Verteilung an andere abonnierte Microservices hinzuzufügen.

Messagingkomponenten

Eine Möglichkeit, die Zuverlässigkeit und Flexibilität der Kommunikation zwischen Microservices in einer cloudnativen App zu verbessern, ist die Verwendung von Messaging-Lösungen, die Warteschlangen, Themen und Abonnements anstelle einer direkten Kommunikation bereitstellen. .NET Aspire enthält Komponenten für die folgenden drei Messaging-Dienste. Wählen Sie die Komponente auf der Grundlage des Messaging Brokers, den Ihre Entwicklerin oder Ihr Entwickler verwenden möchte:

  • RabbitMQ: Dieser Message Broker ist weit verbreitet, Open-Source und unterstützt mehrere Messaging-Protokolle, um Warteschlangen, Themen und Abonnements bereitzustellen.
  • Apache Kafka: Dieser Dienst verarbeitet Ereignisströme, die auch Nachrichten enthalten können, und umfasst die Kafka Connect API zum Importieren und Exportieren von Daten in und aus anderen Systemen.
  • Azure Service Bus: Dieser Message Broker wird in Azure gehostet und bietet Warteschlangen und abonnementbasierte Nachrichtenverteilung.

Zwischenspeichern von Komponenten

Wenn ein Microservice eine Anforderung von einer Benutzerin oder einem Benutzer oder einem anderen Microservice erhält, muss er unter Umständen eine Antwort aus Daten von mehreren Stellen oder komplexen Vorgängen zusammenstellen. Dieser Vorgang kann Zeit in Anspruch nehmen. Indem Sie Teile solcher Antworten zwischenspeichern, können Sie später Zeit sparen, wenn ähnliche oder identische Anforderungen eingehen. Auf diese Weise optimiert das Zwischenspeichern die Leistung.

Ein beliebter Zwischenspeicherdienst ist Redis. Es verfügt über Message Broker- und In-Memory-Datenbank-Funktionen, wird aber meist zum Zwischenspeichern von Antworten in Webanwendungen und Diensten verwendet. .NET Aspire verfügt über drei verschiedene Komponenten, die mit Redis arbeiten. Wählen Sie eine Komponente auf der Grundlage der Zwischenspeicheraufgabe, die Sie in Ihrem Microservice erfüllen möchten:

  • Redis-Komponente: Verwenden Sie diese Komponente, wenn Sie Redis als In-Memory Database verwenden möchten.
  • Redis Output Caching-Komponente: Verwenden Sie diese Komponente, wenn Sie vollständige HTTP-Antworten zwischenspeichern möchten, z. B. ganze Webseiten.
  • Redis Distributed Cache-Komponente: Verwenden Sie diese Komponente, wenn Sie einen einzelnen Zwischenspeicher für mehrere Microservices in Ihrer App erstellen möchten.

Sicherheit

In einer cloudnativen Anwendung ist die Datensicherheit häufig ein unternehmenskritisches Thema. Da Ihre Kundinnen und Kunden Ihnen möglicherweise persönliche und vertrauliche Daten anvertrauen, müssen Sie sicherstellen, dass diese verschlüsselt und gegen Abfangen oder Manipulationen geschützt sind. Digitale Signaturen und Verschlüsselung erfordern, dass Sie private Schlüssel speichern und für die Entschlüsselung abrufen. Azure Key Vault ist ein Ort, an dem Sie Schlüssel und andere Geheimnisse wie Kennwörter und Zertifikate sicher speichern können.

.NET Aspire enthält die Komponente Azure Key Vault, mit der Sie Geheimnisse im Azure Key Vault einfach speichern und abrufen können.

Weitere Informationen