Almacenamiento de datos en bases de datos NoSQL
Los datos no solo tienen la forma de datos relacionales bien estructurados. A veces, debe almacenar datos que no se ajusten perfectamente a una tabla. Por ejemplo, puede que desee almacenar un documento que contenga una lista de elementos, cada uno con un esquema diferente. En este caso, una base de datos NoSQL es una mejor opción que una base de datos relacional. Una de las bases de datos NoSQL más populares es MongoDB.
Uso del componente MongoDB de .NET Aspire
El mismo patrón que antes se aplica a MongoDB. Debe configurar tanto el host de la aplicación como cada proyecto que consuma.
Configuración del host de la aplicación
Instale el componente de hospedaje de MongoDB:
dotnet add package Aspire.Hosting.MongoDB --prerelease
A continuación, en el archivo Program.cs del host de la aplicación, agregue este código para registrar el contenedor y crear una base de datos:
var mongo = builder.AddMongoDB("mongo");
var mongodb = mongo.AddDatabase("mongodb");
Pase la referencia al servicio de base de datos a los proyectos que lo consuman:
var northernTradersCatalogAPI = builder.AddProject<Projects.NorthernTraders_CatalogAPI>()
.WithReference(mongodb);
Configuración de los proyectos de consumo
Debe agregar el componente .NET Aspire MongoDB a cualquier proyecto de microservicio que use la base de datos. Agregue el paquete NuGet de Aspire.MongoDB.Driver
al proyecto que necesita acceso a los datos mediante la CLI de .NET o el administrador de paquetes NuGet de Visual Studio.
dotnet add package Aspire.MongoDB.Driver --prerelease
En el archivo Program.cs de AppHost, registre el controlador de MongoDB. Por ejemplo, el código podría tener el aspecto siguiente:
var mongoDB = builder.AddMongoDB("mongo")
.WithMongoExpress()
.AddDatabase("BasketDB");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(mongoDB);
El componente MongoDB, como PostgeSQL y MySQL, proporciona una herramienta de administración de bases de datos denominada Mongo Express. El código anterior le agrega un contenedor.
Usar una base de datos de MongoDB
Todos los proyectos de la solución que necesitan acceso a la base de datos de MongoDB deben agregar un cliente de MongoDB. Después, use el cliente de MongoDB para leer y escribir datos en la base de datos.
builder.AddMongoDBClient("BasketDB");
El método AddMongoDBClient
agrega un cliente al proyecto. Vea este código de ejemplo que lo usa:
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();
}
}
El código anterior crea una colección de MongoDB que permite que el método consulte todos los objetos CustomerBasket
para encontrar el objeto que coincida con BuyerId
.
Configuración del componente de MongoDB
Al igual que los componentes de base de datos anteriores, el componente de MongoDB admite la detección de servicios y la inserción de dependencias de .NET Aspire. Por lo tanto, si usa el mismo nombre de base de datos definido en el AppHost
y los proyectos, no es necesario administrar cadenas de conexión. Pero si ya usa una base de datos de MongoDB existente no administrada por .NET Aspire, tiene otras maneras de configurarla.
Utilizando una cadena de conexión
En el archivo appsettings.json de los proyectos, agregue una cadena de conexión a la base de datos de MongoDB. Por ejemplo:
{
...
"ConnectionStrings": {
"MongoConnectionString": "mongodb://localhost:27017/test",
}
}
La cadena de conexión anterior agrega compatibilidad con una base de datos denominada prueba en un servidor de bases de datos de MongoDB local que escucha en el puerto 27017. Esta cadena de conexión se usa en el archivo Program.cs cuando se crea el cliente de MongoDB:
builder.AddMongoDBClient("MongoConnectionString");
Otras opciones
La etiqueta de la versión Microsoft.Extensions.Configuration
de MongoDB es Aspire:MongoDB:Driver
. Por lo tanto, puede conectarse a una base de datos de MongoDB mediante la siguiente configuración JSON:
{
"Aspire": {
"MongoDB": {
"Driver": {
"ConnectionString": "mongodb://localhost:27017/test",
"HealthChecks": true,
"HealthCheckTimeout": 10000,
"Tracing": true
},
}
}
}
Con la configuración anterior, ya no es necesario agregar la cadena de conexión, simplemente use builder.AddMongoDBClient();
.
La opción final es configurar la conexión en el código, con configuraciones insertadas. Por ejemplo:
builder.AddMongoDBClient("mongodb", static settings =>
{
settings.ConnectionString = "mongodb://localhost:27017/test";
settings.HealthChecks = true;
});