Partilhar via


.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 Meilisearch para executar contêiner Meilisearch e acessá-lo através doMeilisearch.

Integração de hospedagem

Para executar o container Meilisearch, instale o pacote NuGet 📦 CommunityToolkit.Aspire.Hosting.Meilisearch no projeto de aplicação host .

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.

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.

Ver também