Aspire には、 監視可能な運用対応の分散アプリを構築するためのツール、テンプレート、パッケージが用意されています。 中央には アプリ モデルがあります。これは、アプリのサービス、リソース、接続を定義する 、コード優先の単一の信頼できるソース です。
Aspireでは、1 つのコマンドを使用してアプリ全体をローカルで起動およびデバッグし、同じコンポジションを使用して任意の場所 () をデプロイするKubernetesが提供されます。
拡張性はコア フォーカスです。 Aspireの API は、インフラストラクチャ、サービス、ワークフローにプラットフォームを適応できるように設計されています。
主要な機能
- AppHost オーケストレーション: コードでサービス、依存関係、および構成を定義します。
- 豊富な統合: 標準化されたインターフェイスを使用する一般的なサービス用の NuGet パッケージ。
- 一貫性のあるツール:Visual Studio、VS Code、CLI のプロジェクト テンプレートとエクスペリエンス。
公式サポート情報については、 Aspire サポート ポリシーを参照してください。
The AppHost
Aspire's AppHost は、コード内でアプリのサービスと依存関係を定義する場所です。複雑な構成ファイルは必要ありません。 AppHost は、サービスの検出、環境変数、コンテナー構成の管理を簡素化することで、ローカル開発環境のオーケストレーションを提供します。
一般的な 3 層アーキテクチャを示します。フロントエンドは、データベースに接続する API に依存します。 Aspireでは、次のコードに示すように、このトポロジは AppHost で表されます。
var builder = DistributedApplication.CreateBuilder(args);
// Add database service
var postgres = builder.AddPostgres("db")
.AddDatabase("appdata")
.WithDataVolume();
// Add API service and reference dependencies
var api = builder.AddProject<Projects.ApiService>("api")
.WithReference(postgres)
.WaitFor(postgres);
// Add frontend service and reference the API
var frontend = builder.AddProject<Projects.Frontend>("frontend")
.WithReference(api);
builder.Build().Run();
AppHost は、次の懸念事項を支援します。
- アプリの構成: アプリケーションを構成するプロジェクト、コンテナー、実行可能ファイル、クラウド リソースを指定します。
- サービスの検出と接続文字列の管理: 適切な接続文字列とネットワーク構成を自動的に挿入します。
Aspireのオーケストレーションは、ローカル開発エクスペリエンスの向上に重点を置いています。 Kubernetesなどの運用システムを置き換えることを意図したものではなく、開発中に低レベルの実装の詳細を排除する抽象化が提供されます。
詳細については、オーケストレーションの概要Aspire参照してください。
Aspire 統合
Aspire を使用すると、統合を使用してアプリに必要なすべてのものを簡単に定義できます。NuGet パッケージは、一般的なサービスとプラットフォームへの接続を簡素化するように設計されています。 各統合は、クラウド リソースのセットアップを処理し、正常性チェック、テレメトリ、および構成の標準化されたパターンを提供します。
統合できるリソースは次のとおりです。
- AI サービス: 大規模言語モデル、AI エンドポイント、コグニティブ サービス。
- キャッシュ: Redis、メモリ内キャッシュ、分散キャッシュ ソリューション。
- コンテナー: データベース、メッセージ ブローカー、およびその他のサービス用のコンテナーを Docker します。
- データベース: SQL Server、 PostgreSQL、 MySQL、 MongoDB、およびその他のデータ ストア。
- 実行可能ファイル: コンソール アプリケーション、スクリプト、およびバックグラウンド サービス。
- フレームワーク: さまざまなフレームワークで構築された Web アプリケーション、API、マイクロサービス。
- メッセージング サービス: Azure Service Bus、 RabbitMQ、Kafka、およびその他のメッセージング システム。
- プロジェクト: .NET プロジェクト、 Node.js アプリケーション、 Python サービスなど。
- ストレージ: BLOB ストレージ、ファイル システム、クラウド ストレージ サービス。
統合には 2 種類あります。"ホスト型" 統合は接続するサービスを表し、"クライアント" 統合はそのサービスを利用するコンシューマーを表します。
Tip
内部的には、 ホスティング統合 は、コンテナー、実行可能ファイル、または別のプロセスを実行せずにリソースを構成する C# コードのみを表すことができます。 任意のコンテナー イメージ、コードベース、スクリプト、またはクラウド リソースを AppHost に追加できます。 再利用可能な Aspire 統合の作成は、アプリの再利用可能なコンポーネントを構築するのと似ています。
Aspire ダッシュボードを使用した監視とトラブルシューティング
Aspire には、分散アプリをリアルタイムで表示できる強力な開発者ダッシュボードが含まれています。 ダッシュボードを使用すると、リソースの検査、ログ、トレース、メトリックの表示、アプリのサービスの管理をすべて 1 つの UI から行うことができます。
Aspire アプリを実行すると、ダッシュボードが自動的に起動します。 次のようにすることができます。
- アプリのすべてのリソースとその状態を表示します。
- 任意のサービスのログ、トレース、メトリックを詳しく調べます。
- ダッシュボードから直接リソースを開始、停止、または再起動します。
- 依存関係を視覚化し、問題のトラブルシューティングを迅速に行います。
ダッシュボードは、Aspire ソリューションの一部として、またはデータを出力する任意のアプリのOpenTelemetryとして使用できます。
詳細については、 ダッシュボードの概要を参照するか、ダッシュボードの 機能と使用状況について詳しく説明します。
開発からデプロイまで
Aspireの AppHost で分散アプリを作成するときは、ローカル開発用のサービスを定義するだけでなく、デプロイの基盤を設定します。 ローカルでの実行とデバッグに使用するのと同じ構成が運用環境のデプロイのブループリントになり、開発から運用までの一貫性が確保されます。
Aspire は、お気に入りの開発環境用のプロジェクト テンプレートとツール エクスペリエンスを提供します。 これらのテンプレートには、意見に基づいた既定値が含まれており、正常性チェック、ログ記録、テレメトリの定型コードが含まれます。 テンプレートには、一般的な構成を処理するサービスの既定値も含まれています。
builder.AddServiceDefaults();
C# コードに追加すると、次の構成が行われます。
- OpenTelemetry: ASP Core、gRPC、HTTP のフォーマットされたログ記録、ランタイムメトリック、トレース。
- 正常性チェック: ツールがクエリを実行してアプリを監視できる既定のエンドポイント。
- サービス検出: サービスの検出を有効にし、それに応じて HttpClient を構成します。
詳細については、サービスの既定値Aspire参照してください。
3 層アーキテクチャの例をさまざまな環境にデプロイする方法を考えてみましょう。
Resource | ローカル開発 | Azure | AWS |
---|---|---|---|
Frontend | npm run |
Azure Container Apps | Amazon Elastic Container Service |
API サービス | dotnet run |
Azure Container Apps | AWS Lambda |
Database | docker.io/library/postgres |
Azure データベース PostgreSQL | Amazon リレーショナル データベース サービス |
Tip
これらは、 Aspire アプリをデプロイする方法の例です。
Aspireのデプロイ機能は柔軟であり、既存のワークフローに干渉しません。 AppHost で定義されている一貫性のあるアプリ トポロジの恩恵を受けながら、お好みのツールとサービスを引き続き使用できます。
詳細については、「Aspire アプリのデプロイ」を参照してください。
次のステップ
Aspire