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 a integração do .NET Aspire MongoDB
O mesmo padrão de antes se aplica ao MongoDB. Você deve configurar o host do aplicativo e cada projeto de consumo.
Configurar o host de aplicativo
Instale a integração de hospedagem do 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);
Como configurar os projetos de consumo
Você precisa adicionar a integração do .NET Aspire MongoDB a qualquer projeto de microsserviço que use o banco de dados. Adicione 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 Program.csAppHost, registre o driver do 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);
A integração do 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 do MongoDB
Todos os projetos em sua solução que precisam de acesso ao banco de dados do 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 do MongoDB que permite que o método consulte todos os CustomerBasket
objetos para localizar aquele com a correspondência BuyerId
.
Configurando a integração do MongoDB
Assim como as integrações de banco de dados anteriores, a integração do MongoDB dá suporte à descoberta de serviço e à injeção de dependência do .NET Aspire. Portanto, se você usar o mesmo nome de banco de dados definido em 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, você terá outras maneiras de configurá-lo.
Usando uma cadeia de conexão
No arquivo appsettings.json dos seus projetos, adicione uma string de conexão ao banco de dados do MongoDB. Por exemplo:
{
...
"ConnectionStrings": {
"MongoConnectionString": "mongodb://localhost:27017/test",
}
}
A cadeia de conexão anterior adiciona suporte para um banco de dados chamado teste em um servidor de banco de dados MongoDB local escutando na porta 27017. Você usa essa cadeia de conexão no arquivo Program.cs ao criar o cliente MongoDB:
builder.AddMongoDBClient("MongoConnectionString");
Outras opções
A etiqueta para a Microsoft.Extensions.Configuration
versão do MongoDB é Aspire:MongoDB:Driver
. Portanto, você pode se conectar a um banco de dados do 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 no código, com configurações embutidas. Por exemplo:
builder.AddMongoDBClient("mongodb", static settings =>
{
settings.ConnectionString = "mongodb://localhost:27017/test";
settings.HealthChecks = true;
});