既存の .NET アプリにオーケストレーションを追加する方法

完了

.NET Aspireは、最新のクラウドネイティブアプリが直面する問題を3つに分類して解決することができます。 次のとおりです。

  1. マイクロサービス間のオーケストレーションの複雑さを管理。
  2. NuGet パッケージを使用して、マイクロサービスでコンポーネントを使用する方法を簡略化。
  3. ツールとテンプレートによる開発者の速度のサポート。

このユニットでは、.NET のAspire オーケストレーションを使用して、既存のクラウドネイティブ アプリにベネフィットをもたらす方法について説明します。 次に、.NET Aspire オーケストレーションにアプリを登録し、ソリューションに加えられた変更を確認する方法を確認します。

.NET Aspire オーケストレーションの利点

オーケストレーションは、クラウドネイティブ アプリ内のさまざまなサービスの調整と管理を行います。 .NET Aspire は、ソリューションのサービス検出、環境変数、コンテナー構成を管理するための抽象化を提供します。 これらの抽象化により、多くのコンポーネントとサービスを持つアプリ間で一貫したセットアップ パターンも提供されます。

.NET Aspire AppHost プロジェクトとアプリ内の他のサービスとの関係を示すダイアグラム。

.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 Aspire オーケストレーターのサポートがハイライトされた [追加] メニューのスクリーンショット。

ソリューションにオーケストレーションを初めて追加するときに、ダイアログでプロジェクト名の接頭辞が求められ、.NET の対象となる AppHost プロジェクトと ServiceDefaults プロジェクトが追加されることを通知します。 既に調整済みのソリューションにプロジェクトを追加すると、AppHost プロジェクトが更新され、それらのプロジェクトが含まれるようダイアログに通知されます。

新しいプロジェクトを作成する場合、新しいプロジェクト ワークフロー中に、Visual Studio から .NET Aspire オーケストレーションに登録するかどうかを確認するメッセージが表示されます。

[Aspire オーケストレーションに登録する] オプションが強調表示されている新しいプロジェクト ワークフローのスクリーンショット。

Aspireが既存のソリューションに対して行う変更

ソリューションに .NET Aspire オーケストレーションを追加すると、次の変更が行われます。

  • AppHost プロジェクトが追加されます。 プロジェクトにはオーケストレーション コードが含まれます。 これはアプリのエントリ ポイントになり、アプリの開始と停止を担当します。 また、サービスの検出と接続文字列の管理も行われます。
  • ServiceDefaults プロジェクトが追加されます。 このプロジェクトでは、OpenTelemetry を構成し、既定の正常性チェック エンドポイントを追加し、 HttpClient を通したサービス検出を有効にします。
  • ソリューションの既定のスタートアップ プロジェクトが AppHost に変更されます。
  • オーケストレーションに登録されているプロジェクトへの依存関係が AppHost プロジェクトに追加されます。
  • .NET Aspire ダッシュボードがソリューションに追加されると、ショートカットを使用してソリューション内のすべてのプロジェクト エンドポイントにアクセスできます。
  • ダッシュボードには、ソリューション内のプロジェクトのログ、トレース、メトリックを追加されます。

Web アプリ プロジェクトにオーケストレーションを追加すると、.NET Aspire によって ServiceDefaults プロジェクトへの参照が自動的に追加されます。 すると、Program.cs のコードに次の変更を加えられます。

  • 既定の OpenTelemetry、メーター、サービス検出を有効にする呼び出し AddServiceDefaults を追加します。
  • /health/alive などの既定のエンドポイントを有効にする呼び出し MapDefaultEndpoints を追加します。