.NET .NET Aspire y perfiles de lanzamiento
.NET .NET Aspire usa perfiles de inicio definidos en los proyectos de servicio y host de aplicaciones para simplificar el proceso de configuración de varios aspectos de la experiencia de depuración y publicación para aplicaciones distribuidas basadas en .NET.NET Aspire.
Aspectos básicos del perfil de lanzamiento
Al crear una nueva aplicación de .NET a partir de una plantilla, los desarrolladores a menudo verán un directorio Properties
que contiene un archivo denominado launchSettings.json. El archivo de configuración de inicio contiene una lista de perfiles de inicio . Cada perfil de inicio es una colección de opciones relacionadas que definen cómo desea dotnet
iniciar la aplicación.
El código siguiente es un ejemplo de perfiles de inicio en un archivo launchSettings. json para una aplicación ASP.NET Core.
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"applicationUrl": "http://localhost:5130",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"applicationUrl": "https://localhost:7106;http://localhost:5130",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
El launchSettings.json archivo anterior define dos perfiles de inicio , http
y https
. Cada uno tiene su propio conjunto de variables de entorno, direcciones URL de inicio y otras opciones. Al iniciar una aplicación .NET Core, los desarrolladores pueden elegir qué perfil de inicio se va a usar.
dotnet run --launch-profile https
Si no se especifica ningún perfil de inicio, el primer perfil de inicio se selecciona de forma predeterminada. Es posible iniciar una aplicación .NET Core sin un perfil de inicio mediante la opción --no-launch-profile
. Algunos campos de la launchSettings.json archivo se traducen a variables de entorno. Por ejemplo, el campo applicationUrl
se convierte en la variable de entorno ASPNETCORE_URLS
que controla a qué dirección y puerto ASP.NET Core se enlaza.
En Visual Studio es posible seleccionar el perfil de inicio al iniciar la aplicación, lo que facilita el cambio entre escenarios de configuración al depurar manualmente problemas:
Cuando se inicia una aplicación de .NET con un perfil de inicio, se rellena una variable de entorno especial denominada DOTNET_LAUNCH_PROFILE
con el nombre del perfil de inicio que se usó al iniciar el proceso.
Perfiles de inicio para .NET.NET Aspire host de la aplicación
En .NET Aspire, AppHost es solo una aplicación .NET. Como resultado, tiene un archivo launchSettings.json
igual que cualquier otra aplicación. Este es un ejemplo del archivo de launchSettings.json
generado al crear un nuevo proyecto de .NET.NET Aspire a partir de la plantilla de inicio (dotnet new aspire-starter
).
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"profiles": {
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:17134;http://localhost:15170",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"DOTNET_ENVIRONMENT": "Development",
"DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21030",
"DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22057"
}
},
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "http://localhost:15170",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"DOTNET_ENVIRONMENT": "Development",
"DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19240",
"DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20154"
}
}
}
}
Las plantillas de .NET.NET Aspire tienen un conjunto muy similar de perfiles de inicio de a una aplicación de ASP.NET Core normal. Cuando se inicia el proyecto de aplicación .NET.NET Aspire, inicia un DistributedApplication y alberga unaserver web que el panel de .NET Aspire utiliza para obtener información sobre los recursos que está orquestando .NET Aspire.
Para obtener información sobre las opciones de configuración del host de la aplicación, consulte .NET.NET Aspire configuración del host de la aplicación.
Relación entre los perfiles de inicio del host de la aplicación y los proyectos de servicio
En .NET.NET Aspire el host de la aplicación es responsable de coordinar el inicio de varios proyectos de servicio. Al ejecutar el host de la aplicación a través de la línea de comandos o desde Visual Studio (u otro entorno de desarrollo), se selecciona un perfil de inicio para el host de la aplicación. A su vez, el host de la aplicación intentará encontrar un perfil de inicio coincidente en los proyectos de servicio que está iniciando y usar esas opciones para controlar el entorno y la configuración de red predeterminada para el proyecto de servicio.
Cuando el host de la aplicación inicia un proyecto de servicio, no simplemente inicia el proyecto de servicio mediante la opción --launch-profile
. Por lo tanto, no habrá ninguna variable de entorno DOTNET_LAUNCH_PROFILE
establecida para los proyectos de servicio. Esto se debe a que .NET.NET Aspire modifica la variable de entorno ASPNETCORE_URLS
(derivada del campo applicationUrl
del perfil de inicio) para usar un puerto diferente. De forma predeterminada, .NET Aspire inserta un proxy inverso delante de la aplicación ASP.NET Core para permitir varias instancias de la aplicación mediante el método WithReplicas.
Otras opciones, como las opciones del campo environmentVariables
, se pasan a la aplicación sin modificaciones.
Control de la selección del perfil de inicio
Idealmente, es posible alinear los nombres de perfil de inicio entre el host de aplicación y los proyectos de servicio para facilitar el cambio entre las opciones de configuración en todos los proyectos coordinados por el host de la aplicación a la vez. Sin embargo, puede ser conveniente controlar el perfil de inicio que usa un proyecto específico. El método de extensión AddProject proporciona un mecanismo para hacerlo.
var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.InventoryService>(
"inventoryservice",
launchProfileName: "mylaunchprofile");
El código anterior muestra que el recurso inventoryservice
(un proyecto de .NET) se inicia mediante las opciones del perfil de inicio de mylaunchprofile
. La lógica de precedencia del perfil de inicio es la siguiente:
- Utilice el perfil de inicio especificado por el argumento
launchProfileName
si está especificado. - Use el perfil de inicio con el mismo nombre que AppHost (determinado por la lectura de la variable de entorno
DOTNET_LAUNCH_PROFILE
). - Use el perfil de inicio predeterminado (primero) en launchSettings.json.
- No utilice un perfil de inicio.
Para forzar que un proyecto de servicio se inicie sin un perfil de inicio, el argumento launchProfileName
en el método AddProject se puede establecer en NULL.
Perfiles de inicio y puntos de conexión
Al agregar un proyecto de ASP.NET Core al host de la aplicación, .NET Aspire analizará el archivo de configuración de lanzamiento json, seleccionando el perfil de inicio adecuado y generando automáticamente puntos de conexión en el modelo de aplicación en función de las direcciones URL presentes en el campo applicationUrl
. Para modificar los puntos de conexión que se insertan automáticamente en el método de extensión WithEndpoint.
var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.InventoryService>("inventoryservice")
.WithEndpoint("https", endpoint => endpoint.IsProxied = false);
El código anterior muestra cómo deshabilitar el proxy inverso que .NET Aspire implementa delante para la aplicación .NET Core y, en su lugar, permite que la aplicación .NET Core responda directamente en las solicitudes a través de HTTP(S). Para obtener más información sobre las opciones de red en .NET.NET Aspire, consulte la visión general de la red de bucle interno .NET.NET Aspire.