Aspire 整合是一套精選的 NuGet 套件,可協助整合雲端原生應用程式與突出服務和平臺,例如 Redis 和 PostgreSQL。 每個整合都會透過自動布建或標準化的組態模式,提供基本的雲端原生功能。
提示
始終努力使用最新版本的 Aspire 集成來利用最新的功能、改進和安全更新。
警告
整合會在您的開發環境中執行程式碼。 使用前請確定第三方整合是可信的。 如需詳細資訊,請參閱 安全軟體供應鏈的最佳實務。
整合責任
大多數 Aspire 整合由兩個獨立的程式庫組成,每個程式庫都有不同的職責。 一種類型代表 AppHost 專案中的資源,稱為 裝載整合。 另一種整合類型代表用戶端庫,這些庫會連接到由主控整合所建模的資源,且稱為 用戶端整合。
主機代管整合
主機整合藉由配置資源(例如容器或雲端資源)或指向現有的系統實例(如本機 SQL 伺服器)來設定應用程式。 這些套件會建立各種服務、平臺或功能模型,包括快取、資料庫、記錄、記憶體和傳訊系統。
裝載整合可擴充 IDistributedApplicationBuilder 介面,讓 AppHost 專案在其 應用程式模型中表示資源。 託管整合適用於任何類型的應用程式,而不僅僅是 .NET 應用程式。 它們提供基礎結構,並將組態詳細資料 (例如連接字串、端點和認證) 作為環境變數插入任何參考它們的專案、可執行檔或容器中。
官方 主機整合 NuGet 套件 會以 aspire、integration和 hosting標記。 除了官方的主機託管整合外,社群還為各種服務和平臺建立了託管整合,這是社群工具包的一部分。
如需有關建立自訂 託管整合的資訊,請參閱 建立自訂 Aspire 託管整合。
Client 整合
Client 整合將客戶端程式庫連接到 依賴注入、定義配置架構,並增加 健康檢查、韌性,以及 遙測。
Aspire 用戶端整合程式庫以 Aspire. 為字首,後面接著與其整合的完整套件名稱,例如Aspire.StackExchange.Redis。
這些套件將設定現有的客戶端函式庫,以便連接到託管整合。 它們會擴充 IHostApplicationBuilder 介面,讓使用者專案,例如 Web 應用程式或 API,來使用連線的資源。 官方 用戶端整合 NuGet 套件 會以 aspire、integration和 client標記。 除了官方用戶端整合之外,社群已建立各種服務和平臺的用戶端整合,作為社群工具組的一部分。
這很重要
Aspire整合需要IHostApplicationBuilder,但與實作不相容,而實作僅提供對HostingStartup的存取。 如果您使用HostingStartup進行模組化設定,請參閱 HostingStartup 不支援與Aspire的整合,以獲得移轉指引。
如需有關建立自訂用戶端整合的詳細資訊,請參閱 建立自訂 Aspire 用戶端整合。
主機代管與客戶端整合之間的關聯性
一起使用時,主機與用戶端整合效果最好,但並未結合,因此可分開使用。 有些主機集成沒有對應的用戶端集成。 設定是讓主機整合與用戶端整合協同運作的關鍵。
Client 整合是 .NET特定於的 ,並提供方便、固執己見的方式來配置 .NET 應用程式。 不過,您可以針對非應用程式使用.NET,或者當您偏好手動設定連線時。 在這些案例中,裝載整合仍會提供基礎結構,並透過任何應用程式技術都可以取用的環境變數公開連線資訊。
請考慮下圖,描述裝載與用戶端整合之間的關聯性:
AppHost 專案是使用託管整合的地方。 組態,特別是環境變數,會嵌入到專案、可執行檔和容器中,讓客戶端整合可以連接到宿主整合。
整合功能
當您將用戶端整合新增至解決方案內 Aspire 的專案時, 服務預設值 會自動套用至該專案,這表示會參考服務預設值專案並 AddServiceDefaults 呼叫延伸模組方法。 這些預設值是設計成在大部分情況下都能正常運作,而且可以視需要自定義。 套用下列服務預設值:
可檢視性和遙測:自動設定記錄、追蹤和計量組態:
健康情況檢查:公開 HTTP 端點以提供應用程式的基本可用性和狀態資訊。 健康情況檢查可用來影響容器協調器、負載平衡器、API 閘道和其他管理服務所做的決策。
復原能力:系統回應失敗的能力,仍然保持運作。 復原延伸超過防止失敗的範圍,包括復原和重新建構雲端原生環境回到狀況良好的狀態。
瞭解主機整合擴充功能方法
Aspire 託管整合提供以 Add 或 With 開頭的擴充方法。 這些方法符合下列模式:
-
Add*methods:方法在Add*AppHost內建立和註冊新資源,並傳回一個包含新增具體資源類型IResourceBuilder<TResource>的TResource實例。 這可讓您在傳回的產生器上繼續流暢的設定。 例如,呼叫 AddAzureServiceBus 會傳回IResourceBuilder<AzureServiceBusResource>,然後呼叫 AddServiceBusQueue 該命名空間產生器會傳回IResourceBuilder<AzureServiceBusQueueResource>。 此模式建構父子關係(例如,服務匯流排命名空間及其佇列或主題),同時保留一致的順暢構建器 API。 -
With*方法:使用方法來With*設定或增強現有資源。 這些方法通常會傳回與父項相同的物件類型,可讓您連結其他組態呼叫。
這很重要
使用 Add 方法時,請務必將正確的資源物件傳遞至用戶端整合。 傳遞錯誤的物件可能會導致設定錯誤的連線或執行階段錯誤。
請考慮以下程式碼:
var serviceBus = builder.AddAzureServiceBus(name: "serviceBus")
.AddServiceBusTopic(name: "messagetopic");
var apiService = builder.AddProject<Projects.servicebusexp_ApiService>("apiservice")
.WithHttpHealthCheck("/health")
.WithReference(serviceBus);
// The serviceBus is an IResourceBuilder<AzureServiceBusTopicResource> type
您可能預期 serviceBus 會代表 Azure Service Bus 資源,但實際上,因為您在同一行呼叫了 AddServiceBusTopic,serviceBus 是 Azure Service Bus 的主題資源。 若要避免此結果,請在另一行呼叫 AddServiceBusTopic:
var serviceBus = builder.AddAzureServiceBus(name: "serviceBus");
var topic = serviceBus.AddServiceBusTopic(name: "messagetopic");
var apiService = builder.AddProject<Projects.servicebusexp_ApiService>("apiservice")
.WithHttpHealthCheck("/health")
.WithReference(serviceBus);
// The serviceBus is an IResourceBuilder<AzureServiceBusResource> type
現在,您可以選擇傳遞耗用專案所需的資源。 如例所示,可選擇服務匯流排資源或主題資源。
這種區別可協助您準確地建立應用程式基礎架構模型,並確保用戶端整合收到正確的連線資訊。
版本控制考量
主機和用戶端整合在每個版本中更新,以最新穩定版本的依賴資源為目標。 當容器映像更新為新的映像版本時,主機整合會同步更新到這些新版本。 同樣地,當相依用戶端連結庫有新的 NuGet 版本可用時,對應的用戶端整合會更新為新版本。 這可確保應用程式可以使用最新的功能和安全性更新。 Aspire更新類型 (主要、次要、修補程式) 不一定表示相依資源中的更新類型。 例如,如有必要,相依資源的新主要版本可能會在補丁版本 Aspire 中更新。
當相依賴的資源發生重大變更時,整合可能會暫時分割成版本相依的套件,以簡化跨越重大變更的版本更新。 如需詳細資訊,請參閱 這類重大變更的第一個範例。
官方整合
Aspire 提供許多整合來協助您建置雲端原生應用程式。 這些整合功能旨在與 AppHost 和用戶端程式庫Aspire 無縫協作。 下列各節詳述雲端中立、Azure 特定、Amazon Web Services(AWS)與 Community Toolkit 的整合。
與雲端無關的整合
下一節詳細說明與雲端無關的 Aspire 整合,以及其各自文件和 NuGet 套件的連結,並提供每個整合的簡短描述。
如需在 Aspire中使用 Visual Studio 整合功能的詳細資訊,請參閱 Visual Studio 工具。
Azure 整合
Azure 整合會將應用程式設定為使用 Azure 資源。 這些裝載整合可在 Aspire.Hosting.Azure.* NuGet 套件中使用,而其用戶端整合可在 Aspire.* NuGet 套件中使用:
Amazon Web Services (AWS) 主機代管服務整合
| 整合文件與 NuGet 套件 | 描述 |
|---|---|
|
-
深入瞭解:📄 AWS 主機代管 - 託管:📦Aspire.託管.AWS - Client:不適用 |
用於建模 AWS 資源的程式庫。 |
如需詳細資訊,請參閱 GitHub:Aspire。Hosting.AWS 連結庫。
Kubernetes 託管整合
| 整合文件與 NuGet 套件 | 描述 |
|---|---|
|
-
瞭解更多資訊: 📄Kubernetes 託管 - 託管:📦Aspire。主機。Kubernetes - Client:不適用 |
用於從應用程式模型產生Kubernetes.NETAspire部署資訊清單的程式庫。 |
Community Toolkit 工具套件整合
注意
社群工具組整合是由社群驅動,並由 Aspire 社群維護。 這些整合並未得到 Aspire 團隊的正式支援。
如需詳細資訊,請參閱 Aspire 社群工具組。