Compartir a través de


Tutorial: Incorporación de .NET Aspire a una aplicación de .NET existente

Si tiene microservicios existentes y .NET aplicación web, puede agregarle .NET Aspire y obtener todas las características y ventajas incluidas. En este artículo, añades orquestación .NET Aspire a un proyecto .NET 9 simple y preexistente. Aprenderá a:

  • Comprenda la estructura de la aplicación de microservicios existente.
  • Inscriba proyectos existentes en la orquestación .NET.NET Aspire.
  • Comprenda los cambios que realiza la inscripción en los proyectos.
  • Inicie el proyecto de .NET.NET Aspire.

Prerrequisitos

Para trabajar con .NET.NET Aspire, necesita lo siguiente instalado localmente:

Para obtener más información, consulte configuración y herramientas de .NET.NET Aspirey sdk de .NET.NET Aspire.

Comenzar

Comencemos por obtener el código de la solución:

  1. Abra una terminal y cambie al directorio donde desea almacenar el código.

  2. Para clonar a la solución de ejemplo .NET 9, use el siguiente comando git clone:

    git clone https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative-devops.git eShopLite
    

Exploración de la aplicación de ejemplo

En este artículo se usa una solución .NET 9 con tres proyectos:

  • Entidades de datos: este proyecto es una biblioteca de clases de ejemplo. Define la clase Product usada en la aplicación web y la API web.
  • Products: esta API web de ejemplo devuelve una lista de productos del catálogo y sus propiedades.
  • Store: Este ejemplo de aplicación web Blazor muestra el catálogo de productos a los visitantes del sitio web.

Abra e inicie la depuración del proyecto para examinar su comportamiento predeterminado:

  1. Inicie Visual Studio y seleccione Archivo>Abrir>proyecto o solución.

  2. Vaya a la carpeta de nivel superior de la solución que ha clonado, seleccione eShopLite.slny, a continuación, seleccione Abrir.

  3. En el Explorador de soluciones de , haga clic con el botón derecho en la solución eShopLite y, a continuación, seleccione Configurar Proyectos de Inicio.

  4. Seleccione varios proyectos de inicio.

  5. En la columna de Acción de , seleccione Inicio para los proyectos de Productos y Tienda.

  6. Seleccione Aceptar.

  7. Para iniciar la depuración de la solución, presione F5 o seleccione Iniciar.

  8. Dos páginas abiertas en el explorador:

    • Una página muestra productos en el formato JSON a partir de una llamada a la Products Web API.
    • Una página muestra la página principal del sitio web. En el menú de la izquierda, seleccione Productos para ver el catálogo obtenido de la API web.
  9. Para detener la depuración, cierre el navegador.

  1. Inicie Visual Studio Code y abra la carpeta que ha clonado. Desde el terminal donde ha clonado el repositorio, ejecute el siguiente comando:

    code .
    
  2. Seleccione la opción del menú Ejecutar y Depurar , o presione Ctrl+Shift+D.

  3. Seleccione crear un lanzamiento.json enlace de archivo.

    Visual Studio Code: Run and Debug crea un lanzamiento.json el archivo.

  4. Copie y pegue el siguiente JSON en este archivo y guarde:

    {
        "version": "0.2.0",
        "compounds": [
            {
                "name": "Run all",
                "configurations": [
                    "Run products",
                    "Run store",
                ]
            }
        ],
        "configurations": [
            {
                "name": "Run products",
                "type": "dotnet",
                "request": "launch",
                "projectPath": "${workspaceFolder}/Products/Products.csproj"
            },
            {
                "name": "Run store",
                "type": "dotnet",
                "request": "launch",
                "projectPath": "${workspaceFolder}/Store/Store.csproj"
            }
        ]
    }
    
  5. Para iniciar la depuración de la solución, presione F5 o seleccione Iniciar.

  6. Dos páginas abiertas en el explorador:

    • Una página muestra productos en el formato JSON a partir de una llamada a la Products Web API.
    • Una página muestra la página principal del sitio web. En el menú de la izquierda, seleccione Productos para ver el catálogo obtenido de la API web.
  7. Para detener la depuración, cierre el explorador y, a continuación, seleccione el botón Detener dos veces (una para cada instancia de depuración en ejecución).


  1. Abra una ventana de terminal y cambie los directorios al repositorio recién clonado.

  2. Para iniciar la aplicación Productos, ejecute el siguiente comando:

    dotnet run --project ./Products/Products.csproj
    
  3. Se abre una página del navegador que muestra el JSON para los productos.

  4. En una ventana de terminal independiente, cambie de nuevo los directorios al repositorio clonado.

  5. Inicie la aplicación Store ejecutando el siguiente comando:

    dotnet run --project ./Store/Store.csproj
    
  6. El explorador abre una página que muestra la página principal del sitio web. En el menú de la izquierda, seleccione Productos para ver el catálogo obtenido de la API web.

  7. Para detener la depuración, cierre el explorador y presione Ctrl+C en ambos terminales.

Agregar .NET.NET Aspire a la aplicación web de la Tienda

Ahora, vamos a inscribir el proyecto Store, que implementa una interfaz de usuario web, en la orquestación de .NET.NET Aspire.

  1. En Visual Studio, en el explorador de soluciones de , haga clic con el botón derecho en el proyecto Store, seleccione Agregary, a continuación, seleccione .NET.NET Aspirede soporte técnico de Orchestrator.

  2. En el cuadro de diálogo Agregar .NET.NET Aspire compatibilidad con el orquestador, seleccione Aceptar.

    Captura de pantalla del cuadro de diálogo Agregar soporte para Orchestrator de .NET.NET Aspire.

Ahora debería tener dos proyectos nuevos, ambos agregados a la solución:

  • eShopLite.AppHost: un proyecto de orquestador diseñado para conectarse y configurar los diferentes proyectos y servicios de la aplicación. El orquestador está configurado como proyecto de inicio y depende del proyecto eShopLite.Store.
  • eShopLite.ServiceDefaults: un proyecto compartido de .NET.NET Aspire para administrar configuraciones que se reutilizan en los proyectos de la solución relacionados con la resiliencia , la detección de servicios y la telemetría .

En el proyecto eShopLite.AppHost , abra el archivo Program.cs. Observa esta línea de código, que registra el proyecto del store en la orquestación .NET.NET Aspire.

builder.AddProject<Projects.Store>("store");

Para obtener más información, consulte AddProject.

Para agregar el proyecto Products a .NET.NET Aspire:

  1. En , en el Explorador de Soluciones , haga clic con el botón derecho en el proyecto Productos , seleccione Agregar , y a continuación, seleccione Soporte de Orchestrator .

  2. Un cuadro de diálogo indica que el proyecto del Orchestrator .NET.NET Aspire ya existe, seleccione Aceptar.

    Captura de pantalla que indica que el orquestador de.NET.NET Aspire ya se agregó.

En el proyecto eShopLite.AppHost , abra el archivo Program.cs. Observe esta línea de código, que registra el proyecto Products en la orquestación de .NET.NET Aspire:

builder.AddProject<Projects.Products>("products");

Observe también que el proyecto eShopLite.AppHost ahora depende tanto del proyecto Store como del proyecto Products.

Creación de un proyecto host de aplicación

Para organizar los proyectos existentes, debe crear un nuevo proyecto de host de aplicación . Para crear un nuevo host de aplicación proyecto a partir de las plantillas de .NET Aspire disponibles, use el siguiente comando de la CLI de .NET:

dotnet new aspire-apphost -o eShopLite.AppHost

Agregue el proyecto host de la aplicación a la solución existente.

dotnet sln ./eShopLite.sln add ./eShopLite.AppHost/eShopLite.AppHost.csproj

Agregue el proyecto de Store como referencia de proyecto al proyecto de host de aplicación de mediante el siguiente comando de la CLI de :

dotnet add ./eShopLite.AppHost/eShopLite.AppHost.csproj reference ./Store/Store.csproj

Crear un proyecto de valores predeterminados de servicio

Una vez creado el proyecto host de la aplicación, debe crear un nuevo servicio predeterminado proyecto. Para crear un nuevo proyecto de configuraciones predeterminadas del servicio a partir de las plantillas disponibles .NET Aspire, use el siguiente comando de la línea de comandos de .NET:

dotnet new aspire-servicedefaults -o eShopLite.ServiceDefaults

Para agregar el proyecto a la solución, use el siguiente comando .NET CLI:

dotnet sln ./eShopLite.sln add ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj

Actualice el proyecto host de la aplicación de para agregar una referencia de proyecto al proyecto products de :

dotnet add ./eShopLite.AppHost/eShopLite.AppHost.csproj reference ./Products/Products.csproj

Los proyectos de Store y Products necesitan hacer referencia al proyecto de valores predeterminados del servicio para que puedan incluir fácilmente la detección de servicios . Para agregar una referencia al proyecto de en el servicio predeterminado en el proyecto de Store, use el siguiente comando de la CLI de :

dotnet add ./Store/Store.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj

El mismo comando con rutas de acceso ligeramente diferentes debe usarse para agregar una referencia al servicio predeterminado proyecto en el proyecto Products:

dotnet add ./Products/Products.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj

Tanto en los proyectos de Store como Products, actualice sus archivos de Program.cs y agregue la siguiente línea inmediatamente después de su línea de var builder = WebApplication.CreateBuilder(args);:

builder.AddServiceDefaults();

Actualización del proyecto host de la aplicación

Abra el archivo del proyecto host de la aplicación de y reemplace su contenido por el siguiente código de C#:

var builder = DistributedApplication.CreateBuilder(args);

builder.AddProject<Projects.Store>("store");

builder.AddProject<Projects.Products>("products");

builder.Build().Run();

El código anterior:

  • Crea una nueva instancia de DistributedApplicationBuilder.
  • Agrega el proyecto Store al orquestador.
  • Agrega el proyecto Products al orquestador.
  • Compila y ejecuta el orquestador.

Detección de servicios

En este punto, ambos proyectos forman parte de la orquestación de , pero la tienda de debe poder detectar la dirección del backend de productos a través de la detección de servicios de . Para habilitar la detección de servicios, abra el archivo de en eShopLite.AppHost y actualice el código que store de agrega una referencia al proyecto Products de :

var builder = DistributedApplication.CreateBuilder(args);

var products = builder.AddProject<Projects.Products>("products");

builder.AddProject<Projects.Store>("store")
       .WithExternalHttpEndpoints()
       .WithReference(products);

builder.Build().Run();

El código anterior expresa que el proyecto Store de depende del proyecto Products. Para obtener más información, consulte .NET.NET Aspire host de la aplicación: Recursos de referencia. Esta referencia se usa para descubrir la dirección del proyecto Products. Además, el proyecto store de está configurado para usar puntos de conexión HTTP externos. Si más adelante decide implementar esta aplicación, necesitará la llamada a WithExternalHttpEndpoints para asegurarse de que es pública para el mundo exterior.

A continuación, actualice el en el proyecto Store de con el siguiente :

{
  "DetailedErrors": true,
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ProductEndpoint": "http://products",
  "ProductEndpointHttps": "https://products"
}

Las direcciones de ambos puntos de conexión ahora usan el nombre "products" que se agregó al orquestador en el host de la aplicación . Estos nombres se usan para detectar la dirección del proyecto Products.

Explora la aplicación inscrita

Vamos a iniciar la solución y examinar el nuevo comportamiento que .NET.NET Aspire proporciona.

Nota

Observe que el eShopLite.AppHost proyecto es el nuevo proyecto de inicio.

  1. En Visual Studio, presione F5para iniciar la depuraciónVisual Studio compila los proyectos.
  2. Si aparece el cuadro de diálogo Inicio de Docker Escritorio, seleccione . Visual Studio inicia el motor de Docker y crea los contenedores necesarios. Una vez completada la implementación, se muestra el panel de control .NET.NET Aspire.
  3. En el panel de control, selecciona el punto de conexión para el proyecto de los productos . Aparece una nueva pestaña del explorador y muestra el catálogo de productos en formato JSON.
  4. En el panel, seleccione el punto de conexión del proyecto del almacén . Aparece una nueva pestaña del explorador y muestra la página principal de la aplicación web.
  5. En el menú de la izquierda, seleccione Productos. Se muestra el catálogo de productos.
  6. Para detener la depuración, cierre el navegador.

Elimine el lanzamiento de y el archivojson que creó anteriormente, ya no sirve para nada. En su lugar, inicie el proyecto de host de la aplicación, que organiza los demás proyectos:

  1. Inicie el proyecto de host de la aplicación haciendo clic derecho en el proyecto eShopLite.AppHost en el Explorador de Soluciones y seleccionando Depurar Iniciar nueva instancia>.

    Visual Studio Code: Explorador de soluciones seleccionando Depurar > Iniciar nueva instancia.

    Nota

    Si Docker Escritorio (o Podman) no se está ejecutando, experimentarás un error. Inicie el motor de contenedor compatible con OCI e inténtelo de nuevo.

  1. Inicie el proyecto del host de la aplicación ejecutando el siguiente comando:

    dotnet run --project ./eShopLite.AppHost/eShopLite.AppHost.csproj
    

    Nota

    Si Docker Escritorio (o Podman) no se está ejecutando, experimentarás un error. Inicie el motor de contenedor compatible con OCI e inténtelo de nuevo.

  1. En el panel de control, selecciona el punto de conexión para el proyecto de los productos . Aparece una nueva pestaña del explorador y muestra el catálogo de productos en formato JSON.
  2. En el panel, seleccione el punto de conexión del proyecto del almacén . Aparece una nueva pestaña del explorador y muestra la página principal de la aplicación web.
  3. En el menú de la izquierda, seleccione Productos. Se muestra el catálogo de productos.
  4. Para detener la depuración, cierre el navegador.

Enhorabuena, has añadido la orquestación .NET.NET Aspire a tu aplicación web preexistente. Ahora puede agregar integraciones de .NET Aspire y usar las herramientas de .NET Aspire para simplificar el desarrollo de aplicaciones web nativas de la nube.