Udostępnij za pośrednictwem


integracja .NET.NET Aspire Community Toolkit Meilisearch

obejmuje:integrację hostingu i Client integrację

Notatka

Ta integracja jest częścią Community Toolkit i nie jest oficjalnie obsługiwana przez zespół .

Z tego artykułu dowiesz się, jak używać integracji hostingu .NET.NET Aspire Meilisearch do uruchamiania kontenera Meilisearch i uzyskiwania do niego dostępu za pośrednictwem Meilisearchclient.

Integracja hostingu

Aby uruchomić kontener Meilisearch, zainstaluj zestaw 📦 CommunityToolkit.Aspire.Hosting.Meilisearch pakiet NuGet w projekcie hosta aplikacji .

dotnet add package CommunityToolkit.Aspire.Hosting.Meilisearch

Aby uzyskać więcej informacji, zobacz dotnet add package lub Zarządzaj zależnościami pakietów w .NET aplikacjach.

Dodawanie zasobu Meilisearch

W projekcie hosta aplikacji zarejestruj i użyj integracji Meilisearch, korzystając z metody rozszerzenia AddMeilisearch, aby dodać kontener Meilisearch do budowniczego aplikacji.

var builder = DistributedApplication.CreateBuilder(args);

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

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

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

Gdy .NET.NET Aspire dodaje obraz kontenera do hosta aplikacji, jak pokazano w poprzednim przykładzie z obrazem docker.io/getmeili/meilisearch, tworzy nowe wystąpienie Meilisearch na komputerze lokalnym. Odwołanie do zasobu Meilisearch (zmiennej meilisearch) jest dodawane do ExampleProject. Zasób Meilisearch zawiera losowo wygenerowany master key przy użyciu metody CreateDefaultPasswordParameter, gdy nie podano klucza głównego.

Aby uzyskać więcej informacji, zobacz Cykl życia zasobów kontenera.

Dodawanie zasobu Meilisearch z woluminem danych

Aby dodać wolumin danych do zasobu Meilisearch, wywołaj metodę Aspire.Hosting.MeilisearchBuilderExtensions.WithDataVolume w zasobie 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...

Wolumin danych jest używany do utrwalania danych Meilisearch poza cyklem życia kontenera. Wolumin danych jest instalowany w ścieżce /meili_data w kontenerze Meilisearch, a gdy nie podano parametru name, nazwa jest generowana losowo. Aby uzyskać więcej informacji na temat woluminów oraz szczegóły dotyczące tego, dlaczego woluminy są preferowane nad montowaniem wiązań, zobacz dokumentację Docker: Woluminy.

Dodaj zasób Meilisearch z dołączeniem pasma danych

Aby dodać instalację powiązania danych do zasobu Meilisearch, wywołaj metodę 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...

Ważny

Instalacje powiązane danych mają ograniczoną funkcjonalność w porównaniu z woluminami , co zapewnia lepszą wydajność, przenośność i bezpieczeństwo, co czyni je bardziej odpowiednimi dla środowisk produkcyjnych. Jednak powiązania montowania umożliwiają bezpośredni dostęp i modyfikację plików w systemie hosta, co jest idealne do programowania i testowania, gdzie potrzebne są zmiany w czasie rzeczywistym.

Instalacje powiązania danych polegają na systemie plików maszyny hosta, aby utrwały dane Meilisearch między ponownymi uruchomieniami kontenera. Powiązanie danych jest zamontowane na C:\Meilisearch\Data na Windowsie (lub /Meilisearch/Data na Unix) na maszynie hosta w kontenerze Meilisearch. Aby uzyskać więcej informacji na temat punktów montowania danych, zobacz dokumentację Docker: Punkty montowania.

Dodaj zasób Meilisearch z parametrem klucza głównego

Jeśli chcesz wyraźnie podać klucz główny używany przez obraz kontenera, możesz podać te poświadczenia jako parametry. Rozważmy następujący przykład alternatywny:

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

Aby uzyskać więcej informacji na temat udostępniania parametrów, zobacz Parametry zewnętrzne.

integracja Client

Aby rozpocząć pracę z integracją .NET Aspire Meilisearch client, zainstaluj pakiet NuGet 📦 CommunityToolkit.Aspire.Meilisearch w projekcie korzystającym z client, czyli w projekcie aplikacji wykorzystującej clientMeilisearch.

dotnet add package CommunityToolkit.Aspire.Meilisearch

Dodaj Meilisearch client

W pliku Program.cs projektu używającego client, wywołaj metodę rozszerzenia Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddMeilisearchClient na dowolnym IHostApplicationBuilder, aby zarejestrować MeilisearchClient do użycia za pośrednictwem kontenera dependency injection. Metoda przyjmuje parametr nazwy połączenia.

builder.AddMeilisearchClient(connectionName: "meilisearch");

Wskazówka

Parametr connectionName musi być zgodny z nazwą używaną podczas dodawania zasobu Meilisearch w projekcie hosta aplikacji. Aby uzyskać więcej informacji, zobacz Dodaj zasób Meilisearch.

Następnie można pobrać wystąpienie MeilisearchClient przy użyciu wstrzykiwania zależności. Aby na przykład pobrać połączenie z przykładowej usługi:

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

Dodaj kluczowane Meilisearch client

Mogą wystąpić sytuacje, w których chcesz zarejestrować wiele wystąpień MeilisearchClient z różnymi nazwami połączeń. Aby zarejestrować klientów Meilisearch z kluczami, wywołaj Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddKeyedMeilisearchClient

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

Następnie możesz uzyskać wystąpienia MeilisearchClient, korzystając z wstrzykiwania zależności. Aby na przykład pobrać połączenie z przykładowej usługi:

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

Aby uzyskać więcej informacji na temat usług z kluczami, zobacz .NET wstrzykiwanie zależności: usługi z kluczami.

Konfiguracja

Integracja .NET Aspire Meilisearch client udostępnia wiele opcji konfigurowania połączenia server na podstawie wymagań i konwencji projektu.

Używanie parametrów połączenia

W przypadku używania parametrów połączenia z sekcji konfiguracji ConnectionStrings można podać nazwę parametrów połączenia podczas wywoływania builder.AddMeilisearchClient:

builder.AddMeilisearchClient("meilisearch");

Następnie parametry połączenia zostaną pobrane z sekcji konfiguracji ConnectionStrings:

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

Korzystanie z dostawców konfiguracji

Integracja .NET Aspire Meilisearch Client obsługuje Microsoft.Extensions.Configuration. Ładuje CommunityToolkit.Aspire.Meilisearch.MeilisearchClientSettings z konfiguracji przy użyciu klucza Aspire:Meilisearch:Client. Rozważmy poniższy przykład ustawienia aplikacji.json, który konfiguruje niektóre opcje:

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

Używanie delegatów wbudowanych

Możesz również przekazać delegata Action<MeilisearchClientSettings> configureSettings, aby skonfigurować niektóre lub wszystkie opcje bezpośrednio, na przykład w celu ustawienia klucza API z kodu.

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

Client kontroli kondycji integracji

Integracja .NET Aspire Meilisearch używa skonfigurowanego client do wykonania IsHealthyAsync. Jeśli wynik jest true, sprawdzanie kondycji jest uznawane za zdrowe, w przeciwnym razie jest niezdrowe. Podobnie, jeśli istnieje wyjątek, sprawdzanie kondycji jest uznawane za niezdrowe z powodu błędu propagowanego przez niepowodzenie sprawdzania kondycji.

Zobacz też