本文由網友【Sky.楚子航】投稿
1. 了解.NET Aspire
.NET Aspire 是微軟推出的一個技術棧,旨在簡化雲端原生應用的開發與管理。以下是關於.NET Aspire 的詳細介紹:
定義與目的:
- .NET Aspire 是一個固定的雲端就緒技術棧,用於建置可觀察且生產就緒的分散式應用程式。
- 其主要目的是簡化雲端原生應用內各元素的協調與管理,協助開發者更有效率地使用.NET 建置雲端原生應用程式。
特點與優勢:
- .NET Aspire 提供了統一的專案格式與固定的技術棧,有助於減少開發人員在選擇和配置技術元件時的複雜性。
- 它包含一組針對雲端原生增強的精選元件,如服務探索、遙測、復原能力和健康狀態檢查等,這些功能都是雲端原生應用開發中的關鍵要素。
- .NET Aspire 還提供了豐富的 API 與工具,支援開發人員在分散式應用程式中表達資源與相依項目,進一步簡化了雲端原生應用的開發與維運工作。
與.NET 的關係:
- .NET Aspire 是基於.NET 平台建置的,它充分利用了.NET 的強大功能與生態系統。
- 作為.NET 的一部分,.NET Aspire 與.NET 8 及更高版本緊密整合,為開發者提供了從開發到部署的全流程支援。
發佈與可用性:
- 微軟在.NET 8 的預覽版中首次引入了.NET Aspire,並計劃將其作為.NET 8 正式版的一部分發佈。
- 開發者可以在.NET 8 的預覽版中嘗試使用.NET Aspire,並體驗其帶來的簡化與便捷性。
總的來說,.NET Aspire 是微軟為簡化雲端原生應用開發與管理而推出的一項重要技術,它充分利用了.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容器名稱,第二個是交換器名稱),app.RegisterRabbitmqEvent();來註冊服務:

3.3. 測試發送訊息
使用IEventBus發送訊息,目前僅支援 string/泛型資料(都會轉換成 json,後面再反序列化),publish 第一個參數是佇列名稱:

3.4. 定義處理類別
一定要定義在網站專案中(因為是透過反射網站專案取得全部的處理類別),繼承IEventJsonHandler/IEventStringHandler 分別實作就行。
一定要在處理類別上貼上 [event("XXX")],這個 attribute 用來指示接收哪個佇列資訊:


3.5. 完美接收訊息

4. 總結
使用就是這麼簡單,歡迎留言交流。
- 部落格園連結:https://www.cnblogs.com/SkyDuan/p/18169087