Compartilhar via


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 CommunityToolkit.. Hosting.Meilisearch pacote NuGet no do host do aplicativo projeto.

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.

Consulte também