.NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

張傳寧發表於2021-06-25

開源專案是眾多組織與個人分享的元件或專案,作者付出的心血我們是無法體會的,所以首先大家要心存感激、尊重。請嚴格遵守每個專案的開源協議後再使用。尊重智慧財產權,共建和諧開源社群。

 

如果表述不恰當的地方,請及時告知我,謝謝。

9、Furion【國產,入選GVP】

Furion專案的作者【富察巨集磊】是一位90後的優秀IT人才。

Furioin 是一款基於.NET5技術開發的功能強大、效能極致、文件完善、示例豐富、極易入門、快速開發、極易維護的Web框架。

功能模組

.NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

框架特點

  • 全新面貌:基於 .NET 5 平臺,沒有歷史包袱
  • 極易入門:只需要一個 Inject() 即可完成配置
  • 極速開發:內建豐富的企業應用開發功能
  • 極少依賴:框架只依賴兩個第三方包
  • 極其靈活:輕鬆面對多變複雜的需求
  • 極易維護:採用獨特的架構思想,只為長久維護設計
  • 完整文件:提供完善的開發文件

文件地址

開源地址

 系列教程

支援平臺

  • 執行環境
    • Windows
    • Linux
    • MacOS
    • Docker/K8S/K3S/Rancher
    • Xamarin/MAUI
  • 資料庫
    • SqlServer
    • Sqlite
    • Azure Cosmos
    • MySql
    • MariaDB
    • PostgreSQL
    • InMemoryDatabase
    • Oracle
    • Firebird
    • 達夢資料庫
    • MongoDB
  • 應用部署
    • Kestrel
    • Nginx
    • Jexus
    • IIS
    • Apache
    • PM2
    • Supervisor
    • 獨立釋出/單檔案
    • 容器(Docker/K8S/K3S/Rancher)

作者的其他優秀開源專案

  • https://gitee.com/monksoul
  • https://github.com/monksoul

.NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

 

基於Furion的開源案例

  • Admin.NET:基於 Furion 的通用許可權管理平臺。
  • 考試君:基於 Furion 的線上考試系統
  • 園丁:基於 Furion + Blazor 的超簡單後臺管理系統
  • Queer:基於 Furion + Layui 的通用型管理系統
  • Pear Admin:基於 Furion + PearAdmin 管理系統
  • JoyAdmin:基於 Furion + iviewadmin 開發的管理系統
  • YShop:基於 Furion + Vue 開發的移動電商專案
8、攜程 Apollo

.NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

Apollo(阿波羅)是攜程框架部門研發的分散式配置中心,能夠集中化管理應用不同環境、不同叢集的配置,配置修改後能夠實時推送到應用端,並且具備規範的許可權、流程治理等特性,適用於微服務配置管理場景。

服務端基於Spring Boot和Spring Cloud開發,打包後可以直接執行,不需要額外安裝Tomcat等應用容器。

Java客戶端不依賴任何框架,能夠執行於所有Java執行時環境,同時對Spring/Spring Boot環境也有較好的支援。

.Net客戶端不依賴任何框架,能夠執行於所有.Net執行時環境,參考《.Net客戶端使用指南》

更多產品介紹參見Apollo配置中心介紹

本地快速部署請參見Quick Start

.NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

產品特性

  • 統一管理不同環境、不同叢集的配置

    • Apollo提供了一個統一介面集中式管理不同環境(environment)、不同叢集(cluster)、不同名稱空間(namespace)的配置。
    • 同一份程式碼部署在不同的叢集,可以有不同的配置,比如zk的地址等
    • 通過名稱空間(namespace)可以很方便的支援多個不同應用共享同一份配置,同時還允許應用對共享的配置進行覆蓋
    • 配置介面支援多語言(中文,English)
  • 配置修改實時生效(熱釋出)

    • 使用者在Apollo修改完配置併發布後,客戶端能實時(1秒)接收到最新的配置,並通知到應用程式。
  • 版本釋出管理

    • 所有的配置釋出都有版本概念,從而可以方便的支援配置的回滾。
  • 灰度釋出

    • 支援配置的灰度釋出,比如點了釋出後,只對部分應用例項生效,等觀察一段時間沒問題後再推給所有應用例項。
  • 許可權管理、釋出稽核、操作審計

    • 應用和配置的管理都有完善的許可權管理機制,對配置的管理還分為了編輯和釋出兩個環節,從而減少人為的錯誤。
    • 所有的操作都有審計日誌,可以方便的追蹤問題。
  • 客戶端配置資訊監控

    • 可以方便的看到配置在被哪些例項使用
  • 提供Java和.Net原生客戶端

    • 提供了Java和.Net的原生客戶端,方便應用整合
    • 支援Spring Placeholder,Annotation和Spring Boot的ConfigurationProperties,方便應用使用(需要Spring 3.1.1+)
    • 同時提供了Http介面,非Java和.Net應用也可以方便的使用
  • 提供開放平臺API

    • Apollo自身提供了比較完善的統一配置管理介面,支援多環境、多資料中心配置管理、許可權、流程治理等特性。
    • 不過Apollo出於通用性考慮,對配置的修改不會做過多限制,只要符合基本的格式就能夠儲存。
    • 在我們的調研中發現,對於有些使用方,它們的配置可能會有比較複雜的格式,如xml, json,需要對格式做校驗。
    • 還有一些使用方如DAL,不僅有特定的格式,而且對輸入的值也需要進行校驗後方可儲存,如檢查資料庫、使用者名稱和密碼是否匹配。
    • 對於這類應用,Apollo支援應用方通過開放介面在Apollo進行配置的修改和釋出,並且具備完善的授權和許可權控制
  • 部署簡單

    • 配置中心作為基礎服務,可用性要求非常高,這就要求Apollo對外部依賴儘可能地少
    • 目前唯一的外部依賴是MySQL,所以部署非常簡單,只要安裝好Java和MySQL就可以讓Apollo跑起來
    • Apollo還提供了打包指令碼,一鍵就可以生成所有需要的安裝包,並且支援自定義執行時引數

Gitee地址:https://gitee.com/lepdou/apollo

7、輕量級配置中心AgileConfig

基於.NetCore開發的輕量級(相對Apollo而言)配置中心,部署簡單、配置簡單,使用簡單,可以根據個人或者公司需求採用。

  • 部署簡答,最少只需要一個資料節點,支援docker部署
  • 支援多節點分散式部署來保證高可用
  • 配置支援按照應用隔離,應用內配置支援分組隔離
  • 使用長連結技術,配置資訊實時推送到客戶端
  • 支援IConfiguration、IOptions模式讀取配置,原程式幾乎不用改造
  • 配置修改支援版本記錄,隨時回滾配置
  • 所有所有節點都故障,客戶端支援從本地快取讀取配置

.NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

配置完成後即可進入系統

.NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

GitHub地址:https://github.com/kklldog/AgileConfig 

GitHub中文文件:https://github.com/kklldog/AgileConfig/blob/master/README_CN.md

開發作者的文章:https://www.cnblogs.com/kklldog/p/agile-config.html

參考部落格:https://mp.weixin.qq.com/s/Cah7GgpkDa5XJxfLM_7Z8A

6、基於ASP.NET Core構建可熱插拔的外掛化系統

外掛化架構,又稱微核架構,指的是軟體的核心相對較小,主要功能和業務邏輯都通過外掛實現的架構。

外掛化架構一般有兩個核心概念:

  • 核心
  • 外掛

核心通常只包含系統執行的最小功能,以及定義外掛必須符合的介面;外掛則是互相獨立的模組,一般只包含單一的功能。

外掛化技術並不是一個新興的技術,早期很多基於COM開發的WIN32程式其實都是外掛化的系統。在.NET/.NET Core中,也有許多外掛化的實現方案,例如,開源框架ABP, 開源的內容管理系統DotNetNuke, 電子商務框架NopCommerce。

 .NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

《.NET Conf 2020 - 基於ASP.NET Core構建可熱插拔的外掛化系統》
作者:Lamond Lu
專案地址:https://github.com/lamondlu/CoolCat
部落格:http://www.cnblogs.com/lwqlun

《從零開始實現 ASP.NET Core MVC 的外掛式開發》系列部落格:https://mp.weixin.qq.com/s/uOtvUHkCoMu8cpnsjX4Gpg

5、eShopOnWeb

eShopOnWeb 是微軟官方基於 ASP.NET Core 5.0 構建的一個示例專案,其主要目的是:

  • 推廣ASP.NET Core
  • 指導利用ASP.NET Core如何進行架構設計
  • 普及架構設計思想

eShopOnWeb 與另外一個eShopOnContainers互相補充。eShopOnContainers是基於微服務和容器技術的應用程式架構,支援多重部署。而eShopOnWeb相較於它就簡單的多,其是基於傳統Web應用開發,僅支援單一部署。

eShopOnWeb 應用了DDD和整潔架構的部分思想。

開源地址:https://github.com/dotnet-architecture/eShopOnWeb

電子書:https://docs.microsoft.com/zh-cn/dotnet/architecture/modern-web-apps-azure

.NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

4、eShopOnContainers

  eShopOnContainers是微軟官方出品,執行在Linux、Windows和macOS上的跨平臺.NET微服務示例和基於容器的應用程式。由.NET5、Docker容器和Azure Kubernetes服務提供支援。

  簡單來說:eShopOnContainers 是一個簡化版的基於.NET Core 和 Docker 等技術開發的面向微服務架構的參考應用。

  雖然是簡化版的微服務參考示例,但對沒接觸過Docker、DDD、微服務的開發者來說,並不簡單。其中不僅包含了很多術語、設計模式、架構風格,還使用了一系列的常見技術(RabbitMQ、EventBus、IdentityServer4、Polly、Api Gateway、Redis、CQRS、CAP、CI/CD等),還有一些相關工具(Docker、K8S等)。所以這將是一個難啃的骨頭。

  eShopOnContainers作為跨平臺的微服務架構,得益於.NET Core 能夠在 Linux 或 Windows 容器上執行。其包含基於瀏覽器的Web應用、基於Xamarin的Android、IOS、Windows/UWP 移動應用,以及服務端應用。其中服務端包含多個自治微服務(每個都擁有自己的資料/ db),並且每個微服務都有不同的實現形式(簡單的CRUD與DDD / CQRS模式)。使用Http作為客戶端應用程式之間的通訊協議。支援非同步通訊,使用Integration Events(整合事件)和Event Bus(事件匯流排)進行資料更新傳播。

系統架構圖

.NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

從上圖可知,該架構主要包括兩個部分:客戶端應用和Docker主機中執行的服務端應用。

  1. 客戶端應用:基於瀏覽器的Web應用;基於Xamarin開發的Android、IOS、UWP移動應用。
  2. 服務端應用:部署在在Doker主機的系列微服務。

其中服務端主要包括六大微服務:

  1. Identity Micsroservice(身份微服務):用於身份認證和授權。使用SQL Server資料庫。
  2. Catalog microservice(產品目錄微服務):用於產品資料的維護。使用SQL Server資料庫。
  3. Ordering microservice(訂單微服務):用於訂單邏輯的處理。使用SQL Server資料庫。
  4. Basket microservice(購物車微服務):用於購物車邏輯的處理。使用Redis資料庫。
  5. Marketing microservice(市場營銷微服務):用於市場營銷邏輯的處理。使用MongoDB/CosmosDB 和SQL Server資料庫。
  6. Locations microservice (位置微服務):用於提供位置服務。使用MongoDB/CosmosDB 資料庫。
  7. [New] Payment microservice (支付微服務):用於處理支付邏輯。

另外從上圖我們還可以清晰看出其通訊架構

  1. 客戶端與微服務通過API閘道器通訊:用於查詢和接收來自客戶端應用程式的更新或事務命令。
  2. 非同步事件通訊:通過事件匯流排傳播來自微服務的更新或與外部應用程式整合。事件匯流排可使用任何訊息代理架構技術(如 RabbitMQ)來實現,也可使用諸如 Azure 服務匯流排、NServiceBus、MassTransit 或 Brighter 等更高階的服務匯流排。

系統執行效果圖

開源地址:https://github.com/dotnet-architecture/eShopOnContainers

3、ABP

ABP是用於建立現代Web應用程式的完整架構和強大的基礎設施!遵循最佳實踐和約定,為你提供SOLID開發經驗。它的設計目標是對標 Java 平臺 Spring 全家桶。

下圖展示了其強大的功能:

.NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

.NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

 .NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

 .NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

所有功能列表:

完善的開發文件:https://docs.abp.io/zh-Hans/abp/latest/Getting-Started

官網:https://www.abp.io

2、Dapr 分散式應用框架【微軟出品】
Dapr是微軟官網出品的一種可移植的,事件驅動的,無伺服器執行時,用於構建跨雲和邊緣的分散式應用程式。
Dapr通過通訊共享資訊,即 HTTP 和 gRPC 支援多語言等特性。
 
Dapr與語言無關,可以在任何託管環境上執行,包括本地開發機器、Kubernetes和公共雲(如AWS、Azure和GCP)。通過利用SDK或進行簡單的HTTP或gRPC呼叫,將Dapr與您選擇的語言結合使用。
.NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

官網:https://dapr.io

1、Viper 微服務框架

Viper 是一個基於Anno微服務引擎開發的Dashboard專案、示例專案。Anno 底層通訊採用 grpc、thrift。自帶服務發現、呼叫鏈追蹤、Cron 排程、限流、事件匯流排等。入門簡單、安全、穩定、高可用、全平臺可監控。底層通訊可以隨意切換。

Anno 是一個分散式開發框架,同時支援 .net core3.1 、.net frameworker4.6.1。

.NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

.NET Core/.NET5/.NET6 開源專案彙總6:框架與架構設計(DDD、雲原生/微服務/容器/DevOps/CICD等)專案

開源地址:https://github.com/duyanming/Viper


參考文獻:

  • https://www.cnblogs.com/sheng-jie/p/9616675.html
  • https://www.cnblogs.com/sheng-jie/p/9789180.html
  • https://mp.weixin.qq.com/s/7i-dxTTp9qfnByveowWvCA

相關文章