Speichern von Daten in NoSQL-Datenbanken
Daten liegen nicht nur als gut strukturierte relationale Daten vor. Manchmal müssen Sie Daten speichern, die nicht ordentlich in eine Tabelle passen. So kann es beispielsweise sein, dass Sie ein Dokument speichern möchten, das eine Liste von Elementen enthält, die alle ein anderes Schema aufweisen. In diesem Fall ist eine NoSQL-Datenbank eine bessere Wahl als eine relationale Datenbank. Eine der beliebtesten NoSQL-Datenbanken ist MongoDB.
Verwenden der MongoDB-Komponente von .NET Aspire
Das gleiche Muster wie zuvor gilt auch für MongoDB. Sie müssen sowohl den App-Host als auch jedes zugreifende Projekt konfigurieren.
Konfigurieren des App-Hosts
Installieren Sie die MongoDB-Hostingkomponente:
dotnet add package Aspire.Hosting.MongoDB --prerelease
Fügen Sie dann in der Datei Program.cs des App-Hosts den folgenden Code hinzu, um den Container zu registrieren und eine Datenbank zu erstellen:
var mongo = builder.AddMongoDB("mongo");
var mongodb = mongo.AddDatabase("mongodb");
Geben Sie den Datenbankdienst an alle Projekte weiter, die ihn nutzen:
var northernTradersCatalogAPI = builder.AddProject<Projects.NorthernTraders_CatalogAPI>()
.WithReference(mongodb);
Konfigurieren der zugreifenden Projekte
Sie müssen die MongoDB-Komponente von .NET Aspire zu allen Microserviceprojekten hinzufügen, die die Datenbank nutzen. Fügen Sie das NuGet-Paket Aspire.MongoDB.Driver
über die .NET CLI oder den NuGet-Paket-Manager für Visual Studio dem Projekt hinzu, das Datenzugriff benötigt.
dotnet add package Aspire.MongoDB.Driver --prerelease
Registrieren Sie in der Datei Program.cs des App-Hosts den MongoDB-Treiber. Ihr Code könnte beispielsweise wie folgt aussehen:
var mongoDB = builder.AddMongoDB("mongo")
.WithMongoExpress()
.AddDatabase("BasketDB");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(mongoDB);
Die MongoDB-Komponente bietet genau wie PostgreSQL und MySQL ein Datenbankverwaltungstool namens Mongo Express. Mit dem obigen Code wird ein Container dafür hinzugefügt.
Verwenden einer MongoDB-Datenbank
Für alle Projekte in Ihrer Lösung, die Zugriff auf die MongoDB-Datenbank benötigen, muss ein MongoDB-Client hinzugefügt werden. Anschließend verwenden Sie den MongoDB-Client, um in der Datenbank Daten zu lesen und zu schreiben.
builder.AddMongoDBClient("BasketDB");
Mit der AddMongoDBClient
-Methode wird dem Projekt ein Client hinzugefügt. Sehen Sie sich den folgenden Beispielcode an, in dem sie verwendet wird:
using MongoDB.Driver;
using MongoDB.Driver.Linq;
public class MongoBasketStore
{
public async Task<CustomerBasket?> GetBasketAsync(IMongoClient mongoClient, string customerId)
{
var basketCollection = mongoClient.GetDatabase("BasketDB").GetCollection<CustomerBasket>("basketitems");
var filter = Builders<CustomerBasket>.Filter.Eq(r => r.BuyerId, customerId);
return await basketCollection.Find(filter).FirstOrDefaultAsync();
}
}
Mit dem obigen Code wird eine MongoDB-Sammlung erstellt, die es der Methode ermöglicht, alle CustomerBasket
-Objekte abzufragen, um das Objekt mit einer Übereinstimmung bei BuyerId
zu finden.
Konfigurieren der MongoDB-Komponente
Genau wie die vorherigen Datenbankkomponenten unterstützt die MongoDB-Komponente die Dienstermittlung und Dependency Injection von .NET Aspire. Wenn Sie den im AppHost
und in den Projekten definierten Datenbanknamen verwenden, müssen folglich keine Verbindungszeichenfolgen verwaltet werden. Wenn Sie aber bereits eine bestehende MongoDB-Datenbank verwenden, die nicht von .NET Aspire verwaltet wird, haben Sie andere Konfigurationsmöglichkeiten.
Verwendung einer Verbindungszeichenfolge
Fügen Sie in Ihren Projekten in der Datei appsettings.json eine Verbindungszeichenfolge für die MongoDB-Datenbank hinzu. Zum Beispiel:
{
...
"ConnectionStrings": {
"MongoConnectionString": "mongodb://localhost:27017/test",
}
}
Die vorherige Verbindungszeichenfolge fügt Unterstützung für eine Datenbank mit dem Namen test auf einem lokalen MongoDB-Datenbankserver hinzu, der auf Port 27017 lauscht. Diese Verbindungszeichenfolge verwenden Sie in der Datei Program.cs, wenn Sie den MongoDB-Client erstellen:
builder.AddMongoDBClient("MongoConnectionString");
Weitere Optionen
Das Tag für die Microsoft.Extensions.Configuration
-Version von MongoDB ist Aspire:MongoDB:Driver
. Sie können also mithilfe der folgenden JSON-Konfiguration eine Verbindung mit einer MongoDB-Datenbank herstellen:
{
"Aspire": {
"MongoDB": {
"Driver": {
"ConnectionString": "mongodb://localhost:27017/test",
"HealthChecks": true,
"HealthCheckTimeout": 10000,
"Tracing": true
},
}
}
}
Mit der vorherigen Konfiguration müssen Sie die Verbindungszeichenfolge nicht mehr hinzufügen. Verwenden Sie einfach builder.AddMongoDBClient();
.
Die letzte Option besteht darin, die Verbindung mit Inlinekonfigurationen im Code zu konfigurieren. Zum Beispiel:
builder.AddMongoDBClient("mongodb", static settings =>
{
settings.ConnectionString = "mongodb://localhost:27017/test";
settings.HealthChecks = true;
});