интеграция Meilisearch с набором инструментов для сообщества .NET.NET Aspire
Включает:интеграция хостинга и Client интеграция
Заметка
Эта интеграция является частью набора средств сообщества
В этой статье вы узнаете, как использовать хостинговую интеграцию .NET.NET Aspire Meilisearch для запуска контейнера Meilisearch и доступа к нему через Meilisearchclient.
Интеграция хостинга
Чтобы запустить контейнер Meilisearch, установите
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
, проверка состояния считается работоспособной, в противном случае — неработоспособной. Аналогично, если возникает исключение, проверка работоспособности считается неуспешной, и ошибка проявляется через сбой проверки.
См. также
.NET Aspire