Compartir a través de


Integración del .NET.NET Aspire Community Toolkit con Meilisearch

Incluye:integración con alojamiento y Client integración

Nota

Esta integración forma parte del Community Toolkit y no es compatible oficialmente con el equipo de .

En este artículo, aprenderá a usar la integración de hospedaje .NET.NET Aspire Meilisearch para ejecutar contenedor de Meilisearch y acceder a él a través de Meilisearchclient.

Integración de hospedaje

Para ejecutar el contenedor Meilisearch, instale el 📦 CommunityToolkit.Aspire.Hosting.Meilisearch paquete NuGet en el proyecto host de la aplicación .

dotnet add package CommunityToolkit.Aspire.Hosting.Meilisearch

Para obtener más información, consulte dotnet add package o Administrar dependencias de paquetes en aplicaciones .NET.

Adición del recurso Meilisearch

En el proyecto host de la aplicación, registre y consuma la integración de Meilisearch mediante el método de extensión AddMeilisearch para agregar el contenedor Meilisearch al generador de aplicaciones.

var builder = DistributedApplication.CreateBuilder(args);

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

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

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

Cuando .NET.NET Aspire agrega una imagen de contenedor al host de la aplicación, como se muestra en el ejemplo anterior con la imagen docker.io/getmeili/meilisearch, crea una nueva instancia de Meilisearch en el equipo local. Se agrega una referencia al recurso Meilisearch (la variable meilisearch) al ExampleProject. El recurso Meilisearch incluye un master key generado aleatoriamente mediante el método CreateDefaultPasswordParameter cuando no se proporcionó una clave maestra.

Para obtener más información, consulte ciclo de vida de los recursos de contenedor.

Añadir un recurso Meilisearch con volumen de datos

Para agregar un volumen de datos al recurso Meilisearch, llame al método Aspire.Hosting.MeilisearchBuilderExtensions.WithDataVolume en el recurso 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...

El volumen de datos se usa para conservar los datos de Meilisearch fuera del ciclo de vida de su contenedor. El volumen de datos se monta en la ruta de acceso /meili_data en el contenedor de Meilisearch y cuando no se proporciona un parámetro name, el nombre se genera de forma aleatoria. Para obtener más información sobre los volúmenes de datos y los detalles sobre por qué se prefieren a enlazar montajes, consulte Docker documentos: Volúmenes.

Añadir un recurso Meilisearch con montaje de vinculación de datos

Para agregar un montaje de enlace de datos al recurso Meilisearch, llame al método 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...

Importante

Los montajes de enlace de datos tienen una funcionalidad limitada en comparación con los volúmenes , que ofrecen mejor rendimiento, portabilidad y seguridad, lo que los hace más adecuados para entornos de producción. Sin embargo, los montajes de enlace permiten el acceso directo y la modificación de archivos en el sistema host, lo cual es ideal para el desarrollo y las pruebas en las que se necesitan los cambios en tiempo real.

Los montajes de enlace de datos dependen del sistema de archivos del equipo host para conservar los datos de Meilisearch en los reinicios del contenedor. El montaje de enlace de datos se monta en la ruta de acceso C:\Meilisearch\Data en Windows (o /Meilisearch/Data en Unix) en el equipo host dentro del contenedor de Meilisearch. Para obtener más información sobre los montajes de enlace de datos, consulte la documentación de Docker: Montajes de enlace.

Adición del recurso Meilisearch con el parámetro de clave maestra

Si desea proporcionar explícitamente la clave maestra usada por la imagen de contenedor, puede proporcionar estas credenciales como parámetros. Considere el siguiente ejemplo alternativo:

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

Para obtener más información sobre cómo proporcionar parámetros, consulte Parámetros externos.

integración de Client

Para empezar a trabajar con la integración Meilisearch .NET Aspireclient, instale el paquete NuGet 📦 CommunityToolkit.Aspire.Meilisearch en el proyecto consumidor client, es decir, el proyecto de la aplicación que usa Meilisearch client.

dotnet add package CommunityToolkit.Aspire.Meilisearch

Agregar Meilisearch client

En el archivo Program.cs del proyecto que consume client, llame al método de extensión Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddMeilisearchClient en cualquier IHostApplicationBuilder para registrar un MeilisearchClient para su uso a través del contenedor de inserción de dependencias. El método toma un parámetro de nombre de conexión.

builder.AddMeilisearchClient(connectionName: "meilisearch");

Propina

El parámetro connectionName debe coincidir con el nombre usado al agregar el recurso Meilisearch en el proyecto host de la aplicación. Para obtener más información, consulte el recursode Meilisearch .

A continuación, puede recuperar la instancia de MeilisearchClient utilizando inyección de dependencias. Por ejemplo, para recuperar la conexión de un servicio de ejemplo:

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

Agregar Meilisearch con una clave client

Puede haber situaciones en las que quiera registrar varias instancias de MeilisearchClient con nombres de conexión diferentes. Para registrar clientes meilisearch con clave, llame al Microsoft.Extensions.Hosting.AspireMeilisearchExtensions.AddKeyedMeilisearchClient

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

A continuación, puede recuperar las instancias de MeilisearchClient mediante inyección de dependencias. Por ejemplo, para recuperar la conexión de un servicio de ejemplo:

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

Para obtener más información sobre los servicios con clave, consulte .NET Inserción de Dependencias: Servicios con Clave.

Configuración

La integración .NET Aspire Meilisearch client proporciona varias opciones para configurar la conexión server en función de los requisitos y convenciones de tu proyecto.

Uso de una cadena de conexión

Al usar una cadena de conexión de la sección de configuración de ConnectionStrings, puede proporcionar el nombre de la cadena de conexión al llamar a builder.AddMeilisearchClient:

builder.AddMeilisearchClient("meilisearch");

A continuación, la cadena de conexión se recuperará de la sección de configuración ConnectionStrings.

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

Uso de proveedores de configuración

La integración .NET Aspire Meilisearch Client admite Microsoft.Extensions.Configuration. Carga el CommunityToolkit.Aspire.Meilisearch.MeilisearchClientSettings desde la configuración mediante la clave Aspire:Meilisearch:Client. Considere el ejemplo siguiente appsettings.json que configura algunas de las opciones:

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

Usar delegados en línea

También puede pasar el delegado Action<MeilisearchClientSettings> configureSettings para configurar algunas o todas las opciones en línea, por ejemplo, para establecer la clave de API desde el código:

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

Client comprobaciones de salud de integración

La integración de .NET Aspire Meilisearch usa el client configurado para realizar una IsHealthyAsync. Si el resultado es true, la verificación de salud se considera saludable; de lo contrario, se considera no saludable. Del mismo modo, si hay una excepción, la comprobación de estado se considera no saludable, con el error propagándose a través de la falla de la comprobación de estado.

Consulte también