Armazenar dados em bancos de dados NoSQL
Os dados não assumem apenas a forma de dados relacionais bem estruturados. Às vezes, você precisa armazenar dados que não se encaixam perfeitamente em uma tabela. Por exemplo, talvez você queira armazenar um documento que contenha uma lista de itens, cada um com um esquema diferente. Nesse caso, um banco de dados NoSQL é uma escolha melhor do que um banco de dados relacional. Um dos bancos de dados NoSQL mais populares é o MongoDB.
Usando o componente .NET Aspire MongoDB
O mesmo padrão de antes se aplica ao MongoDB. Você deve configurar o host do aplicativo e cada projeto consumidor.
Configurando o host do aplicativo
Instale o componente de hospedagem MongoDB:
dotnet add package Aspire.Hosting.MongoDB --prerelease
Em seguida, no arquivo Program.cs do host do aplicativo, adicione este código para registrar o contêiner e criar um banco de dados:
var mongo = builder.AddMongoDB("mongo");
var mongodb = mongo.AddDatabase("mongodb");
Passe o serviço de banco de dados para todos os projetos que o consomem:
var northernTradersCatalogAPI = builder.AddProject<Projects.NorthernTraders_CatalogAPI>()
.WithReference(mongodb);
Configurando os projetos que consomem
Você precisa adicionar o componente .NET Aspire MongoDB a qualquer projeto de microsserviço que use o banco de dados. Você adiciona o Aspire.MongoDB.Driver
pacote NuGet ao projeto que precisa de acesso a dados, usando a CLI do .NET ou o gerenciador de pacotes NuGet do Visual Studio.
dotnet add package Aspire.MongoDB.Driver --prerelease
No arquivo AppHost Program.cs, registre o driver MongoDB. Por exemplo, seu código pode ter esta aparência:
var mongoDB = builder.AddMongoDB("mongo")
.WithMongoExpress()
.AddDatabase("BasketDB");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(mongoDB);
O componente MongoDB, como PostgeSQL e MySQL, fornece uma ferramenta de gerenciamento de banco de dados chamada Mongo Express. O código acima adiciona um contêiner para ele.
Usando um banco de dados MongoDB
Todos os projetos em sua solução que precisam de acesso ao banco de dados MongoDB devem adicionar um cliente MongoDB. Em seguida, use o cliente MongoDB para ler e gravar dados no banco de dados.
builder.AddMongoDBClient("BasketDB");
O AddMongoDBClient
método adiciona um cliente ao projeto. Veja este código de exemplo que o 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();
}
}
O código acima cria uma coleção MongoDB que permite que o método consulte todos os CustomerBasket
objetos para encontrar aquele com a correspondência BuyerId
.
Configurando o componente MongoDB
Assim como os componentes de banco de dados anteriores, o componente MongoDB suporta a descoberta de serviço e a injeção de dependência do .NET Aspire. Portanto, se você usar o mesmo nome de banco de dados definido no AppHost
e projetos, não há necessidade de gerenciar cadeias de conexão. Mas se você já estiver usando um banco de dados MongoDB existente não gerenciado pelo .NET Aspire, terá outras maneiras de configurá-lo.
Usando uma cadeia de conexão
Em seus projetos appsettings.json arquivo, adicione uma cadeia de conexão ao banco de dados MongoDB. Por exemplo:
{
...
"ConnectionStrings": {
"MongoConnectionString": "mongodb://localhost:27017/test",
}
}
A cadeia de conexão anterior adiciona suporte para um banco de dados chamado test em um servidor de banco de dados MongoDB local escutando na porta 27017. Você usa essa cadeia de conexão em seu arquivo Program.cs quando cria o cliente MongoDB:
builder.AddMongoDBClient("MongoConnectionString");
Outras opções
A tag para a Microsoft.Extensions.Configuration
versão do MongoDB é Aspire:MongoDB:Driver
. Assim, você pode se conectar a um banco de dados MongoDB usando a seguinte configuração JSON:
{
"Aspire": {
"MongoDB": {
"Driver": {
"ConnectionString": "mongodb://localhost:27017/test",
"HealthChecks": true,
"HealthCheckTimeout": 10000,
"Tracing": true
},
}
}
}
Com a configuração anterior, você não precisa mais adicionar a cadeia de conexão, basta usar builder.AddMongoDBClient();
.
A opção final é configurar a conexão em código, com configurações em linha. Por exemplo:
builder.AddMongoDBClient("mongodb", static settings =>
{
settings.ConnectionString = "mongodb://localhost:27017/test";
settings.HealthChecks = true;
});