Stocker des données dans des bases de données NoSQL
Les données ne prennent pas simplement la forme de données relationnelles bien structurées. Parfois, vous devez stocker des données qui ne s’intègrent pas parfaitement dans une table. Par exemple, vous pouvez stocker un document qui contient une liste d’éléments, chacun avec un schéma différent. Dans ce cas, une base de données NoSQL est un meilleur choix qu’une base de données relationnelle. L’une des bases de données NoSQL les plus populaires est MongoDB.
Utilisation du composant .NET Aspire MongoDB
Le même modèle que précédemment s’applique à MongoDB. Vous devez configurer l’hôte de l’application et chaque projet consommateur.
Configuration de l’hôte d’application
Installez le composant d’hébergement MongoDB :
dotnet add package Aspire.Hosting.MongoDB --prerelease
Ensuite, dans le fichier Program.cs de l’hôte d’application, ajoutez ce code pour inscrire le conteneur et créer une base de données :
var mongo = builder.AddMongoDB("mongo");
var mongodb = mongo.AddDatabase("mongodb");
Transmettez le service de base de données à tous les projets qui l’consomment :
var northernTradersCatalogAPI = builder.AddProject<Projects.NorthernTraders_CatalogAPI>()
.WithReference(mongodb);
Configuration des projets consommateurs
Vous devez ajouter le composant .NET Aspire MongoDB à n’importe quel projet de microservice qui utilise la base de données. Vous ajoutez le package NuGet Aspire.MongoDB.Driver
au projet qui a besoin d’un accès aux données, à l’aide de l’interface CLI .NET ou du gestionnaire de package NuGet Visual Studio.
dotnet add package Aspire.MongoDB.Driver --prerelease
Dans le fichier AppHost Program.cs, inscrivez le pilote MongoDB. Par exemple, votre code peut ressembler à ceci :
var mongoDB = builder.AddMongoDB("mongo")
.WithMongoExpress()
.AddDatabase("BasketDB");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(mongoDB);
Le composant MongoDB, comme PostgeSQL et MySQL, fournit un outil de gestion de base de données appelé Mongo Express. Le code ci-dessus ajoute un conteneur pour celui-ci.
Utilisation d’une base de données MongoDB
Tous les projets de votre solution qui ont besoin d’accéder à la base de données MongoDB doivent ajouter un client MongoDB. Vous utilisez ensuite le client MongoDB pour lire et écrire des données dans la base de données.
builder.AddMongoDBClient("BasketDB");
La méthode AddMongoDBClient
ajoute un client au projet. Consultez cet exemple de code qui l’utilise :
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();
}
}
Le code ci-dessus crée une collection MongoDB qui permet à la méthode d’interroger tous les objets CustomerBasket
pour trouver celui avec la correspondance BuyerId
.
Configuration du composant MongoDB
Tout comme les composants de base de données précédents, le composant MongoDB prend en charge la découverte de service et l’injection de dépendances de .NET Aspire. Par conséquent, si vous utilisez le même nom de base de données défini dans les projets et les projets AppHost
, il n’est pas nécessaire de gérer les chaînes de connexion. Toutefois, si vous utilisez déjà une base de données MongoDB existante non gérée par .NET Aspire, vous avez d’autres façons de le configurer.
A l'aide d'une chaîne de connexion
Dans le fichier appsettings.json de vos projets, ajoutez une chaîne de connexion à la base de données MongoDB. Par exemple :
{
...
"ConnectionStrings": {
"MongoConnectionString": "mongodb://localhost:27017/test",
}
}
La chaîne de connexion précédente comprend la prise en charge d’une base de données nommée test sur un serveur de base de données MongoDB local à l’écoute sur le port 27017. Vous utilisez cette chaîne de connexion dans votre fichier Program.cs lorsque vous créez le client MongoDB :
builder.AddMongoDBClient("MongoConnectionString");
Autres options
La balise de la version Microsoft.Extensions.Configuration
de MongoDB est Aspire:MongoDB:Driver
. Vous pouvez donc vous connecter à une base de données MongoDB à l’aide de la configuration JSON suivante :
{
"Aspire": {
"MongoDB": {
"Driver": {
"ConnectionString": "mongodb://localhost:27017/test",
"HealthChecks": true,
"HealthCheckTimeout": 10000,
"Tracing": true
},
}
}
}
Avec la configuration précédente, vous n’avez plus besoin d’ajouter la chaîne de connexion, utilisez simplement builder.AddMongoDBClient();
.
La dernière option consiste à configurer la connexion dans le code, avec des configurations inline. Par exemple :
builder.AddMongoDBClient("mongodb", static settings =>
{
settings.ConnectionString = "mongodb://localhost:27017/test";
settings.HealthChecks = true;
});