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:
- .NET 8.0 o .NET 9.0
- Un entorno de ejecución de contenedor compatible con OCI, como:
- Docker Escritorio o Podman. Para obtener más información, consulte container runtime.
- Un entorno para desarrolladores integrado (IDE) o un editor de código, como:
- Visual Studio 2022 versión 17.9 o posterior (opcional)
-
Visual Studio Code (opcional)
- C# Dev Kit: extensión (opcional)
- JetBrains Rider con .NET.NET Aspire plugin (Opcional)
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:
Abra una ventana de comandos y cambie al directorio donde desea almacenar el código.
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:
Inicie Visual Studio y seleccione Archivo>Abrir>proyecto o solución.
Vaya a la carpeta de nivel superior de la solución que ha clonado, seleccione eShopLite.slny, a continuación, seleccione Abrir.
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.
Seleccione varios proyectos de inicio.
En la columna Acción, seleccione Inicio para los proyectos Productos y Tienda.
Seleccione Aceptar.
Para iniciar la depuración de la solución, presione F5 o seleccione Iniciar.
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.
Para detener la depuración, cierre el navegador.
Inicie Visual Studio Code y abra la carpeta que ha clonado. Desde el terminal donde ha clonado el repositorio, ejecute el siguiente comando:
code .
Seleccione la opción del menú Ejecutar y Depurar , o presione Ctrl+Shift+D.
Seleccione el vínculo crear un archivo launch.json.
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" } ] }
Para iniciar la depuración de la solución, presione F5 o seleccione Iniciar.
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.
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).
Abra una ventana de terminal y cambie los directorios al repositorio recién clonado.
Para iniciar la aplicación Productos, ejecute el siguiente comando:
dotnet run --project ./Products/Products.csproj
Se abre una página del navegador que muestra el JSON para los productos.
En una ventana de terminal independiente, cambie de nuevo los directorios al repositorio clonado.
Inicie la aplicación Store ejecutando el siguiente comando:
dotnet run --project ./Store/Store.csproj
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.
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.
En Visual Studio, en el Explorador de soluciones, haga clic derecho en el proyecto Store, seleccione Agregar, y a continuación, seleccione .NET.NET AspireSoporte de Orchestrator.
En el cuadro de diálogo Agregar .NET.NET Aspire compatibilidad con el orquestador, seleccione Aceptar.
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 de Tienda 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:
En Visual Studio, en el Explorador de Soluciones, haga clic con el botón derecho en el proyecto Productos, seleccione Agregar, y luego seleccione .NET.NET Aspire Soporte de Orchestrator.
Un cuadro de diálogo indica que el proyecto del Orchestrator .NET.NET Aspire ya existe, seleccione Aceptar.
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 proyecto de host de aplicación a partir de las plantillas disponibles, use el siguiente comando de CLI:
dotnet new aspire-apphost -o eShopLite.AppHost
Agregue el proyecto host de aplicación a la solución existente.
Agregue el proyecto Store como referencia de proyecto al proyecto host de aplicación app host usando el siguiente comando de la CLI: .NET
Crear un proyecto de configuración predeterminada de servicio
Una vez creado el proyecto host de la aplicación, debe crear un nuevo proyecto de servicios predeterminados. 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 para agregar una referencia de proyecto al proyecto Products
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 service defaults en el proyecto de Store, use el siguiente comando de .NET CLI:
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 proyecto configuraciones predeterminadas 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
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 momento, ambos proyectos forman parte de la orquestación de .NET.NET Aspire, pero el proyecto de la tienda de debe depender de la dirección backend de productos a través del descubrimiento de servicios de .NET.NET Aspire. Para habilitar la detección de servicios, abra el archivo Program.cs en proyecto eShopLite.AppHost y actualice el código para que el builder
agregue una referencia al proyecto Products:
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
A continuación, actualice el appsettings.json en el proyecto de Store con el siguiente JSON:
{
"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
Fíjese que el proyecto eShopLite.AppHost es el nuevo proyecto de inicio.
- En Visual Studio, para iniciar la depuración, presione F5. Visual Studio Compila los proyectos.
- Si aparece el cuadro de diálogo Inicio de Docker Escritorio, seleccione Sí. 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.
- En el panel de control, selecciona el endpoint para el proyecto "productos" . Aparece una nueva pestaña del explorador y muestra el catálogo de productos en formato JSON.
- En el panel, seleccione el punto de conexión para el proyecto de la tienda. Aparece una nueva pestaña del explorador y muestra la página principal de la aplicación web.
- En el menú de la izquierda, seleccione Productos. Se muestra el catálogo de productos.
- Para detener la depuración, cierre el navegador.
Elimine el archivo launch.json que creó anteriormente, ya no sirve para un propósito. En su lugar, inicie el proyecto de host de la aplicación, que organiza los demás proyectos:
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>.
Nota
Si Docker Escritorio (o Podman) no se está ejecutando, podrías experimentar un error. Inicie el motor de contenedor compatible con OCI e inténtelo de nuevo.
Inicie el proyecto del host de la aplicación ejecutando el siguiente comando:
dotnet run --project ./eShopLite.AppHost/eShopLite.AppHost.csproj
Nota
Si Docker Desktop (o Podman) no se está ejecutando, tendrás un error. Inicie el motor de contenedor compatible con OCI e inténtelo de nuevo.
- En el panel de control, selecciona el punto de conexión para el proyecto productos. Aparece una nueva pestaña del explorador y muestra el catálogo de productos en formato JSON.
- En el panel, seleccione el punto de conexión para el proyecto de la tienda. Aparece una nueva pestaña del explorador y muestra la página principal de la aplicación web.
- En el menú de la izquierda, seleccione Productos. Se muestra el catálogo de productos.
- 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.