分享程式代碼相關筆記
目前文章總數:157 篇
最後更新:2024年 12月 07日
進入官方文件後,可以看到概述的地方如下:
.NET Aspire is an opinionated, cloud ready stack for building observable, production ready, distributed applications. .NET Aspire is delivered through a collection of NuGet packages that handle specific cloud-native concerns. Cloud-native apps often consist of small, interconnected pieces or microservices rather than a single, monolithic code base. Cloud-native apps generally consume a large number of services, such as databases, messaging, and caching.
A distributed application is one that uses computational resources across multiple nodes, such as containers running on different hosts. Such nodes must communicate over network boundaries to deliver responses to users. A cloud-native app is a specific type of distributed app that takes full advantage of the scalability, resilience, and manageability of cloud infrastructures.
大意如下,也是其核心優點:
習慣取代配置 | : | .NET Aspire 透過一系列 NuGet 套件,預先處理了許多雲原生應用的需求,讓開發者專注於應用開發而非配置。。 |
提供觀察性 | : | 開發者可以輕鬆觀察並追蹤應用程式中使用的相依服務(如資料庫、訊息佇列、快取等),這些服務可以根據實際需要定義為大小不同的微服務。 |
未來可擴充性 | : | .NET Aspire 支持可擴展的架構,讓應用程式可以隨業務需求增長並進行橫向擴展。 |
管理便利性 | : | 該平台旨在簡化開發者對分散式應用的管理,使其更易於維護、監控和操作,特別是在雲端環境中。 |
官方先決條件,補充資訊,整理成以下:
1. 需要安裝 NET 8.0 |
2. .NET Aspire SDK |
3. 安裝 Visual Studio 2022 需要更新到 17.10.0 以上 |
4. Windows 系統內需要有 Windows Dcoker Desktop 或者 Podman 相關開發時可運行的容器化。 |
5. 基於第 4. Windows 10/11 專業、企業版以上(才支援 Windows Docker Desktop) |
6. 啟用虛擬化技術 Hyper-V 、WSL 2 並且 16G 記憶體以上(若用 Visual Studio 開發,可能 32G 以上才適合開發) |
※ Hyper-V 使用於 Windows To Container
※ WSL 2 使用於 Linux To Container
若開發環境缺少以下,會有無法啟動使用的限制:
項目 | 原因 |
---|---|
1. 硬體資源不足、CPU、Memory 低規格 | Aspire 隨著整入專案觀察的微服務愈多,耗費資源會愈大,導致無法正常啟動 |
2. 確定服務是否支援 | .Net Aspire 持續開發中,熱門如 Mysql、Redis 都會有 Aspire Nuget套件。但某些服務(如日誌相關的服務)尚未開發 |
3. 小型專案 | 專案規模過小,使用 .NET Aspire 可能沒有必要,反而增加複雜度及資源浪費。 |
開始使用後,未來開發者,都可以啟動 Aspire.Host 啟動專案 (此為官方範例專案)
啟動後,都會進入 DashBoard 顯示此專案有關的可用資源,並且可以直接訪問 (對應 launchSettings.json)
開啟 Visual Studio 2022 後,若已安裝 17.10.0 以上的版本,可以看到可用套件增加了 .NET Aspire
接著選擇 .NET Aspire 應用程式主機 。然後下一步,新建完成專案。
空專案只會有基本的 Aspire.Hosting 與基本配置。
如圖,將自己的 Asp.net Core 相關專案引入
※專案來源:0075. 架設檔案伺服器 - 高性能的物件存儲系統 - MinIO (開源、高速、免費)
對 Aspire 空專案,滑鼠右鍵 -> 加入 -> 現有專案
將對應的 .csproj 檔案加入
加入後預期如下:
對已加入的專案,滑鼠右鍵 -> 加入 -> .NET Aspire Orchestrator 支援…
出現提示,選擇確定
Visual Studio 預設為 Aspire 專案,進行啟動
啟動後可以看到現有專案的狀態,並且已經綁定。
※如果在生產環境上,就能提供 IT 人員有入口可觀察服務的運行狀態,以及此專案所有相依的服務有哪些。
此外,Aspire 會依照綁定專案的 Appsetting.json,當選擇檢視,會出現此專案的更多資訊。
並且提供便捷可瀏覽的 URL (因為此專案為 Web)
Aspire 專案,滑鼠右鍵 -> 加入 -> .NET 目標套件…
選擇 Aspire.Hosting.Redis 安裝此套件
開啟 Aspire 專案的 Program.cs 檔案,輸入以下:
var redis = builder.AddRedis("RedisDb").PublishAsContainer();
啟動後,可能會出現錯誤
這是因為 Aspire 不支援 Windows Docker Desktop 的 Windows 模式
需切換成 Linux 模式。
可以看到 Redis 容器會自動啟用,在沒有配置自己的 ConnectionStrings 情況下,也會為開發提供預設的 Redis 使用
打開 Redis 工具,也可確認容器執行時,也都可正常連線使用
Aspire 專案,滑鼠右鍵 -> 加入 -> .NET 目標套件…
選擇 Aspire.Hosting.MysSql 安裝此套件
開啟 Aspire 專案的 Program.cs 檔案,輸入以下:
var mysql = builder.AddMySql("MysqlDb");
可以看到 Mysql 容器會自動啟用,在沒有配置自己的 ConnectionStrings 情況下,也會為開發提供預設的 Mysql Database
Aspire 的優點除了會分析 Appsettings.json 外,也會分析 Container 內的連線字串。
選擇檢視 -> 打開密碼檢視(眼睛) -> 可以得到連 Mysql 容器的密碼
使用自己熟悉的 Mysql UI 工具 (此圖為 HeidiSQL),嘗試連線
也可確認容器執行時,也都可正常連線 MySql 資料庫。
※ .NET Aspire 可以優化開發體驗,解決環境問題,但以目前來說還有很多服務需實現。(MinIO 是很大的服務,但 Aspire 亦開發中)