Aspire 統合は、クラウドネイティブ アプリケーションと、Redis や PostgreSQLなどの主要なサービスとプラットフォームの統合を容易にするために選択された NuGet パッケージのキュレーションされたスイートです。 各統合は、自動プロビジョニングまたは標準化された構成パターンを通じて、重要なクラウドネイティブ機能を提供します。
アドバイス or ヒント (for advice context) チップ (for gratuity context)
常に最新バージョンの Aspire 統合を使用して、最新の機能、機能強化、およびセキュリティ更新プログラムを利用するように努めます。
Warnung
統合により、開発環境でコードが実行されます。 使用する前に、サードパーティの統合が信頼されていることを確認します。 詳細については、「 セキュリティで保護されたソフトウェア サプライ チェーンのベスト プラクティス」を参照してください。
統合の責任
ほとんどの Aspire 統合は、それぞれ異なる責任を持つ 2 つの個別のライブラリで構成されています。 1 つの種類は 、AppHost プロジェクト内のリソース ( ホスティング統合と呼ばれます) を表します。 もう 1 つの種類の統合は、ホスティング統合によってモデル化されたリソースに接続するクライアント ライブラリを表し、
ホスティング統合
ホスティング統合では、リソース (コンテナーやクラウド リソースなど) をプロビジョニングするか、既存のインスタンス (ローカル SQL サーバーなど) をポイントすることで、アプリケーションを構成します。 これらのパッケージは、キャッシュ、データベース、ログ記録、ストレージ、メッセージング システムなど、さまざまなサービス、プラットフォーム、または機能をモデル化します。
ホスティング統合により、 IDistributedApplicationBuilder インターフェイスが拡張され、 AppHost プロジェクトがその アプリ モデル内のリソースを表現できるようになります。 アプリケーションで動作します。 インフラストラクチャを提供し、構成の詳細 (接続文字列、エンドポイント、資格情報など) を環境変数として、それらを参照するすべてのプロジェクト、実行可能ファイル、またはコンテナーに挿入します。
統合 NuGet パッケージ をホストする公式
カスタム ホスティング統合の作成の詳細については、「カスタム Aspire ホスティング統合の作成」を参照してください。
Client 統合
Aspire. が付き、統合する完全なパッケージ名 ( Aspire.StackExchange.Redis など) が含まれます。
これらのパッケージは、ホスティング統合に接続するように既存のクライアント ライブラリを構成します。 これにより、IHostApplicationBuilder インターフェイスが拡張され、Web アプリや API などのクライアントが使用するプロジェクトで、接続されたリソースを使用できるようになります。 公式 クライアント統合 NuGet パッケージ は、aspire、integration、および clientでタグ付けされます。 公式のクライアント統合に加えて、コミュニティは、Community Toolkit の一部として、さまざまなサービスとプラットフォームに クライアント統合を作成しました。
Von Bedeutung
Aspire統合にはIHostApplicationBuilderが必要であり、へのアクセスのみを提供するHostingStartup実装とはIWebHostBuilder。 モジュール構成にHostingStartupを使用している場合は、移行ガイダンスのAspire統合で HostingStartup がサポートされていないを参照してください。
カスタム クライアント統合の作成の詳細については、「カスタム Aspire クライアント統合の作成」を参照してください。
ホスティングとクライアント統合の関係
ホスティングとクライアントの統合は、一緒に使用する場合に最適ですが、 結合されておらず、個別に使用できます。 一部のホスティング統合には、対応するクライアント統合がありません。 構成は、ホスティング統合をクライアント統合と連携させるものです。
Client 統合は .NET固有 であり、 .NET アプリケーションを構成するための便利で意見の出た方法を提供します。 ただし、以外のアプリケーションの場合、または接続を手動で構成する場合は、.NET。 これらのシナリオでは、ホスティング統合は引き続きインフラストラクチャを提供し、任意のアプリケーション テクノロジが使用できる環境変数を介して接続情報を公開します。
ホスティングとクライアントの統合の関係を示す次の図を考えてみましょう。
AppHost プロジェクトでは、ホスティング統合が使用されます。 構成 (特に環境変数) はプロジェクト、実行可能ファイル、コンテナーに挿入され、クライアント統合をホスティング統合に接続できます。
統合機能
Aspire ソリューション内のプロジェクトにクライアント統合を追加すると、サービスの既定値がそのプロジェクトに自動的に適用されます。つまり、Service Defaults プロジェクトが参照され、AddServiceDefaults拡張メソッドが呼び出されます。 これらの既定値は、ほとんどのシナリオで適切に動作するように設計されており、必要に応じてカスタマイズできます。 次のサービスの既定値が適用されます。
監視とテレメトリの: ログ記録、トレース、メトリックの構成を自動的に設定します。
正常性チェック: HTTP エンドポイントを公開して、アプリに関する基本的な可用性と状態情報を提供します。 正常性チェックは、コンテナー オーケストレーター、ロード バランサー、API ゲートウェイ、およびその他の管理サービスによる決定に影響を与えるために使用されます。
回復性: システムが障害に対応し、引き続き機能します。 回復性は、障害を防ぐだけでなく、クラウドネイティブ環境の復旧と再構築を正常な状態に戻す機能まで拡張されます。
ホスト統合拡張機能の方法について
Aspire ホスティング統合は、 Add または Withで始まる拡張メソッドを提供します。 これらのメソッドは、次のパターンに準拠しています。
-
Add*メソッド:Add*メソッドは AppHost 内に新しいリソースを作成して登録し、IResourceBuilder<TResource>が追加された具体的なリソースの種類であるTResourceを返します。 これにより、返されたビルダーで Fluent 構成を続行できます。 たとえば、 AddAzureServiceBus を呼び出すとIResourceBuilder<AzureServiceBusResource>が返され、その名前空間ビルダーで AddServiceBusQueue を呼び出すと、IResourceBuilder<AzureServiceBusQueueResource>が返されます。 このパターンは、一貫性のある Fluent Builder API を維持しながら、親子関係 (Service Bus 名前空間とそのキューやトピックなど) をモデル化します。 -
With*メソッド:With*メソッドを使用して、既存のリソースを構成または拡張します。 通常、これらのメソッドは親と同じオブジェクト型を返し、追加の構成呼び出しをチェーンできます。
Von Bedeutung
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
これで、使用するプロジェクトに必要なリソースを渡すことができます。 例のように、Service Bus リソースまたはトピック リソースのいずれか。
この区別により、アプリケーションのインフラストラクチャを正確にモデル化し、クライアント統合が正しい接続情報を確実に受信できるようになります。
バージョン管理に関する考慮事項
ホスティングとクライアントの統合は、依存リソースの最新の安定したバージョンを対象とするように、リリースごとに更新されます。 コンテナー イメージが新しいイメージ バージョンで更新されると、ホスティング統合はこれらの新しいバージョンに更新されます。 同様に、依存クライアント ライブラリで新しい NuGet バージョンを使用できる場合、対応するクライアント統合が新しいバージョンに更新されます。 これにより、最新の機能とセキュリティ更新プログラムをアプリケーションで使用できるようになります。 Aspire更新プログラムの種類 (メジャー、マイナー、パッチ) は、依存リソースの更新の種類を必ずしも示すわけではありません。 たとえば、必要に応じて、依存リソースの新しいメジャー バージョンを Aspire パッチ リリースで更新できます。
依存リソースで重大な破壊的変更が発生した場合、破壊的変更全体の更新を容易にするために、統合がバージョン依存パッケージに一時的に分割される可能性があります。 詳細については、そのような破壊的変更の最初の例 を参照してください。
公式インテグレーション
Aspire には、クラウドネイティブ アプリケーションの構築に役立つ多くの統合が用意されています。 これらの統合は、 Aspire AppHost およびクライアント ライブラリとシームレスに連携するように設計されています。 以下のセクションでは、クラウドに依存しない、Azure固有、アマゾン ウェブ サービス (AWS)、Community Toolkit の統合について詳しく説明します。
クラウドに依存しない統合
次のセクションでは、クラウドに依存しない Aspire の統合と、それぞれのドキュメントと NuGet パッケージへのリンクについて詳しく説明し、各統合について簡単に説明します。
Aspireでの Visual Studio 統合の使用の詳細については、Visual Studio ツールを参照してください。
Azure 統合
Azure 統合では、Azure リソースを使用するようにアプリケーションが構成されます。 これらのホスティング統合は、Aspire.Hosting.Azure.* NuGet パッケージで使用でき、クライアント統合は Aspire.* NuGet パッケージで使用できます。
アマゾン ウェブ サービス (AWS) ホスティング統合
| 統合ドキュメントと NuGet パッケージ | 説明 |
|---|---|
- ホスティング: 📦Aspire.Hosting.AWS - Client: N/A |
AWS リソース |
詳細については、「GitHub: Aspire」を参照してください。Hosting.AWS ライブラリ。
Kubernetes ホスティング統合
| 統合ドキュメントと NuGet パッケージ | 説明 |
|---|---|
|
-
詳細情報: 📄Kubernetes ホスティング - ホスティング: 📦Aspire.ホスティング。Kubernetes - Client: N/A |
Kubernetes .NET アプリケーション モデルからAspire配置マニフェストを生成するためのライブラリ。 |
Community Toolkit の統合
手記
Community Toolkit の統合は、コミュニティ主導であり、 Aspire コミュニティによって維持されます。 これらの統合は、 Aspire チームによって正式にサポートされていません。
| 統合ドキュメントと NuGet パッケージ | 説明 |
|---|---|
|
-
もっと詳しく: 📄 Bun ホスティング - ホスティング: 📦 CommunityToolkit。Aspire.Hosting.Bun - Client: N/A |
Bun アプリのホスティング統合。 |
- ホスティング: 📦 CommunityToolkit。Aspire.ホスティング。Deno - Client: N/A |
Deno アプリのホスティング統合。 |
|
-
詳細: 📄 ホスティングを開始 - ホスティング: 📦 CommunityToolkit。Aspire.Hosting.Golang - Client: N/A |
Go アプリのホスティング統合。 |
|
-
詳細を確認: 📄 Java/Spring ホスティング - ホスティング: 📦 CommunityToolkit。Aspire.Hosting.Java - Client: N/A |
ローカル JDK またはコンテナーを使用して、 Aspire で Java コードを実行するための統合。 |
|
-
詳細情報: 📄Node.js ホスティング拡張機能 - ホスティング: 📦 CommunityToolkit。Aspire.Hosting.NodeJs.Extensions - Client: N/A |
Node.js アプリケーションを実行するための追加の拡張機能を含む統合 |
|
-
詳しく見る: 📄 Ollama - ホスティング:📦 CommunityToolkit。Aspire.Hosting.Ollama - Client: 📦Aspire。CommunitToolkit.OllamaSharp |
Aspire コンテナーを利用する コンポーネントで、起動時にモデルをダウンロードできます。 |
|
-
詳細はこちら: 📄 Meilisearch ホスティング - ホスティング:📦 CommunityToolkit。Aspire.Hosting.Meilisearch - Client: 📦Aspire. CommunitToolkit.Meilisearch |
Aspire コンテナーを利用する コンポーネント。 |
|
-
詳細情報: 📄 Rust ホスティング - ホスティング: 📦 CommunityToolkit。Aspire.Hosting.Rust - Client: N/A |
Rust アプリのホスティング統合。 |
- ホスティング: 📦 CommunityToolkit。Aspire.Hosting.SqlDatabaseProjects - Client: N/A |
SQL Database プロジェクトの Aspire ホスティング統合。 |
|
-
詳細情報: 📄 RavenDB - ホスティング: 📦 CommunityToolkit.Aspire.Hosting.RavenDB - Client: 📦Aspire。CommunityToolkit.RavenDB.Client |
Aspire コンテナーを利用する コンポーネント。 |
詳細については、「 Aspire Community Toolkit」を参照してください。
Aspire