Esercitazione: Implementare un progetto .NET Aspire con un Database SQL Server su Azure
Questa esercitazione illustra come configurare un'app ASP.NET Core con un database SQL Server per la distribuzione in Azure. .NET Aspire fornisce diverse configurazioni di integrazione SQL Server che offrono servizi di database differenti in Azure. Si apprenderà come:
- Creare un'app ASP.NET Core di base configurata per l'uso dell'integrazione .NET AspireSQL Server
- Configurare l'app per il provisioning di un database SQL Azure
- Configurare l'app per provisionare un database SQL Server containerizzato
Nota
Questo documento è in particolare incentrato sulle configurazioni di .NET Aspire per provisionare e distribuire le risorse SQL Server in Azure. Per altre informazioni sul processo di distribuzione completo
Prerequisiti
Per usare .NET.NET Aspire, è necessario che il codice seguente sia installato in locale:
- .NET 8.0 o .NET 9.0
- Un runtime conforme a OCI per contenitori, ad esempio:
- Docker Desktop o Podman. Per altre informazioni, vedere Ambiente di esecuzione di container.
- Un ambiente di sviluppo integrato (IDE) o un editor di codice, ad esempio:
- Visual Studio 2022 versione 17.9 o successiva (facoltativo)
-
Visual Studio Code (facoltativo)
- C# Dev Kit: Estensione (opzionale)
- JetBrains Rider con .NET.NET Aspire plugin (facoltativo)
Per altre informazioni, vedere .NET.NET Aspire configurazione e strumentie .NET.NET Aspire SDK.
Creare la soluzione di esempio
- Nella parte superiore di Visual Studiopassare a File>Nuovo progetto>.
- Nella finestra di dialogo cercare Aspire e selezionare .NET.NET Aspire - Starter Application. Scegliere Avanti.
- Nella schermata Configura il tuo nuovo progetto:
- Immettere un nome progetto per AspireSQL.
- Lasciare i valori predefiniti rimanenti e selezionare Avanti.
- Nella schermata Informazioni aggiuntive:
- Verificare che .NET 9.0 sia selezionato e scegliere Crea.
Visual Studio crea una nuova soluzione di ASP.NET Core progettata per utilizzare .NET Aspire. La soluzione è costituita dai progetti seguenti:
- AspireSQL.Web: un progetto di Blazor che dipende dalle impostazioni predefinite del servizio.
- AspireSQL.ApiService: progetto API che dipende dalle impostazioni predefinite del servizio.
- AspireSQL.AppHost: un progetto di orchestrazione progettato per connettere e configurare i diversi progetti e servizi della tua app. L'orchestratore deve essere impostato come progetto di avvio.
- AspireSQL.ServiceDefaults: libreria di classi condivisa per contenere configurazioni che possono essere riutilizzate nei progetti della soluzione.
Configurare l'applicazione per la distribuzione SQL Server
.NET Aspire offre due opzioni di configurazione predefinite per semplificare la distribuzione di SQL Server in Azure:
- Configurare un database containerizzato SQL Server usando Azure Container Apps
- Effettuare il provisioning di un'istanza del database SQL di Azure
Aggiungere l'integrazione .NET.NET Aspire all'app
Aggiungere l'integrazione .NET.NET Aspire appropriata al progetto AspireSQL.AppHost per il servizio di hosting desiderato.
-
del database SQL di
- SQL Server container
Aggiungere il pacchetto NuGet 📦Aspire.Hosting.Azure.Sql al progetto AspireSQL.AppHost:
dotnet add package Aspire.Hosting.Azure.Sql
Configurare il progetto AppHost
Configurare il progetto AspireSQL.AppHost per il servizio di database SQL desiderato.
-
del database SQL di
- SQL Server container
Sostituire i contenuti del file Program.cs nel progetto AspireSQL.AppHost con il codice seguente:
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();
Il codice precedente aggiunge una risorsa contenitore SQL Server all'app e configura una connessione a un database denominato sqldata
. Il metodo PublishAsAzureSqlDatabase
garantisce che gli strumenti come Azure Developer CLI o Visual Studio creino una risorsa Azure del database SQL durante il processo di distribuzione.
Distribuire l'app
Strumenti come Azure Developer CLI (azd
) supportano le configurazioni di integrazione .NET AspireSQL Server per semplificare le distribuzioni.
azd
utilizza queste impostazioni e fornisce risorse configurate adeguatamente per te.
Inizializzare il modello
Aprire una nuova finestra del terminale e
cd
nella directory della soluzione .NET.NET Aspire.Eseguire il comando
azd init
per inizializzare il progetto conazd
, che esamina la struttura di directory locale e determina il tipo di app.azd init
Per altre informazioni sul comando
azd init
, vedere azd init.Selezionare Usa codice nella directory corrente quando
azd
richiede due opzioni di inizializzazione dell'app.? How do you want to initialize your app? [Use arrows to move, type to filter] > Use code in the current directory Select a template
Dopo aver eseguito l'analisi della directory,
azd
ti chiede di confermare che ha trovato il progetto di .NET.NET AspireAppHost corretto. Selezionare l'opzione Conferma e continuare a inizializzare l'app.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
Immettere un nome di ambiente, usato per assegnare un nome alle risorse di cui è stato effettuato il provisioning in Azure e gestire ambienti diversi, ad esempio
dev
eprod
.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 un numero di file e li inserisce nella directory di lavoro. Questi file sono:
- azure.yaml: descrive i servizi dell'app, ad esempio .NET Aspire progetto AppHost e ne esegue il mapping alle risorse Azure.
-
.azure/config.json: file di configurazione che informa
azd
qual è l'ambiente attivo corrente. - .azure/aspireazddev/.env: contiene sostituzioni specifiche dell'ambiente.
Distribuire il modello
Una volta inizializzato un modello
azd
, il processo di provisioning e distribuzione può essere eseguito come un unico comando dalla directory del progetto AppHost usando azd up.azd up
Seleziona la sottoscrizione cui distribuire dall'elenco delle opzioni disponibili.
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)
Selezionare il percorso di Azure desiderato da usare nell'elenco delle opzioni disponibili:
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)
Dopo aver effettuato le selezioni, azd
esegue il processo di provisioning e di distribuzione.
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.
Il comando azd up
funge da wrapper per i singoli comandi di azd
seguenti per effettuare il provisioning e distribuire le risorse in un unico passaggio:
-
azd package
: i progetti dell'app e le relative dipendenze vengono inseriti in contenitori. -
azd provision
: Le risorse Azure necessarie per l'app sono state approvvigionate. -
azd deploy
: i progetti vengono inseriti come contenitori in un'istanza del Registro Azure Container Azure e quindi usati per creare nuove revisioni di Azure Container Apps in cui verrà ospitato il codice.
Al termine delle fasi azd up
, l'app sarà disponibile in Azureed è possibile aprire il portale di Azure per esplorare le risorse.
azd
restituisce anche gli URL per accedere direttamente alle app distribuite.
-
del database SQL di
- SQL Server container
Il processo di distribuzione ha fornito una risorsa del database SQL Azure secondo la configurazione .AppHost specificata.
Pulire le risorse
Esegui il seguente comando CLI Azure per eliminare il gruppo di risorse quando le risorse Azure create non sono più necessarie. L'eliminazione del gruppo di risorse comporta anche l'eliminazione delle risorse contenute all'interno di essa.
az group delete --name <your-resource-group-name>
Per altre informazioni, consultare Eliminare le risorse in Azure.