.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 ExampleProject
hinzugefü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.AddMeilisearchClient
den 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 IsHealthyAsync
auszuführen. Wenn das Ergebnis true
ist, 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.