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 .NET Aspire unterstützt.

In diesem Artikel erfahren Sie, wie Sie die .NET.NET Aspire Meilisearch-Hostingintegration verwenden, um den Meilisearch Container auszuführen und über die Meilisearch-clientdarauf 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 Aspire Meilisearch client Integration zu beginnen, installieren Sie das 📦 CommunityToolkit.Aspire. Meilisearch NuGet-Paket im client-verbrauchenden Projekt, d. h. das Projekt für die Anwendung, die die Meilisearch clientverwendet.

dotnet add package CommunityToolkit.Aspire.Meilisearch

Meilisearch-client hinzufügen

Rufen Sie in der Program.cs-Datei Ihres Projekts, das clientnutzt, die Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddMeilisearchClient-Erweiterungsmethode auf jedem IHostApplicationBuilder auf, um ein MeilisearchClient zur 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...
}

Füge den Schlüssel zu Meilisearch client hinzu

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 Aspire Meilisearch client Integration bietet mehrere Optionen, um die server Verbindung basierend auf den Anforderungen und Konventionen Ihres Projekts zu konfigurieren.

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. Sehen Sie sich das folgende Beispiel appsettings an.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 Aspire Meilisearch-Integration verwendet das konfigurierte client, um ein 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