教學課程:將 .NET Aspire 專案和 SQL Server 資料庫部署到 Azure
在本教學課程中,您將瞭解如何使用 ASP.NET Core 資料庫來設定 SQL Server 應用程式,以部署至 Azure。 .NET Aspire 提供多個 SQL Server 整合組態,可在 Azure中布建不同的資料庫服務。 您將瞭解如何:
- 建立設定為使用 ASP.NET Core.NET Aspire 整合的基本 SQL Server 應用程式
- 設定應用程式以布建 Azure SQL Database
- 設定應用程式以布建容器化 SQL Server 資料庫
注意
此文件特別著重於 .NET Aspire 組態,以在 SQL Server中提供和部署 Azure 資源。 請流覽 Azure Container Apps 部署 教學課程,深入瞭解完整的 .NET.NET Aspire 部署程式。
先決條件
若要與 .NET.NET Aspire合作,您需要在本機安裝下列項目:
- .NET 8.0 或 .NET 9.0
- 符合 OCI 規範的容器運行時間,例如:
- 整合式開發人員環境 (IDE) 或程式碼編輯器,例如:
- Visual Studio 2022 17.9 版或更高版本 (選用)
-
Visual Studio Code (選擇性)
- C# Dev Kit:擴充功能(選擇性)
- JetBrains Rider 搭配 .NET.NET Aspire 外掛程式 (選用)
如需詳細資訊,請參閱 .NET.NET Aspire 設定和工具和 .NET.NET Aspire SDK。
建立範例解決方案
- 在 Visual Studio頂端,流覽至 [檔案]>[新增>專案]。
- 在對話框視窗中,搜尋 Aspire,然後選取 [.NET.NET Aspire - 入門應用程式。 選擇 [下一步]。
- 在 [設定新專案 畫面:
- 輸入
AspireSQL 項目名稱。 - 將值的 rest 保留為預設值,然後選取 [下一步]。
- 輸入
- 在 [其他資訊] 畫面上:
- 確認已選取 [.NET 9.0],然後選擇 [建立]。
Visual Studio 建立一個以使用 ASP.NET Core為結構的新 .NET Aspire 解決方案。 解決方案包含下列專案:
- AspireSQL.Web:相依於服務預設值的 Blazor 專案。
- AspireSQL.ApiService:相依於服務預設值的 API 專案。
- AspireSQL.AppHost:協調器專案,其設計目的是連線及設定應用程式的不同項目和服務。 協調器應該設定為啟始專案。
- AspireSQL.ServiceDefaults:共用類別庫,用來保存可在解決方案中跨專案重複使用的組態。
設定應用程式以進行 SQL Server 部署
.NET Aspire 提供兩個內建組態選項,可簡化 SQL Server上的 Azure 部署:
- 使用 SQL Server 布建容器化 Azure Container Apps 資料庫
- 配置 Azure SQL 資料庫實例
將 .NET.NET Aspire 整合新增至應用程式
針對您想要的託管服務,將適當的 .NET.NET Aspire 整合添加至 AspireSQL.AppHost 專案。
新增 📦Aspire.Hosting.AzureSql NuGet 套件至 AspireSQL.AppHost 專案:
dotnet add package Aspire.Hosting.Azure.Sql
設定 AppHost 專案
為所需的 SQL 資料庫服務設定 AspireSQL.AppHost 專案。
使用下列程式代碼取代 Program.cs 專案中 檔案的內容:
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();
上述程式代碼會將 SQL Server 容器資源新增至您的應用程式,並設定與名為 sqldata
的資料庫連線。
PublishAsAzureSqlDatabase
方法可確保在部署過程中,Azure Developer CLI 或 Visual Studio 等工具會建立 Azure SQL 資料庫資源。
部署應用程式
Azure Developer CLI(azd
)等工具支援 .NET AspireSQL Server 整合設定,以簡化部署。
azd
會利用這些設定,並為您提供正確配置的資源。
初始化範本
開啟新的終端機視窗,並
cd
您 .NET 解決方案的 .NET Aspire 項目目錄。執行
azd init
命令,以使用azd
初始化專案,這會檢查本機目錄結構,並判斷應用程式的類型。azd init
如需
azd init
命令的詳細資訊,請參閱 azd init。當 提示您使用兩個應用程式初始化選項時,請選取
azd
。? How do you want to initialize your app? [Use arrows to move, type to filter] > Use code in the current directory Select a template
掃描目錄之後,
會提示您確認它找到正確的 appHost 專案 。 選取確認並繼續初始化我的應用程式選項。 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
輸入環境名稱,用來命名 Azure 中布建的資源,以及管理不同的環境,例如
dev
和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
會產生數個檔案,並將其放在工作目錄中。 這些檔案包括:
- azure.yaml:描述應用程式的服務,例如 .NET Aspire AppHost 專案,並將其對應至 Azure 資源。
-
。azure/config。json:通知
azd
目前使用中環境的組態檔。 - 。azure/aspireazddev/.env:包含環境特定的覆寫。
部署範本
初始化
範本之後,您可以使用 azd up ,從 AppHost 項目目錄,以單一命令執行布建和部署程式:azd up
從可用的選項清單中,選取您想要部署至的訂用帳戶:
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)
從可用選項清單中選取要使用的 Azure 位置:
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)
選取項目之後,azd
會執行布建和部署程式。
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.
azd up
命令可作為下列個別 azd
命令的包裝函式,以在單一步驟中布建及部署您的資源:
-
azd package
:應用程式專案及其相依性會封裝到容器中。 -
azd provision
:應用程式所需的 Azure 資源已經準備就緒。 -
azd deploy
:專案會以容器的形式發佈至 Azure Container Registry 實例,然後用來建立新修訂的 Azure Container Apps,其中將託管程式碼。
當 azd up
階段完成時,您的應用程式將會在 Azure上使用,而且您可以開啟 Azure 入口網站來探索資源。
azd
也會輸出 URL 以直接存取已部署的應用程式。
由於 ,部署程式布建了 Azure SQL Database 資源。您提供的 AppHost 組態。
清除資源
當您不再需要您所建立 Azure 資源時,請執行下列 Azure CLI 命令來刪除資源群組。 刪除資源群組也會刪除其內含的資源。
az group delete --name <your-resource-group-name>
如需詳情,請參閱 清理資源於 Azure中。