本稿はネットユーザー【Sky.楚子航】より寄稿されました
1. .NET Aspire について
.NET Aspire は、Microsoft が提供するテクノロジースタックであり、クラウドネイティブアプリケーションの開発と管理を簡素化することを目的としています。以下に .NET Aspire の詳細を紹介します。
定義と目的:
- .NET Aspire は、観測可能かつ本番環境に対応した分散アプリケーションを構築するための、クラウド対応の固定テクノロジースタックです。
- 主な目的は、クラウドネイティブアプリケーション内の各要素の調整と管理を簡素化し、開発者が .NET を使用してクラウドネイティブアプリケーションをより効率的に構築できるようにすることです。
特徴と利点:
- .NET Aspire は統一されたプロジェクト形式と固定テクノロジースタックを提供し、開発者が技術コンポーネントを選択・構成する際の複雑さを軽減します。
- サービス検出、テレメトリー、回復力、ヘルスチェックなど、クラウドネイティブ開発に不可欠な機能を備えた、厳選されたコンポーネント群が含まれています。
- .NET Aspire は分散アプリケーション内でリソースと依存関係を表現するための豊富な API とツールも提供し、クラウドネイティブアプリケーションの開発と運用をさらに簡素化します。
.NET との関係:
- .NET Aspire は .NET プラットフォーム上に構築されており、.NET の強力な機能とエコシステムを最大限に活用しています。
- .NET の一部として、.NET Aspire は .NET 8 以降と緊密に統合され、開発からデプロイまでの全プロセスをサポートします。
リリースと利用可能性:
- Microsoft は .NET 8 のプレビュー版で初めて .NET Aspire を導入し、.NET 8 の正式リリースの一部として公開する予定です。
- 開発者は .NET 8 のプレビュー版で .NET Aspire を試用し、その簡素化と利便性を体験できます。
要するに、.NET Aspire は Microsoft がクラウドネイティブアプリケーションの開発と管理を簡素化するために提供する重要なテクノロジーであり、.NET プラットフォームの利点を活用して、開発者に効率的で統一されたソリューションを提供します。
2. 本稿の背景
私は preview1 から preview6(現時点最新 2024/5/1)まで一貫して使用してきました。最初のバージョンで既に私のマイクロサービスの一つに導入し(https://gitee.com/SkyNingDuan/PublicActivityServices.git)、継続的にアップデートしてきました。
その中で、外部の RabbitMQ を使用してマイクロサービスにメッセージを渡していました(Zack.EventBus を使用)。しかし、Aspire 経由で RabbitMQ コンテナを作成してプロジェクト内で直接利用する方法がずっと存在しており、楊中科先生のフレームワークを参考に、Aspire 環境下で動作する EventBus を開発したいと考えていました(すでに既存のものがあるため、快適ゾーンから抜け出せずにいました)。最終的に自己葛藤を繰り返した末、SimpleUseAspireRabbitmq の初版を開発しました。機能はシンプルで使いやすく、皆さんの関心が高ければ、今後機能を追加していく予定です。新しい技術を積極的に取り入れていただき、問題があれば issue でやり取りしてください。ソースコードは https://github.com/skyDuanXianBing/SimpleUseAspireRabbitMQ.git、NuGet パッケージ名は SimpleUseAspireRabbitMQ です(現時点では Aspire もプレビュー版のため、これもプレビュー版であり、今後の改善に合わせて追従します)。
3. 使用チュートリアル
3.1. Aspire プロジェクトの作成
aspire.host に Aspire.Hosting.RabbitMQ パッケージをインストールし、program.cs で RabbitMQ コンテナを作成します。そして、RabbitMQ を使用するプロジェクトの後ろに WithReference で RabbitMQ コンテナを指定します:

3.2. サービスの登録
RabbitMQ を使用するプロジェクトの program.cs で、それぞれ builder.EventConfiguration("rabbitmq", "myexchange");(最初の引数は RabbitMQ コンテナ名、2番目は交換機名)と app.RegisterRabbitmqEvent(); を追加してサービスを登録します:

3.3. メッセージ送信のテスト
IEventBus を使ってメッセージを送信します。現在は string / ジェネリックデータのみ対応しています(いずれも JSON に変換され、その後デシリアライズされます)。publish の最初の引数はキュー名です:

3.4. 処理クラスの定義
必ず Web プロジェクト内に定義してください(リフレクションで Web プロジェクトの全処理クラスを取得するため)。IEventJsonHandler / IEventStringHandler を継承し、それぞれ実装します。
処理クラスには必ず [event("XXX")] 属性を付与してください。この属性は、どのキューの情報を受信するかを指定します:


3.5. メッセージの正常受信

4. まとめ
使用方法はこれだけ簡単です。ご質問があればお気軽にコメントください。
- ブログ園リンク:https://www.cnblogs.com/SkyDuan/p/18169087