一、了解.NET Aspire
.NET Aspire(https://learn.microsoft.com/en-us/dotnet/aspire/get-started/aspire-overview) 是微軟推出的一個技術棧,旨在簡化雲原生套用的開發和管理。
以下是關於.NET Aspire的詳細介紹:
1、定義與目的
.NET Aspire是一個固定的雲端就緒技術棧,它用於構建可觀察且生產就緒的分布式應用程式。
其主要目的是簡化雲原生套用內各元素的協調和管理,幫助開發者更高效地使用.NET構建雲原生應用程式。
2、特點與優勢
.NET Aspire提供了統一的計畫格式和固定的技術棧,這有助於減少開發人員在選擇和配置技術元件時的復雜性。
它包含一組針對雲原生增強的精選元件,如服務發現、遙測、復原能力和執行狀況檢查等,這些功能都是雲原生套用開發中的關鍵要素。
.NET Aspire還提供了豐富的API和工具,支持開發人員在分布式應用程式中表達資源和依賴項,進一步簡化了雲原生套用的開發和運維工作。
3、與.NET的關系
.NET Aspire是基於.NET平台構建的,它充分利用了.NET的強大功能和生態系。
作為.NET的一部份,.NET Aspire與.NET 8及更高版本緊密整合,為開發者提供了從開發到部署的全流程支持。
4、釋出與可用性
微軟在.NET 8的預覽版中首次引入了.NET Aspire,並計劃將其作為.NET 8正式版的一部份釋出。
開發者可以在.NET 8的預覽版中嘗試使用.NET Aspire,並體驗其帶來的簡化和便捷性。
總的來說,.NET Aspire是微軟為簡化雲原生套用開發和管理而推出的一項重要技術,它充分利用了.NET平台的優勢,為開發者提供了一種高效、統一的解決方案。
二、本文背景
從preview1 - preview6(目前最新 2024/5/1) 一直都有使用,在第一版的時候我就用它放入了我的一個微服務
https://gitee.com/SkyNingDuan/PublicActivityServices.git,一直叠代更新。
在其中,我一直使用外部RabbitMQ的方式給我的微服務傳遞訊息(用的是Zack.EventBus(https://www.nuget.org/packages/Zack.EventBus),但是它一直有直接透過Aspire方式建立RabbitMQ 容器在你的計畫中使用, 我一直想著用楊中科老師的框架為指導,開發一個在Aspire環境下的EventBus, 但是一直拖著(已經有現成的了,就一直不想走出舒適區)
最後經過不斷的自我抗爭,simpleUseAspireRabbitmq第一版開發好了,功能比較簡單,也比較好用,如果大家熱情高的話, 後面再加便是。
歡迎大家擁抱新技術,有任何問題都可以提issue互動
原始碼地址
https://github.com/skyDuanXianBing/SimpleUseAspireRabbitMQ.git
NuGet名稱SimpleUseAspireRabbitMQ
https://www.nuget.org/packages/SimpleUseAspireRabbitMQ/
目前由於Aspire 也是處於預覽版,所以這個也是預覽版,後面有任何改進也會跟進的。
三、使用教程
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、完美接收訊息
四、總結
透過使用 .NET Aspire,開發者可以獲得構建雲原生和分布式套用所需的工具和庫,從而能夠更快速、更可靠地開發高品質的套用。
這些工具和庫可能包括用於服務發現的工具、用於處理分布式事務的庫、用於監控和日誌記錄的元件等。透過使用這些工具,開發者可以專註於實作業務邏輯,而無需擔心底層的雲原生和分布式問題。
使用就是這麽簡單,歡迎留言交流。
- EOF -
推薦閱讀 點選標題可跳轉
看完本文有收獲?請轉發分享給更多人
推薦關註「DotNet」,提升.Net技能
點贊和在看就是最大的支持❤️