Поделиться через


интеграция Meilisearch с набором инструментов для сообщества .NET.NET Aspire

Включает:интеграция хостинга и Client интеграция

Заметка

Эта интеграция является частью набора средств сообщества и официально не поддерживается командой .

В этой статье вы узнаете, как использовать хостинговую интеграцию .NET.NET Aspire Meilisearch для запуска контейнера Meilisearch и доступа к нему через Meilisearchclient.

Интеграция хостинга

Чтобы запустить контейнер Meilisearch, установите CommunityToolkit.. Host.Meilisearch пакет NuGet в проекте узла приложения .

dotnet add package CommunityToolkit.Aspire.Hosting.Meilisearch

Дополнительные сведения см. в статье dotnet add package или Управление зависимостями пакетов в .NET приложениях.

Добавление ресурса Meilisearch

В проекте хоста приложения зарегистрируйте и используйте интеграцию Meilisearch с помощью метода расширения AddMeilisearch для добавления контейнера Meilisearch в конструктор приложений.

var builder = DistributedApplication.CreateBuilder(args);

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

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

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

Когда .NET.NET Aspire добавляет контейнерный образ в хост приложения, как показано в предыдущем примере с образом docker.io/getmeili/meilisearch, он создает новый экземпляр Meilisearch на локальном компьютере. Ссылка на ресурс Meilisearch (переменная meilisearch) добавляется в ExampleProject. Ресурс Meilisearch включает случайно сгенерированный master key, создаваемый с помощью метода CreateDefaultPasswordParameter, если главный ключ не был предоставлен.

Для получения дополнительной информации см. жизненный цикл ресурса контейнера.

Добавить ресурс Meilisearch с объёмом данных

Чтобы добавить том данных в ресурс Meilisearch, вызовите метод Aspire.Hosting.MeilisearchBuilderExtensions.WithDataVolume в ресурсе 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...

Том данных используется для сохранения данных Meilisearch за пределами жизненного цикла контейнера. Том данных монтируется на пути /meili_data в контейнере Meilisearch, и если параметр name не указан, то создание имени происходит случайным образом. Дополнительные сведения о томах данных и причины их предпочтения перед привязкамиможно найти в Docker документации по томам.

Добавление ресурса Meilisearch с подключением привязки данных

Чтобы добавить подключение привязки данных к ресурсу Meilisearch, вызовите метод 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...

Важный

Подключения привязки данных имеют ограниченные функциональные возможности по сравнению с томами, которые обеспечивают более высокую производительность, переносимость и безопасность, что делает их более подходящими для рабочих сред. Однако монтирование с привязкой позволяет напрямую получать доступ и изменять файлы в хост-системе, что идеально подходит для разработки и тестирования, где требуются изменения в режиме реального времени.

Привязки данных зависят от файловой системы хост-машины для сохранения данных Meilisearch при перезапусках контейнера. Монтаж привязки данных монтируется в C:\Meilisearch\Data на Windows (или /Meilisearch/Data на Unix) пути на хост-компьютере в контейнере Meilisearch. Дополнительные сведения о подключениях привязки данных см. в документации по Docker: привязка подключений.

Добавьте ресурс Meilisearch с параметром мастер-ключа

Если вы хотите явно указать главный ключ, используемый образом контейнера, эти учетные данные можно указать в качестве параметров. Рассмотрим следующий альтернативный пример:

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

Дополнительные сведения о предоставлении параметров см. в разделе Внешние параметры.

интеграция Client

Чтобы приступить к работе с интеграцией .NET Aspire Meilisearch client, установите 📦 CommunityToolkit.Aspire. Meilisearch пакет NuGet в client-потребляющий проект, то есть проект для приложения, использующего clientMeilisearch.

dotnet add package CommunityToolkit.Aspire.Meilisearch

Добавить Meilisearch client

В файле Program.cs проекта, использующего client, вызовите метод расширения Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddMeilisearchClient для любого объекта типа IHostApplicationBuilder, чтобы зарегистрировать MeilisearchClient для использования через контейнер инъекции зависимостей. Метод принимает параметр имени подключения.

builder.AddMeilisearchClient(connectionName: "meilisearch");

Совет

Параметр connectionName должен соответствовать имени, используемому при добавлении ресурса Meilisearch в проект узла приложения. Дополнительные сведения см. в разделе Добавление ресурса Meilisearch.

Затем можно получить экземпляр MeilisearchClient с помощью внедрения зависимостей. Например, чтобы получить подключение из службы-примера:

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

Добавить keyed Meilisearch client

Могут возникнуть ситуации, когда требуется зарегистрировать несколько экземпляров MeilisearchClient с различными именами подключений. Чтобы зарегистрировать клиентов Meilisearch с использованием ключей, вызовите функцию Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddKeyedMeilisearchClient.

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

Затем можно получить экземпляры MeilisearchClient с помощью инъекции зависимостей. Например, чтобы получить подключение из службы-примера:

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

Дополнительные сведения о ключевых службах см. в разделе .NET внедрение зависимостей: ключевые службы.

Конфигурация

Интеграция .NET Aspire Meilisearch client предоставляет несколько вариантов настройки подключения server на основе требований и соглашений проекта.

Используйте строку подключения

При использовании строки подключения из раздела конфигурации ConnectionStrings можно указать имя строки подключения при вызове builder.AddMeilisearchClient:

builder.AddMeilisearchClient("meilisearch");

Затем строка подключения будет получена из раздела конфигурации ConnectionStrings:

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

Использование поставщиков конфигураций

Интеграция .NET Aspire Meilisearch Client поддерживает Microsoft.Extensions.Configuration. Он загружает CommunityToolkit.Aspire.Meilisearch.MeilisearchClientSettings из конфигурации с помощью ключа Aspire:Meilisearch:Client. Рассмотрим следующий пример appsettings.json, который настраивает некоторые параметры:

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

Использование встроенных делегатов

Кроме того, можно передать делегат Action<MeilisearchClientSettings> configureSettings, чтобы настроить некоторые или все встроенные параметры, например задать ключ API из кода:

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

Client проверки работоспособности интеграции

Интеграция .NET Aspire Meilisearch использует настроенный client для выполнения IsHealthyAsync. Если результат true, проверка состояния считается работоспособной, в противном случае — неработоспособной. Аналогично, если возникает исключение, проверка работоспособности считается неуспешной, и ошибка проявляется через сбой проверки.

См. также