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 terminal 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 de Acción de
, seleccione Inicio para los proyectos deProductos yTienda .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 crear un lanzamiento.json enlace de archivo.
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 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.
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 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:
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 .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 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.
Agregue el proyecto de
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
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
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
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
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
{
"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.
- En Visual Studio, presione F5para iniciar la depuraciónVisual 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 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.
- 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. - 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 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:
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, experimentarás 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 Escritorio (o Podman) no se está ejecutando, experimentará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 de los 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 del proyecto del almacén
. 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.