.NET Aspire Azure 功能整合 (預覽)
重要
.NET Aspire Azure Functions 整合目前正處於預覽階段,並可能會有所變更。
Azure Functions 是無伺服器解決方案,可讓您撰寫較少的程式代碼、維護較少的基礎結構,以及節省成本。 .NET Aspire Azure Functions 整合可讓您在應用程式主機中開發、偵錯及協調 Azure Functions .NET 專案。
預計您已安裝必要的 Azure 工具:
- 使用 .NET 將 Visual Studio 配置為 Azure 開發所用
- 使用 .NET 為 Azure 開發配置 Visual Studio Code
支援的案例
.NET Aspire Azure Functions 整合有數個主要支援場景。 本節概述案例,並提供與每個方法實作相關的詳細數據。
支援的觸發器
下表列出 .NET Aspire 整合中 Azure Functions 支援的觸發條件:
觸發 | 屬性 | 詳細 |
---|---|---|
Azure Event Hubs 觸發 | EventHubTrigger |
📦 Aspire。托管。Azure。EventHubs |
Azure Service Bus 觸發 | ServiceBusTrigger |
📦 Aspire。託管。Azure。ServiceBus |
Azure 儲存 Blob 觸發 | BlobTrigger |
📦 Aspire。主機代管。Azure。儲存 |
Azure Storage Queues 觸發器 | QueueTrigger |
📦 Aspire主機代管Azure儲存 |
HTTP 觸發程式 | HttpTrigger |
支援而不需要任何額外的資源相依性。 |
計時器觸發 | TimerTrigger |
無需任何其他附加資源,即可支援—依賴於隱含的主機存儲。 |
重要
.NET Aspire Azure Functions 整合目前不支援其他 Azure Functions 觸發程式和系結。
部署
目前,只有在 Microsoft.Azure.Functions.Worker.Sdk
中使用 SDK 容器發佈函式,才支援在 Azure Container Apps 上部署容器。 此部署方法目前不支援以KEDA為基礎的自動調整。
設定外部 HTTP 端點
若要公開存取 HTTP 觸發程式,請在 AzureFunctionsProjectResource上呼叫 WithExternalHttpEndpoints API。 如需詳細資訊,請參閱 新增的 Azure 功能資源。
Azure 函式專案條件約束
.NET Aspire Azure Functions 整合具有下列專案限制條件:
- 您必須以 .NET 8.0 或更新版本為目標。
- 您必須使用 .NET 9 SDK。
- 目前,它僅支援具有 隔離工作者模型的 .NET 工作者。
- 需要下列 NuGet 套件:
-
📦 Microsoft。Azure。Functions.Worker:使用
FunctionsApplicationBuilder
。 -
📦 Microsoft。Azure。Functions.Worker.Sdk:新增對
dotnet run
和azd publish
的支援。 - 📦 Microsoft.Azure.Functions.Http.AspNetCore:新增支援 HTTP 觸發的 API。
-
📦 Microsoft。Azure。Functions.Worker:使用
如果您遇到 Azure Functions 項目的問題,例如:
沒有可用的函數執行階段符合專案中指定的版本。
在 Visual Studio中,嘗試檢查 Azure Functions 工具上的更新。 開啟 [選項] 對話框,流覽至 [專案和方案],然後選取 [Azure Functions]。 按下 [檢查更新] 按鈕,以確保您擁有最新版本的 Azure Functions 工具:
託管整合
裝載整合的 Azure Functions 將 Azure Functions 資源模型化為 ProjectResource類型中的 AzureFunctionsProjectResource 子類型。 若要存取此類型和 API 並將其新增至 應用程式主機 項目,請安裝 📦Aspire.Hosting.Azure.Functions 的 NuGet 套件。
dotnet add package Aspire.Hosting.Azure.Functions --prerelease
如需詳細資訊,請參閱 dotnet add package 或 管理 .NET 應用程式中的套件相依性。
新增 Azure Functions 資源
在您的應用程式主專案中,呼叫 builder
實例上的 AddAzureFunctionsProject,以新增 Azure Functions 資源:
var builder = DistributedApplication.CreateBuilder(args);
var functions = builder.AddAzureFunctionsProject<Projects.ExampleFunctions>("functions")
.WithExternalHttpEndpoints();
builder.AddProject<Projects.ExampleProject>()
.WithReference(functions)
.WaitFor(functions);
// After adding all resources, run the app...
當 .NET Aspire 新增 Azure Functions 項目的資源至應用程式主機時,如上例所示,其他專案資源可以引用 functions
資源。
WithReference 方法會在名為 "functions"
的 ExampleProject
中設定連接。 如果已部署 Azure 資源並公開 HTTP 觸發程式,則其端點會因為呼叫 WithExternalHttpEndpoints而為外部。 如需詳細資訊,請參閱 參考資源。
使用主機記憶體新增 Azure Functions 資源
如果您想要修改 Azure Functions 主機使用的預設主機記憶體帳戶,請在 Azure Functions 專案資源上呼叫 WithHostStorage 方法:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage")
.RunAsEmulator();
var functions = builder.AddAzureFunctionsProject<Projects.ExampleFunctions>("functions")
.WithHostStorage(storage);
builder.AddProject<Projects.ExampleProject>()
.WithReference(functions)
.WaitFor(functions);
// After adding all resources, run the app...
此程式代碼依賴 📦Aspire:託管Azure儲存 NuGet 套件,以新增作為模擬器執行的 Azure 儲存資源。 然後,storage
資源會傳遞至 WithHostStorage
API,明確地將主機記憶體設定為仿真的資源。
注意
如果您未使用隱含主機記憶體,則必須手動將 StorageAccountContributor
角色指派給已部署實例的資源。 這個角色會自動指派給隱含產生的主機記憶體。
Azure 函式中的參考資源
若要在 Azure Functions 專案中參考其他 Azure 資源,請對 Azure Functions 專案資源鏈結一次 WithReference
呼叫,並提供要參考的資源:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator();
var blobs = storage.AddBlobs("blobs");
builder.AddAzureFunctionsProject<Projects.ExampleFunctions>("functions")
.WithHostStorage(storage)
.WithReference(blobs);
builder.Build().Run();
上述程式代碼會將 Azure 記憶體資源新增至應用程式主機,並在 Azure Functions 專案中參考它。
blobs
資源被新增到 storage
資源中,然後由 functions
資源做參考。 連接到 blobs
資源所需的連線資訊會自動插入至 Azure Functions 專案,並讓專案定義依賴 blobs
資源的 BlobTrigger
。