既存の .NET アプリにオーケストレーションを追加する方法
.NET Aspireは、最新のクラウドネイティブアプリが直面する問題を3つに分類して解決することができます。 次のとおりです。
- マイクロサービス間のオーケストレーションの複雑さを管理。
- NuGet パッケージを使用して、マイクロサービスでコンポーネントを使用する方法を簡略化。
- ツールとテンプレートによる開発者の速度のサポート。
このユニットでは、.NET のAspire オーケストレーションを使用して、既存のクラウドネイティブ アプリにベネフィットをもたらす方法について説明します。 次に、.NET Aspire オーケストレーションにアプリを登録し、ソリューションに加えられた変更を確認する方法を確認します。
.NET Aspire オーケストレーションの利点
オーケストレーションは、クラウドネイティブ アプリ内のさまざまなサービスの調整と管理を行います。 .NET Aspire は、ソリューションのサービス検出、環境変数、コンテナー構成を管理するための抽象化を提供します。 これらの抽象化により、多くのコンポーネントとサービスを持つアプリ間で一貫したセットアップ パターンも提供されます。
.NET Aspire には、オーケストレーションでサポートされる 3 つの基本コンピューティングの種類があります。
- ProjectResource:.NET プロジェクト (ASP.NET Core Web アプリなど)。
- ContainerResource:Redis を含む Docker イメージなどのコンテナー イメージ。
- ExecutableResource:実行可能ファイル。
.NET Aspire と Docker Compose を使用してサービス検出を管理する方法を比較します。 Docker Compose は優れていますが、複数のプロジェクトや実行ファイルを実行する場合、あまり生産的ではありません。 コンテナー イメージをビルドし、YAML を作成して接続してから、コンテナー内でアプリを実行する必要があります。 また、環境変数の置換 (および組み込み) があり、IntelliSense がないため、正確に実行されている内容とその理由を判断するのは困難です。 デバッグも困難な場合があります。
宣言型コードを使用した構成の方が優れています。 .NET Aspire を使用すると、既に知っていることを超えて何も学ぶ必要はありません。 .NET Aspire は、実際のプログラミング言語を使用して Docker Compose などのオーケストレーターを使い始め、スケールアップするのが簡単な、より優れたエクスペリエンスです。
.NET Aspire オーケストレーションでは、次の方法で開発もサポートされています。
- アプリの構成: .NET Aspire は、アプリケーションを構成する .NET プロジェクト、コンテナー、実行可能ファイル、クラウド リソースなどを指定します。
- サービスの検出と接続文字列の管理:アプリ ホストは、開発者エクスペリエンスを簡素化するために、適切な接続文字列とサービス検出情報の挿入を管理します。
.NET Aspire オーケストレーションに既存のアプリを登録する
Visual Studio には、.NET Aspire オーケストレーションに既存のプロジェクトを登録するメニューが用意されています。
ソリューションにオーケストレーションを初めて追加するときに、ダイアログでプロジェクト名の接頭辞が求められ、.NET の対象となる AppHost プロジェクトと ServiceDefaults プロジェクトが追加されることを通知します。 既に調整済みのソリューションにプロジェクトを追加すると、AppHost プロジェクトが更新され、それらのプロジェクトが含まれるようダイアログに通知されます。
新しいプロジェクトを作成する場合、新しいプロジェクト ワークフロー中に、Visual Studio から .NET Aspire オーケストレーションに登録するかどうかを確認するメッセージが表示されます。
Aspireが既存のソリューションに対して行う変更
ソリューションに .NET Aspire オーケストレーションを追加すると、次の変更が行われます。
- AppHost プロジェクトが追加されます。 プロジェクトにはオーケストレーション コードが含まれます。 これはアプリのエントリ ポイントになり、アプリの開始と停止を担当します。 また、サービスの検出と接続文字列の管理も行われます。
- ServiceDefaults プロジェクトが追加されます。 このプロジェクトでは、OpenTelemetry を構成し、既定の正常性チェック エンドポイントを追加し、
HttpClient
を通したサービス検出を有効にします。 - ソリューションの既定のスタートアップ プロジェクトが AppHost に変更されます。
- オーケストレーションに登録されているプロジェクトへの依存関係が AppHost プロジェクトに追加されます。
- .NET Aspire ダッシュボードがソリューションに追加されると、ショートカットを使用してソリューション内のすべてのプロジェクト エンドポイントにアクセスできます。
- ダッシュボードには、ソリューション内のプロジェクトのログ、トレース、メトリックを追加されます。
Web アプリ プロジェクトにオーケストレーションを追加すると、.NET Aspire によって ServiceDefaults プロジェクトへの参照が自動的に追加されます。 すると、Program.cs のコードに次の変更を加えられます。
- 既定の OpenTelemetry、メーター、サービス検出を有効にする呼び出し
AddServiceDefaults
を追加します。 /health
や/alive
などの既定のエンドポイントを有効にする呼び出しMapDefaultEndpoints
を追加します。