Tutorial: Implementación de un proyecto de .NET Aspire con una base de datos de SQL Server en Azure
En este tutorial, aprenderá a configurar una aplicación de ASP.NET Core con una base de datos de SQL Server para la implementación en Azure. .NET Aspire proporciona varias configuraciones de integración de SQL Server que aprovisionan diferentes servicios de base de datos en Azure. Aprenderá a:
- Cree una aplicación básica de ASP.NET Core configurada para usar la integración de .NET AspireSQL Server
- Configuración de la aplicación para aprovisionar una base de datos SQL de Azure
- Configuración de la aplicación para aprovisionar una base de datos de SQL Server en contenedor
Nota
Este documento se centra específicamente en configuraciones de .NET Aspire para aprovisionar e implementar recursos de SQL Server en Azure. Visite el tutorial de implementación de Azure Container Apps para obtener más información sobre el proceso completo de implementación 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 de 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.
Creación de la solución de ejemplo
- En la parte superior de Visual Studio, navegue a Archivo>Nuevo>Proyecto.
- En la ventana de diálogo, busque Aspire y seleccione .NET.NET Aspire - Starter Application. Elija Siguiente.
- En la pantalla Configura tu nuevo proyecto:
- Escriba un nombre de proyecto de de AspireSQL.
- Deje el rest de los valores predeterminados y seleccione Siguiente.
- En la pantalla Información adicional:
- Compruebe que .NET 9.0 está seleccionado y elija Crear.
Visual Studio crea una nueva solución para ASP.NET Core que está estructurada para usar .NET Aspire. La solución consta de los siguientes proyectos:
- AspireSQL.Web: un proyecto de Blazor que depende de los valores predeterminados del servicio.
- AspireSQL.ApiService: un proyecto de API que depende de los valores predeterminados del servicio.
- AspireSQL.AppHost: un proyecto de orquestador diseñado para conectar y configurar los diferentes proyectos y servicios de la aplicación. El orquestador debe establecerse como proyecto de inicio.
- AspireSQL.ServiceDefaults: una biblioteca de clases compartida para contener configuraciones que se pueden reutilizar en los proyectos de la solución.
Configuración de la aplicación para la implementación de SQL Server
.NET Aspire proporciona dos opciones de configuración integradas para simplificar la implementación de SQL Server en Azure:
- Provisionar una base de datos en contenedor de SQL Server mediante Azure Container Apps
- Aprovisionamiento de una instancia de SQL Database de Azure
Incorporación de la integración de .NET.NET Aspire a la aplicación
Agregue la integración de .NET.NET Aspire adecuada al proyecto de AspireSQL.AppHost para el servicio de hospedaje deseado.
Agregue el
dotnet add package Aspire.Hosting.Azure.Sql
Configuración del proyecto AppHost
Configure el proyecto de AspireSQL.AppHost para el servicio de base de datos SQL deseado.
Reemplace el contenido del archivo Program.cs en el proyecto de AspireSQL.AppHost por el código siguiente:
var builder = DistributedApplication.CreateBuilder(args);
var apiService = builder.AddProject<Projects.AspireSql_ApiService>("apiservice");
// Provisions an Azure SQL Database when published
var sqlServer = builder.AddAzureSqlServer("sqlserver")
.AddDatabase("sqldb");
builder.AddProject<Projects.AspireSql_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(apiService)
.WaitFor(apiService);
builder.Build().Run();
El código anterior agrega un recurso contenedor de SQL Server a la aplicación y configura una conexión a una base de datos denominada sqldata
. El método PublishAsAzureSqlDatabase
garantiza que las herramientas como el Azure Developer CLI o Visual Studio creen un recurso de SQL Database Azure durante el proceso de implementación.
Implementación de la aplicación
Las herramientas como la Azure Developer CLI (azd
) admiten configuraciones de integración de .NET AspireSQL Server para simplificar las implementaciones.
azd
consume estos ajustes y aprovisiona recursos configurados apropiadamente.
Inicialización de la plantilla
Abra una nueva ventana de terminal y
cd
en el directorio del proyecto AppHost de la solución de .NET.NET Aspire.Ejecute el comando
azd init
para inicializar el proyecto conazd
, que inspeccionará la estructura del directorio local y determinará el tipo de aplicación.azd init
Para obtener más información sobre el comando
azd init
, vea azd init.Seleccione Usar código en el directorio actual cuando
azd
le pida dos opciones de inicialización de la aplicación.? How do you want to initialize your app? [Use arrows to move, type to filter] > Use code in the current directory Select a template
Después de escanear el directorio,
azd
le solicita que confirme que ha encontrado el proyecto AppHost correcto .NET.NET Aspirede. Seleccione la opción Confirmar y continuar con la inicialización de mi aplicación.Detected services: .NET (Aspire) Detected in: D:\source\repos\AspireSample\AspireSample.AppHost\AspireSample.AppHost.csproj azd will generate the files necessary to host your app on Azure using Azure Container Apps. ? Select an option [Use arrows to move, type to filter] > Confirm and continue initializing my app Cancel and exit
Escriba un nombre de entorno, que se usa para asignar un nombre a los recursos aprovisionados en Azure y administrar entornos diferentes, como
dev
yprod
.Generating files to run your app on Azure: (✓) Done: Generating ./azure.yaml (✓) Done: Generating ./next-steps.md SUCCESS: Your app is ready for the cloud! You can provision and deploy your app to Azure by running the azd up command in this directory. For more information on configuring your app, see ./next-steps.md
azd
genera una serie de archivos y los coloca en el directorio de trabajo. Estos archivos son:
- azure .yaml: describe los servicios de la aplicación, como .NET Aspire proyecto AppHost, y los asigna a Azure recursos.
-
.azure/config.json: archivo de configuración que informa
azd
cuál es el entorno activo actual. - .azure/aspireazddev/.env: contiene invalidaciones específicas del entorno.
Implementación de la plantilla
Una vez inicializada una plantilla de
azd
, el proceso de aprovisionamiento e implementación se puede ejecutar como un solo comando desde el directorio del proyecto AppHost mediante azd up:azd up
Seleccione la suscripción a la que desea realizar la implementación en en la lista de opciones disponibles:
Select an Azure Subscription to use: [Use arrows to move, type to filter] 1. SampleSubscription01 (xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx) 2. SamepleSubscription02 (xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx)
Seleccione la ubicación de Azure deseada que se usará en la lista de opciones disponibles:
Select an Azure location to use: [Use arrows to move, type to filter] 42. (US) Central US (centralus) 43. (US) East US (eastus) > 44. (US) East US 2 (eastus2) 46. (US) North Central US (northcentralus) 47. (US) South Central US (southcentralus)
Después de realizar las selecciones, azd
ejecuta el proceso de aprovisionamiento e implementación.
By default, a service can only be reached from inside the Azure Container Apps environment it is running in. Selecting a service here will also allow it to be reached from the Internet.
? Select which services to expose to the Internet webfrontend
? Select an Azure Subscription to use: 1. <YOUR SUBSCRIPTION>
? Select an Azure location to use: 1. <YOUR LOCATION>
Packaging services (azd package)
Provisioning Azure resources (azd provision)
Provisioning Azure resources can take some time.
Subscription: <YOUR SUBSCRIPTION>
Location: <YOUR LOCATION>
You can view detailed progress in the Azure Portal:
<LINK TO DEPLOYMENT>
(✓) Done: Resource group: <YOUR RESOURCE GROUP>
(✓) Done: Container Registry: <ID>
(✓) Done: Log Analytics workspace: <ID>
(✓) Done: Container Apps Environment: <ID>
SUCCESS: Your application was provisioned in Azure in 1 minute 13 seconds.
You can view the resources created under the resource group <YOUR RESOURCE GROUP> in Azure Portal:
<LINK TO RESOURCE GROUP OVERVIEW>
Deploying services (azd deploy)
(✓) Done: Deploying service apiservice
- Endpoint: <YOUR UNIQUE apiservice APP>.azurecontainerapps.io/
(✓) Done: Deploying service webfrontend
- Endpoint: <YOUR UNIQUE webfrontend APP>.azurecontainerapps.io/
Aspire Dashboard: <LINK TO DEPLOYED .NET ASPIRE DASHBOARD>
SUCCESS: Your up workflow to provision and deploy to Azure completed in 3 minutes 50 seconds.
El comando azd up
actúa como contenedor para los siguientes comandos de azd
individuales para aprovisionar e implementar los recursos en un solo paso:
-
azd package
: los proyectos de la aplicación y sus dependencias se empaquetan en contenedores. -
azd provision
: Los recursos Azure que necesitará la aplicación están aprovisionados. -
azd deploy
: los proyectos se insertan como contenedores en una instancia de Container Registry de Azure y, a continuación, se usan para crear nuevas revisiones de Azure Container Apps en las que se hospedará el código.
Cuando se completen las fases de azd up
, la aplicación estará disponible en Azurey puede abrir el portal de Azure para explorar los recursos.
azd
también genera direcciones URL para acceder directamente a las aplicaciones implementadas.
El proceso de implementación aprovisionó un recurso de Azure SQL Database debido a la configuración de .AppHost que proporcionaste.
Limpieza de recursos
Ejecute el siguiente comando Azure CLI para eliminar el grupo de recursos cuando ya no necesite los recursos de Azure que creó. Al eliminar el grupo de recursos también se eliminan los recursos contenidos en él.
az group delete --name <your-resource-group-name>
Para obtener más información, consulte Limpieza de recursos en Azure.