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 meilisearch
viene 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à.