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