Cómo agregar orquestación a una aplicación de .NET existente

Completado

.NET Aspire se puede dividir en soluciones para tres problemas que se enfrentan a aplicaciones modernas nativas de la nube. Dichos componentes son:

  1. Administración de la complejidad de la orquestación entre microservicios.
  2. Simplificación de cómo los microservicios usan componentes a través de paquetes NuGet.
  3. Compatibilidad con la velocidad del desarrollador a través de herramientas y plantillas.

En esta unidad, consulte cómo el uso de la orquestación aspire de .NET aporta ventajas a las aplicaciones nativas de nube existentes. A continuación, consulte cómo inscribir la aplicación en la orquestación de .NET Aspire y examinar los cambios realizados en la solución.

Ventajas de la orquestación de .NET Aspire

La orquestación es la coordinación y administración de los distintos servicios dentro de una aplicación nativa de la nube. .NET Aspire proporciona abstracciones para administrar la detección de servicios, las variables de entorno y las configuraciones de contenedor de la solución. Estas abstracciones también proporcionan patrones de configuración coherentes entre aplicaciones con muchos componentes y servicios.

Diagrama que muestra la relación entre el proyecto AppHost de .NET Aspire y los demás servicios de una aplicación.

.NET Aspire tiene tres tipos de proceso base que admite con orquestación:

  • ProjectResource: Un proyecto de .NET, como ASP.NET aplicaciones web de Core.
  • ContainerResource: Una imagen de contenedor, como una imagen de Docker que contiene Redis.
  • ExecutableResource: Un archivo ejecutable.

Compare .NET Aspire con cómo administrar la detección de servicios mediante Docker Compose. Docker Compose es excelente, pero empieza a ser improductivo cuando todo lo que necesita hacer es ejecutar varios proyectos o ejecutables. Debe compilar imágenes de contenedor, componer YAML para conectarlas y a continuación, ejecutar aplicaciones dentro de contenedores. Además, hay reemplazos de variables de entorno (e incluye) y no IntelliSense, y es difícil determinar qué se está ejecutando exactamente y por qué. La depuración también puede ser difícil.

La configuración mediante código declarativo es mejor. Con .NET Aspire, no es necesario aprender nada más allá de lo que ya sabe. .NET Aspire es una mejor experiencia que es fácil de empezar a trabajar y se escala verticalmente a un orquestador como Docker Compose mediante un lenguaje de programación real.

La orquestación de .NET Aspire también admite el desarrollo de las siguientes maneras:

  • Composición de aplicaciones: .NET Aspire especifica los proyectos, contenedores, ejecutables y recursos en la nube de .NET que componen la aplicación.
  • Administración de cadenas de conexión y detección de servicios: El host de la aplicación administra la inserción de las cadenas de conexión correctas y la información de detección de servicios para simplificar la experiencia del desarrollador.

Inscripción de una aplicación existente en la orquestación aspire de .NET

Visual Studio proporciona menús para inscribir un proyecto existente en la orquestación de .NET Aspire.

Captura de pantalla del menú Agregar que muestra la compatibilidad con Aspire Orchestrator de .NET resaltada.

La primera vez que agregue orquestación a la solución, un cuadro de diálogo solicita el prefijo del nombre del proyecto y explica que se agregan los proyectos AppHost y ServiceDefaults de .NET Aspire. Al agregar más proyectos a una solución ya orquestada, el cuadro de diálogo le notifica que el proyectoAppHost se actualiza para incluir esos proyectos.

Si va a crear un nuevo proyecto, durante el flujo de trabajo del nuevo proyecto, Visual Studio pregunta si quiere inscribirse en la orquestación de .NET Aspire.

Recorte de pantalla del nuevo flujo de trabajo del proyecto que muestra la opción de orquestación Alistar en Aspire resaltada.

Cambios que aspire a una solución existente

Al agregar la orquestación de .NET Aspire a la solución, se producen los siguientes cambios:

  • Se agrega un proyectoAppHost. El proyecto contiene el código de orquestación. Se convierte en el punto de entrada de la aplicación y es responsable de iniciar y detener la aplicación. También administra la detección de servicios y la administración de cadenas de conexión.
  • Se agrega un proyectoServiceDefaults. El proyecto configura OpenTelemetry, agrega puntos de conexión de comprobación de estado predeterminados y habilita la detección de servicios a través HttpClient.
  • El proyecto de inicio predeterminado de la solución se cambia a AppHost.
  • Las dependencias de los proyectos inscritos en la orquestación se agregan al proyecto AppHost.
  • El panel de .NET Aspire se agrega a la solución, lo que permite que los accesos directos accedan a todos los puntos de conexión del proyecto de la solución.
  • El panel agrega registros, seguimientos y métricas para los proyectos de la solución.

Si agrega orquestación a un proyecto de aplicación web, .NET Aspire agrega automáticamente una referencia al proyecto ServiceDefaults . A continuación, realiza los siguientes cambios en el código de Program.cs:

  • Agrega una llamada a AddServiceDefaults que habilita la detección predeterminada de OpenTelemetry, medidores y servicios.
  • Agrega una llamada a MapDefaultEndpoints que habilita los puntos de conexión predeterminados, como /health y /alive.