Compartir a través de


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:

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

  1. En la parte superior de Visual Studio, navegue a Archivo>Nuevo>Proyecto.
  2. En la ventana de diálogo, busque Aspire y seleccione .NET.NET Aspire - Starter Application. Elija Siguiente.
  3. 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.
  4. 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 . Hospitalidad.. Paquete NuGet de Sql al proyecto de de AspireSQL.AppHost:

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

  1. Abra una nueva ventana de terminal y cd en el directorio del proyecto AppHost de la solución de .NET.NET Aspire.

  2. Ejecute el comando azd init para inicializar el proyecto con azd, 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.

  3. 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
    
  4. 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
    
  5. Escriba un nombre de entorno, que se usa para asignar un nombre a los recursos aprovisionados en Azure y administrar entornos diferentes, como dev y prod.

    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

  1. 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
    
  2. 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)
    
  3. 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:

  1. azd package: los proyectos de la aplicación y sus dependencias se empaquetan en contenedores.
  2. azd provision: Los recursos Azure que necesitará la aplicación están aprovisionados.
  3. 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.

captura de pantalla A en la que se muestra el Azure SQL Database implementado.

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.

Consulte también