Dela via


.NET .NET Aspire Community Toolkit Meilisearch-integrering

omfattar:Hosting-integration och Client integration

Not

Den här integreringen är en del av .NET.NET Aspire Community Toolkit och stöds inte officiellt av .NET.NET Aspire-teamet.

I den här artikeln får du lära dig hur du använder .NET.NET Aspire Meilisearch hostingintegration för att köra Meilisearch behållare och komma åt den via Meilisearchclient.

Hostingtjänstintegration

För att köra Meilisearch-containern, installera 📦 CommunityToolkit.Aspire.Hosting.Meilisearch NuGet-paketet i appvärd projektet.

dotnet add package CommunityToolkit.Aspire.Hosting.Meilisearch

För mer information, se dotnet add package eller Hantera paketberoenden i .NET applikationer.

Lägg till Meilisearch-resurs

I värdprojektet registrerar och använder du Meilisearch-integreringen med hjälp av AddMeilisearch-tilläggsmetoden för att lägga till Meilisearch-containern i applikationsbyggaren.

var builder = DistributedApplication.CreateBuilder(args);

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

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

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

När .NET.NET Aspire lägger till en containerbild till applikationsvärden, såsom visas i det föregående exemplet med docker.io/getmeili/meilisearch-bilden, skapar den en ny Meilisearch-instans på den lokala datorn. En referens till din Meilisearch-resurs (variabeln meilisearch) läggs till i ExampleProject. Meilisearch-resursen innehåller en slumpmässigt genererad master key med hjälp av metoden CreateDefaultPasswordParameter när en huvudnyckel inte angavs.

Mer information finns i Livscykel för containerresurser.

Lägg till Meilisearch-resurs med datavolym

Om du vill lägga till en datavolym i Meilisearch-resursen anropar du metoden Aspire.Hosting.MeilisearchBuilderExtensions.WithDataVolume på Meilisearch-resursen:

var builder = DistributedApplication.CreateBuilder(args);

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

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

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

Datavolymen används för att bevara Meilisearch-data utanför livscykeln för containern. Datavolymen monteras på /meili_data-sökvägen i Meilisearch-containern och när name-parameter inte anges genereras namnet slumpmässigt. Mer information om datavolymer och varför de föredras framför bindningsmonteringarfinns i Docker dokumentation: Volymer.

Lägg till Meilisearch-resurs med databindningsmontering

Om du vill lägga till en databindningsmontering till Meilisearch-resursen anropar du metoden 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...

Viktig

Data bindningsmonteringar har begränsade funktioner jämfört med volymer, vilket ger bättre prestanda, portabilitet och säkerhet, vilket gör dem mer lämpliga för produktionsmiljöer. Bindningsmonteringar tillåter dock direkt åtkomst och ändring av filer i värdsystemet, perfekt för utveckling och testning där realtidsändringar behövs.

Databindningsmonteringar förlitar sig på värddatorns filsystem för att bevara Meilisearch-data mellan omstarter av containrar. Databindningsmonteringen monteras på sökvägen C:\Meilisearch\Data i Windows (eller /Meilisearch/Data på Unix) på värddatorn i Meilisearch-containern. Mer information om databindningsfästen hittar du i Docker dokument: Bind fästen.

Lägg till Meilisearch-resurs med huvudnyckelparametern

När du uttryckligen vill ange huvudnyckeln som används av containeravbildningen kan du ange dessa autentiseringsuppgifter som parametrar. Tänk dig följande alternativa exempel:

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

Mer information om hur du tillhandahåller parametrar finns i Externa parametrar.

Client integrering

Om du vill komma igång med .NET Aspire Meilisearch client integration installerar du 📦 CommunityToolkit.Aspire. Meilisearch NuGet-paketet i det client-konsumerande projektet, det vill säga projektet för programmet som använder Meilisearch-client.

dotnet add package CommunityToolkit.Aspire.Meilisearch

Lägg till Meilisearch client

I den Program.cs-filen för ditt client-konsumerande projekt anropar du Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddMeilisearchClient-tilläggsmetoden för varje IHostApplicationBuilder för att registrera en MeilisearchClient för användning via dependency injection-containern. Metoden tar en parameter för anslutningsnamn.

builder.AddMeilisearchClient(connectionName: "meilisearch");

Tips

Parametern connectionName måste matcha namnet som används när du lägger till Meilisearch-resursen i appvärdprojektet. För mer information, se Lägg till Meilisearch-resurs.

Du kan sedan hämta MeilisearchClient-instansen med hjälp av dependency injection. Om du till exempel vill hämta anslutningen från en exempeltjänst:

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

Lägg till nycklade Meilisearch client

Det kan finnas situationer där du vill registrera flera MeilisearchClient instanser med olika anslutningsnamn. Om du vill registrera nyckelade Meilisearch-klienter anropar du Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddKeyedMeilisearchClient

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

Sedan kan du hämta MeilisearchClient-instanser med hjälp av beroendeinjektion. Om du till exempel vill hämta anslutningen från en exempeltjänst:

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

Mer information om nyckelade tjänster finns i .NET beroendeinjektion: Nyckelade tjänster.

Konfiguration

Integreringen .NET Aspire Meilisearch client innehåller flera alternativ för att konfigurera server-anslutningen baserat på kraven och konventionerna i ditt projekt.

Använda en anslutningssträng

När du använder en anslutningssträng från ConnectionStrings konfigurationsavsnittet kan du ange namnet på anslutningssträngen när du anropar builder.AddMeilisearchClient:

builder.AddMeilisearchClient("meilisearch");

Sedan hämtas anslutningssträngen från ConnectionStrings-konfigurationsavsnittet:

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

Använda konfigurationsprovidrar

Integrationen .NET Aspire Meilisearch Client stöder Microsoft.Extensions.Configuration. Den läser in CommunityToolkit.Aspire.Meilisearch.MeilisearchClientSettings från konfigurationen med hjälp av nyckeln Aspire:Meilisearch:Client. Tänk på följande exempel apparinställningar.json som konfigurerar några av alternativen:

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

Använd inline-delegater

Du kan också skicka delegeringen Action<MeilisearchClientSettings> configureSettings för att konfigurera vissa eller alla alternativ direkt, till exempel för att ange API-nyckeln från kod:

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

Client hälsokontroller för integrering

.NET Aspire Meilisearch-integrationen använder den konfigurerade client för att genomföra en IsHealthyAsync. Om resultatet är trueanses hälsokontrollen vara hälsosam, annars är den ohälsosam. På samma sätt, om det finns ett undantag, anses hälsokontrollen vara ohälsosam och felet sprids genom hälsokontrollens misslyckande.

Se även