.NET .NET Aspire integração do Kit de Ferramentas da Comunidade Meilisearch
Inclui:Integração de Hosting e integração Client
Observação
Essa integração faz parte do .NET.NET Aspire Community Toolkit e não é oficialmente suportada pela equipe .NET.NET Aspire.
Neste artigo, você aprenderá a usar a integração de hospedagem
Integração de hospedagem
Para executar o container Meilisearch, instale o pacote NuGet 📦 CommunityToolkit.Aspire.Hosting.Meilisearch no projeto de aplicação host .
- .NET CLI
- ReferênciaDePacote
dotnet add package CommunityToolkit.Aspire.Hosting.Meilisearch
Para obter mais informações, consulte dotnet add package ou Gerir dependências de pacotes em aplicações .NET.
Adicionar recurso Meilisearch
No projeto de host do aplicativo, registre e consuma a integração 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, como mostrado no exemplo anterior com a imagem docker.io/getmeili/meilisearch
, ele cria uma nova instância do Meilisearch em sua máquina local. Uma referência ao seu recurso Meilisearch (a variável meilisearch
) é adicionada ao ExampleProject
. O recurso Meilisearch inclui um master key
gerado 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 de contêiner.
Adicionar recurso Meilisearch com volume de dados
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 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 eles são preferidos em relação a pontos de montagem vinculados , consulte a documentação em Docker: Volumes.
Adicionar recurso Meilisearch com montagem de associação de dados
Para adicionar uma montagem de ligaçã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 suportes de ligação de de dados 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 o acesso direto e a modificação de arquivos no sistema host, ideal para desenvolvimento e testes onde alterações em tempo real são necessárias.
As montagens de associação de dados dependem do sistema de arquivos da máquina host para manter os dados Meilisearch nas reinicializações do contêiner. O ponto de montagem do vínculo de dados é montado no C:\Meilisearch\Data
no caminho do Windows (ou /Meilisearch/Data
no Unix) dentro do contêiner Meilisearch na máquina host. Para obter mais informações sobre montagens de associação de dados, consulte Docker docs: Bind mounts.
Adicionar recurso Meilisearch com parâmetro de chave mestra
Quando quiser fornecer explicitamente a chave mestra usada pela imagem do contêiner, você poderá 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.
Client integração
Para começar com a integração do .NET Aspire Meilisearch client, instale o 📦 CommunityToolkit.Aspire.Meilisearch pacote NuGet no projeto que consome o client, ou seja, o projeto da aplicação que usa o Meilisearch client.
- .NET CLI
- ReferênciaDePacote
dotnet add package CommunityToolkit.Aspire.Meilisearch
Adicionar Meilisearch client
No arquivo de Program.cs do seu projeto de consumo de client, invoque o método de extensão Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddMeilisearchClient
em qualquer IHostApplicationBuilder para registar um MeilisearchClient
para uso através 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 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 client Meilisearch com chave
Pode haver situações em que você queira registrar várias instâncias de MeilisearchClient
com nomes de conexão diferentes. Para registrar clientes Meilisearch chaveados, ligue para o Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddKeyedMeilisearchClient
builder.AddKeyedMeilisearchClient(name: "products");
builder.AddKeyedMeilisearchClient(name: "orders");
Em seguida, você pode recuperar as instâncias 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 identificados por chave, consulte .NET injeção de dependência: serviços identificados por chave.
Configuração
A integração .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 uma cadeia de conexão
Ao usar uma cadeia de conexão da seção de configuração de 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 suporta Microsoft.Extensions.Configuration. Ele carrega o CommunityToolkit.Aspire.Meilisearch.MeilisearchClientSettings
da configuração 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, podes passar o delegate Action<MeilisearchClientSettings> configureSettings
para configurar algumas ou todas as opções diretamente, por exemplo, definir a chave de API a partir do código:
builder.AddMeilisearchClient(
"meilisearch",
static settings => settings.MasterKey = "123456!@#$%");
Client verificações de integridade da integração
A integração .NET Aspire Meilisearch usa o client configurado para executar um IsHealthyAsync
. Se o resultado for true
, o exame de saúde é considerado saudável, caso contrário, não é saudável. Da mesma forma, se houver uma exceção, a verificação de integridade será considerada não saudável e o erro é propagado através da falha da verificação de integridade.