Integração do .NET.NET Aspire Community Toolkit Meilisearch
Inclui:integração de hospedagem e Client integração
Nota
Essa integração faz parte do .NET.NET Aspire Community Toolkit e não é oficialmente suportada pela equipe de .NET.NET Aspire.
Neste artigo, você aprenderá a usar a integração de hospedagem .NET.NET Aspire Meilisearch para executar o contêiner Meilisearch e acessá-lo por meio do Meilisearchclient.
Integração de hospedagem
Para executar o contêiner meilisearch, instale o
dotnet add package CommunityToolkit.Aspire.Hosting.Meilisearch
Para obter mais informações, consulte dotnet add package ou Gerenciar dependências de pacotes em .NET aplicativos.
Adicionar recurso meilisearch
No projeto de host do aplicativo, registre e consuma a integração do Meilisearch usando o método de extensão AddMeilisearch
para adicionar o contêiner Meilisearch ao construtor de aplicativos.
var builder = DistributedApplication.CreateBuilder(args);
var meilisearch = builder.AddMeilisearch("meilisearch");
builder.AddProject<Projects.ExampleProject>()
.WithReference(meilisearch);
// After adding all resources, run the app...
Quando .NET.NET Aspire adiciona uma imagem de contêiner ao host do aplicativo, conforme mostrado no exemplo anterior com a imagem docker.io/getmeili/meilisearch
, ele cria uma nova instância do Meilisearch em seu computador local. Uma referência ao recurso Meilisearch (a variável meilisearch
) é adicionada ao ExampleProject
. O recurso Meilisearch inclui uma master key
gerada aleatoriamente usando o método CreateDefaultPasswordParameter quando uma chave mestra não foi fornecida.
Para obter mais informações, consulte ciclo de vida do recurso contêiner.
Adicionar recurso Meilisearch com volume de informações
Para adicionar um volume de dados ao recurso Meilisearch, chame o método Aspire.Hosting.MeilisearchBuilderExtensions.WithDataVolume
no recurso Meilisearch:
var builder = DistributedApplication.CreateBuilder(args);
var meilisearch = builder.AddMeilisearch("meilisearch")
.WithDataVolume();
builder.AddProject<Projects.ExampleProject>()
.WithReference(meilisearch);
// After adding all resources, run the app...
O volume de dados é usado para persistir os dados do Meilisearch fora do ciclo de vida de seu contêiner. O volume de dados é montado no caminho /meili_data
no contêiner Meilisearch e, quando um parâmetro name
não é fornecido, o nome é gerado aleatoriamente. Para obter mais informações sobre volumes de dados e detalhes sobre por que são preferidos em vez de montagens vinculadas, consulte os documentos Docker: Volumes.
Adicionar o recurso Meilisearch com a montagem de associação de dados
Para adicionar uma montagem de associação de dados ao recurso Meilisearch, chame o método Aspire.Hosting.MeilisearchBuilderExtensions.WithDataBindMount
:
var builder = DistributedApplication.CreateBuilder(args);
var meilisearch = builder.AddMeilisearch("meilisearch")
.WithDataBindMount(
source: @"C:\Meilisearch\Data");
builder.AddProject<Projects.ExampleProject>()
.WithReference(meilisearch);
// After adding all resources, run the app...
Importante
Os de dados associam montagens têm funcionalidade limitada em comparação com volumes, que oferecem melhor desempenho, portabilidade e segurança, tornando-os mais adequados para ambientes de produção. No entanto, as montagens bind permitem acesso direto e modificação de arquivos no sistema host, sendo ideal para desenvolvimento e teste onde mudanças em tempo real são necessárias.
As montagens de associação de dados dependem do sistema de arquivos do computador host para persistir os dados do Meilisearch nas reinicializações de contêiner. A montagem da associação de dados é montada no caminho C:\Meilisearch\Data
no Windows (ou /Meilisearch/Data
no Unix) no computador host no contêiner Meilisearch. Para obter mais informações sobre montagens de bind para dados, consulte os documentos Docker: montagens de bind.
Adicionar o recurso Meilisearch com o parâmetro de chave mestre
Quando você deseja fornecer explicitamente a chave mestra usada pela imagem de contêiner, você pode fornecer essas credenciais como parâmetros. Considere o seguinte exemplo alternativo:
var builder = DistributedApplication.CreateBuilder(args);
var masterkey = builder.AddParameter("masterkey", secret: true);
var meilisearch = builder.AddMeilisearch("meilisearch", masterkey);
builder.AddProject<Projects.ExampleProject>()
.WithReference(meilisearch);
// After adding all resources, run the app...
Para obter mais informações sobre como fornecer parâmetros, consulte Parâmetros externos.
integração Client
Para começar a usar a integração do Meilisearch .NET Aspireclient, instale o pacote NuGet 📦 CommunityToolkit.AspireMeilisearch no projeto consumidor client, ou seja, o projeto do aplicativo que usa o Meilisearch client.
dotnet add package CommunityToolkit.Aspire.Meilisearch
Adicionar Meilisearch client
No arquivo Program.cs do seu projeto que consome client, chame o método de extensão Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddMeilisearchClient
em qualquer IHostApplicationBuilder para registrar um MeilisearchClient
para uso por meio do contêiner de injeção de dependência. O método usa um parâmetro de nome de conexão.
builder.AddMeilisearchClient(connectionName: "meilisearch");
Dica
O parâmetro connectionName
deve corresponder ao nome usado ao adicionar o recurso Meilisearch no projeto de host do aplicativo. Para obter mais informações, consulte Adicionar recurso Meilisearch.
Em seguida, você pode recuperar a instância de MeilisearchClient
usando a injeção de dependência. Por exemplo, para recuperar a conexão de um serviço de exemplo:
public class ExampleService(MeilisearchClient client)
{
// Use client...
}
Adicionar o meilisearch com chave client
Pode haver situações em que você deseja registrar várias instâncias de MeilisearchClient
com nomes de conexão diferentes. Para registrar clientes MeiliSearch com chave, chame o Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddKeyedMeilisearchClient
builder.AddKeyedMeilisearchClient(name: "products");
builder.AddKeyedMeilisearchClient(name: "orders");
Em seguida, você pode recuperar as instâncias de MeilisearchClient
usando a injeção de dependência. Por exemplo, para recuperar a conexão de um serviço de exemplo:
public class ExampleService(
[FromKeyedServices("products")] MeilisearchClient productsClient,
[FromKeyedServices("orders")] MeilisearchClient ordersClient)
{
// Use clients...
}
Para obter mais informações sobre serviços com chave, consulte a seção .NET sobre injeção de dependência: serviços com chave.
Configuração
A integração do .NET Aspire Meilisearch client fornece várias opções para configurar a conexão server com base nos requisitos e convenções do seu projeto.
Usar um string de conexão
Ao usar uma cadeia de conexão da seção de configuração ConnectionStrings
, você pode fornecer o nome da cadeia de conexão ao chamar builder.AddMeilisearchClient
:
builder.AddMeilisearchClient("meilisearch");
Em seguida, a cadeia de conexão será recuperada da seção de configuração ConnectionStrings
:
{
"ConnectionStrings": {
"meilisearch": "Endpoint=http://localhost:19530/;MasterKey=123456!@#$%"
}
}
Usar provedores de configuração
A integração .NET Aspire Meilisearch Client dá suporte a Microsoft.Extensions.Configuration. Ele carrega o CommunityToolkit.Aspire.Meilisearch.MeilisearchClientSettings
das configurações usando a chave Aspire:Meilisearch:Client
. Considere o exemplo a seguir appsettings.json que configura algumas das opções:
{
"Aspire": {
"Meilisearch": {
"Client": {
"Endpoint": "http://localhost:19530/",
"MasterKey": "123456!@#$%"
}
}
}
}
Usar delegados em linha
Além disso, você pode passar o delegado Action<MeilisearchClientSettings> configureSettings
para configurar algumas ou todas as opções diretamente, por exemplo, para definir a chave de API a partir do código:
builder.AddMeilisearchClient(
"meilisearch",
static settings => settings.MasterKey = "123456!@#$%");
Client verificações de saúde da integração
A integração .NET Aspire do Meilisearch usa o client configurado para realizar um IsHealthyAsync
. Se o resultado for true
, a verificação de saúde será considerada saudável, caso contrário, será considerada não saudável. Da mesma forma, se houver uma exceção, a verificação de integridade será considerada não saudável, com o erro se propagando pela falha da verificação de integridade.