Freigeben über


.NET .NET Aspire Community Toolkit Meilisearch-Integration

umfasst:Hosting-Integration und Client Integration

Anmerkung

Diese Integration ist Teil des .NET.NET Aspire Community Toolkit und unterstützt.

In diesem Artikel erfahren Sie, wie Sie die .NET.NET Aspire Meilisearch-Hostingintegration verwenden, um Meilisearch Container auszuführen und über den Meilisearch Client darauf zuzugreifen.

Hosting-Integration

Um den Meilisearch-Container auszuführen, installieren Sie das 📦 CommunityToolkit.Aspire.Hosting.Meilisearch NuGet-Paket im App-Host Projekt.

dotnet add package CommunityToolkit.Aspire.Hosting.Meilisearch

Weitere Informationen finden Sie unter dotnet add package oder Verwalten von Abhängigkeits-Paketen in .NET Anwendungen.

Meilisearch-Ressource hinzufügen

Registrieren und nutzen Sie im App-Hostprojekt die Meilisearch-Integration mithilfe der AddMeilisearch Erweiterungsmethode, um den Meilisearch-Container zum Anwendungs-Generator hinzuzufügen.

var builder = DistributedApplication.CreateBuilder(args);

var meilisearch = builder.AddMeilisearch("meilisearch");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(meilisearch);

// After adding all resources, run the app...

Wenn .NET.NET Aspire dem App-Host ein Containerimage hinzufügt, wie im vorherigen Beispiel mit dem docker.io/getmeili/meilisearch-Image gezeigt, wird eine neue Meilisearch-Instanz auf Ihrem lokalen Computer erstellt. Ein Verweis auf Ihre Meilisearch-Ressource (die meilisearch-Variable) wird zum ExampleProjecthinzugefügt. Die Ressource von Meilisearch enthält ein zufällig generiertes master key unter Verwendung der CreateDefaultPasswordParameter-Methode, wenn kein Hauptschlüssel bereitgestellt wird.

Weitere Informationen finden Sie unter Lebenszyklus der Containerressourcen.

Hinzufügen einer Meilisearch-Ressource mit Datenvolumen

Um der Meilisearch-Ressource ein Datenvolume hinzuzufügen, rufen Sie die Aspire.Hosting.MeilisearchBuilderExtensions.WithDataVolume-Methode für die Meilisearch-Ressource auf:

var builder = DistributedApplication.CreateBuilder(args);

var meilisearch = builder.AddMeilisearch("meilisearch")
                         .WithDataVolume();

builder.AddProject<Projects.ExampleProject>()
       .WithReference(meilisearch);

// After adding all resources, run the app...

Das Datenvolume wird verwendet, um die Meilisearch-Daten außerhalb des Lebenszyklus des Containers zu speichern. Das Datenvolumen wird am /meili_data Pfad im Meilisearch-Container bereitgestellt, und wenn kein name Parameter angegeben wird, wird der Name zufällig generiert. Weitere Informationen zu Datenvolumes und Details dazu, warum sie gegenüber Bind-Mountsbevorzugt werden, finden Sie in der -Docker-Dokumentation: Volumes.

Hinzufügen einer Meilisearch-Ressource mit Datenbindungs-Bereitstellung

Rufen Sie die Aspire.Hosting.MeilisearchBuilderExtensions.WithDataBindMount-Methode auf, um eine Datenbindungs-Bereitstellung zur Meilisearch-Ressource hinzuzufügen:

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

Wichtig

Daten-Bind-Mounts haben eine eingeschränkte Funktionalität im Vergleich zu Volumes, die eine bessere Leistung, Portabilität und Sicherheit bieten und somit besser für Produktionsumgebungen geeignet sind. Bind-Mounts ermöglichen jedoch direkten Zugriff und die Änderung von Dateien auf dem Hostsystem, was ideal für die Entwicklung und Tests ist, bei denen Änderungen in Echtzeit erforderlich sind.

Datenbindungs-Bereitstellungen basieren auf dem Dateisystem des Hostcomputers, um die Meilisearch-Daten über Containerneustarts hinweg beizubehalten. Die Daten-Bindungseinbindung wird auf dem C:\Meilisearch\Data-Pfad unter Windows (oder auf dem /Meilisearch/Data-Pfad unter Unix) auf dem Hostcomputer im Meilisearch-Container bereitgestellt. Weitere Informationen zu Bind-Einhängepunkten für Daten finden Sie in der Docker Dokumentation: Bind-Einhängepunkte.

Meilisearch-Ressource mit Masterschlüsselparameter hinzufügen

Wenn Sie den vom Containerimage verwendeten Hauptschlüssel explizit bereitstellen möchten, können Sie diese Anmeldeinformationen als Parameter angeben. Betrachten Sie das folgende alternative Beispiel:

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

Weitere Informationen zum Bereitstellen von Parametern finden Sie unter externe Parameter.

Client Integration

Um mit der .NET.NET Aspire Meilisearch-Client-Integration zu beginnen, installieren Sie das 📦 CommunityToolkit.Aspire.Meilisearch NuGet-Paket im Projekt, das den Client verwendet, d. h. das Projekt der Anwendung, die den Meilisearch-Client nutzt.

dotnet add package CommunityToolkit.Aspire.Meilisearch

Hinzufügen des Meilisearch-Clients

Rufen Sie in der Program.cs-Datei Ihres konsumierenden Projekts die Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddMeilisearchClient-Erweiterungsmethode an einem beliebigen IHostApplicationBuilder auf, um ein MeilisearchClient für die Verwendung über den Dependency Injection Container zu registrieren. Die Methode verwendet einen Verbindungsnamenparameter.

builder.AddMeilisearchClient(connectionName: "meilisearch");

Hinweis

Der parameter connectionName muss mit dem Namen übereinstimmen, der beim Hinzufügen der Meilisearch-Ressource im App-Hostprojekt verwendet wird. Weitere Informationen finden Sie unter Hinzufügen der Meilisearch-Ressource.

Anschließend können Sie die MeilisearchClient Instanz mithilfe der Abhängigkeitseinfügung abrufen. So rufen Sie beispielsweise die Verbindung aus einem Beispieldienst ab:

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

Hinzufügen eines Meilisearch-Clients mit einem API-Schlüssel

Es kann Situationen geben, in denen Sie mehrere MeilisearchClient Instanzen mit unterschiedlichen Verbindungsnamen registrieren möchten. Rufen Sie zum Registrieren von authentifizierten Meilisearch-Clients die Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddKeyedMeilisearchClient auf.

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

Anschließend können Sie die MeilisearchClient Instanzen mithilfe der Abhängigkeitseinfügung abrufen. So rufen Sie beispielsweise die Verbindung aus einem Beispieldienst ab:

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

Weitere Informationen zu schlüsselbasierten Diensten finden Sie unter Abhängigkeitsinjektion für schlüsselbasierte Dienste: .NET.

Konfiguration

Die .NET.NET Aspire Meilisearch-Clientintegration bietet mehrere Optionen zum Konfigurieren der Serververbindung basierend auf den Anforderungen und Konventionen Ihres Projekts.

Verwenden Sie eine Verbindungszeichenfolge

Wenn Sie eine Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings verwenden, können Sie beim Aufrufen von builder.AddMeilisearchClientden Namen der Verbindungszeichenfolge angeben:

builder.AddMeilisearchClient("meilisearch");

Anschließend wird die Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings abgerufen:

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

Verwenden von Konfigurationsanbietern

Die .NET Aspire Meilisearch Client Integration unterstützt Microsoft.Extensions.Configuration. Es lädt die CommunityToolkit.Aspire.Meilisearch.MeilisearchClientSettings aus der Konfiguration mithilfe des Aspire:Meilisearch:Client Schlüssels. Betrachten Sie das folgende Beispiel appsettings.json, das einige der Optionen konfiguriert:

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

Verwenden von Inlinedelegatn

Sie können auch den Action<MeilisearchClientSettings> configureSettings Delegat übergeben, um einige oder alle Optionen inline einzurichten, z. B. um den API-Schlüssel aus Code festzulegen:

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

Client Integrations-Gesundheitschecks

Die .NET.NET Aspire Meilisearch-Integration verwendet den konfigurierten Client, um eine IsHealthyAsyncauszuführen. Wenn das Ergebnis trueist, gilt der Gesundheitscheck als gesund, andernfalls ist er ungesund. Ebenso wird die Gesundheitsprüfung als fehlerhaft angesehen, wenn es eine Ausnahme gibt, wobei der Fehler durch den Fehler der Gesundheitsprüfung weitergegeben wird.

Siehe auch