Condividi tramite


Integrazione Meilisearch di .NET.NET Aspire Community Toolkit

include:integrazione dell'hosting e Client integrazione

Nota

Questa integrazione fa parte di .NET.NET Aspire Community Toolkit e non è ufficialmente supportata dal team .NET.NET Aspire.

Questo articolo illustra come utilizzare l'integrazione dell'hosting .NET.NET Aspire Meilisearch per eseguire il contenitore Meilisearch e accedervi tramite il client Meilisearch.

Integrazione dell'hosting

Per eseguire il contenitore Meilisearch, installare il pacchetto NuGet del toolkit 📦 CommunityAspire.Hosting.Meilisearch nel progetto host dell'app.

dotnet add package CommunityToolkit.Aspire.Hosting.Meilisearch

Per altre informazioni, vedere dotnet add package o Manage package dependencies in .NET applications.

Aggiungere la risorsa Meilisearch

Nel progetto host dell'app registrare e usare l'integrazione Meilisearch usando il metodo di estensione AddMeilisearch per aggiungere il contenitore Meilisearch al generatore di applicazioni.

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 aggiunge un'immagine del container all'host dell'app, come illustrato nell'esempio precedente con l'immagine docker.io/getmeili/meilisearch, crea una nuova istanza Meilisearch nel computer locale. Al meilisearchviene aggiunta una referenza alla tua risorsa Meilisearch (la variabile ExampleProject). La risorsa Meilisearch include un master key generato in modo casuale usando il metodo CreateDefaultPasswordParameter quando non è stata specificata una chiave master.

Per ulteriori informazioni, vedere ciclo di vita delle risorse del contenitore.

Aggiungi una risorsa Meilisearch con un volume di dati

Per aggiungere un volume di dati alla risorsa Meilisearch, chiamare il metodo Aspire.Hosting.MeilisearchBuilderExtensions.WithDataVolume nella risorsa 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...

Il volume di dati viene utilizzato per mantenere persistenti i dati di Meilisearch al di fuori del ciclo di vita del suo contenitore. Il volume di dati viene montato nel percorso /meili_data nel contenitore Meilisearch e quando non viene specificato un parametro name, il nome viene generato in modo casuale. Per altre informazioni sui volumi di dati e sui motivi per cui sono preferiti rispetto a associare i montaggi, vedere la documentazione Docker: Volumi.

Aggiungere una risorsa Meilisearch con il bind mount dei dati

Per aggiungere un montaggio di associazione dati alla risorsa Meilisearch, chiamare il metodo 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

I di binding dei dati hanno funzionalità limitate rispetto ai volumi , che offrono prestazioni, portabilità e sicurezza migliori, rendendole più adatte per gli ambienti di produzione. Tuttavia, i bind mount consentono l'accesso immediato e la modifica dei file sul sistema host, ideale per lo sviluppo e il testing quando sono richieste modifiche in tempo reale.

I montaggi di associazione dati si basano sul file system del computer host per rendere persistenti i dati meilisearch tra i riavvii del contenitore. Il montaggio dei dati viene effettuato nel percorso C:\Meilisearch\Data su Windows (o /Meilisearch/Data su Unix) nel contenitore Meilisearch sulla macchina host. Per altre informazioni sui montaggi di associazione dati, vedere Docker docs: Bind mounts.

Aggiungere una risorsa Meilisearch con il parametro chiave master

Quando si vuole specificare in modo esplicito la chiave master usata dall'immagine del contenitore, è possibile specificare queste credenziali come parametri. Si consideri l'esempio alternativo seguente:

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...

Per altre informazioni sulla fornitura di parametri, vedere Parametri esterni.

integrazione Client

Per iniziare a usare l'integrazione client .NET.NET Aspire Meilisearch, installare 📦 CommunityToolkit.Aspire. Meilisearch pacchetto NuGet nel progetto che usa il client, ovvero il progetto per l'applicazione che usa il client Meilisearch.

dotnet add package CommunityToolkit.Aspire.Meilisearch

Aggiungere il client Meilisearch

Nel file Program.cs del progetto che utilizza il client, chiama il metodo di estensione Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddMeilisearchClient su qualsiasi IHostApplicationBuilder per registrare un MeilisearchClient da usare tramite il contenitore per l'iniezione delle dipendenze. Il metodo accetta un parametro del nome di connessione.

builder.AddMeilisearchClient(connectionName: "meilisearch");

Consiglio

Il parametro connectionName deve corrispondere al nome usato quando si aggiunge la risorsa Meilisearch nel progetto host dell'app. Per ulteriori informazioni, vedere Aggiunta risorsa Meilisearch.

È quindi possibile recuperare l'istanza di MeilisearchClient usando l'iniezione di dipendenze. Ad esempio, per recuperare la connessione da un servizio di esempio:

public class ExampleService(MeilisearchClient client)
{
    // Use client...
}

Aggiungere il client Meilisearch con chiave

In alcuni casi potrebbe essere necessario registrare più istanze di MeilisearchClient con nomi di connessione diversi. Per registrare i client Meilisearch con chiave, chiamare il Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddKeyedMeilisearchClient

builder.AddKeyedMeilisearchClient(name: "products");
builder.AddKeyedMeilisearchClient(name: "orders");

È quindi possibile ottenere le istanze di MeilisearchClient usando la dependency injection. Ad esempio, per recuperare la connessione da un servizio di esempio:

public class ExampleService(
    [FromKeyedServices("products")] MeilisearchClient productsClient,
    [FromKeyedServices("orders")] MeilisearchClient ordersClient)
{
    // Use clients...
}

Per altre informazioni sui servizi con chiave, vedere .NET inserimento delle dipendenze: Servizi con chiave.

Configurazione

L'integrazione client .NET.NET Aspire Meilisearch offre più opzioni per configurare la connessione server in base ai requisiti e alle convenzioni del progetto.

Usare una stringa di connessione

Quando si usa una stringa di connessione dalla sezione di configurazione ConnectionStrings, è possibile specificare il nome della stringa di connessione quando si chiama builder.AddMeilisearchClient:

builder.AddMeilisearchClient("meilisearch");

La stringa di connessione verrà quindi recuperata dalla sezione di configurazione ConnectionStrings:

{
  "ConnectionStrings": {
    "meilisearch": "Endpoint=http://localhost:19530/;MasterKey=123456!@#$%"
  }
}

Usare i provider di configurazione

L'integrazione .NET Aspire Meilisearch Client supporta Microsoft.Extensions.Configuration. Carica il CommunityToolkit.Aspire.Meilisearch.MeilisearchClientSettings dalla configurazione usando la chiave Aspire:Meilisearch:Client. Si consideri l'esempio seguente appsettings.json che configura alcune delle opzioni:

{
  "Aspire": {
    "Meilisearch": {
      "Client": {
        "Endpoint": "http://localhost:19530/",
        "MasterKey": "123456!@#$%"
      }
    }
  }
}

Usare delegati inline

È anche possibile passare il delegato Action<MeilisearchClientSettings> configureSettings per configurare alcune o tutte le opzioni inline, ad esempio per impostare la chiave API dal codice:

builder.AddMeilisearchClient(
    "meilisearch",
    static settings => settings.MasterKey = "123456!@#$%");

Client verifiche di integrità dell'integrazione

L'integrazione .NET.NET Aspire Meilisearch utilizza il client configurato per eseguire un IsHealthyAsync. Se il risultato è true, il controllo dello stato di salute è considerato positivo; in caso contrario, è negativo. Analogamente, se si verifica un'eccezione, il controllo integrità viene considerato non funzionante con l'errore che si propaga attraverso il fallimento del controllo integrità.

Vedere anche