開源項目是眾多組織與個人分享的組件或項目,作者付出的心血我們是無法體會的,所以首先大家要心存感激、尊重。請嚴格遵守每個項目的開源協議后再使用。尊重知識產權,共建和諧開源社區。
如果表述不恰當的地方,請及時告知我,謝謝。
Furion項目的作者【富察宏磊】是一位90后的優秀IT人才。
Furioin 是一款基於.NET5技術開發的功能強大、性能極致、文檔完善、示例豐富、極易入門、快速開發、極易維護的Web框架。
功能模塊
框架特點
- 全新面貌:基於
.NET 5
平台,沒有歷史包袱 - 極易入門:只需要一個
Inject()
即可完成配置 - 極速開發:內置豐富的企業應用開發功能
- 極少依賴:框架只依賴兩個第三方包
- 極其靈活:輕松面對多變復雜的需求
- 極易維護:采用獨特的架構思想,只為長久維護設計
- 完整文檔:提供完善的開發文檔
文檔地址
開源地址
- Gitee:https://gitee.com/dotnetchina/Furion
- GitHub:https://github.com/monksoul/Furion
- Docker:https://hub.docker.com/r/monksoul/furion
- Nuget:https://www.nuget.org/packages/Furion
系列教程
- Furion 視頻教程:https://space.bilibili.com/695987967
- Furion 使用例子:https://gitee.com/monksoul/furion-samples 可能大部分示例已經不通用
- Furion 系列教程:《學 .NET 5 從 Furion 開始》 系列
支持平台
- 運行環境
- 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
基於Furion的開源案例
- Admin.NET:基於
Furion
的通用權限管理平台。 - 考試君:基於
Furion
的在線考試系統 - 園丁:基於
Furion
+Blazor
的超簡單后台管理系統 - Queer:基於
Furion
+Layui
的通用型管理系統 - Pear Admin:基於
Furion
+PearAdmin
管理系統 - JoyAdmin:基於
Furion
+iviewadmin
開發的管理系統 - YShop:基於
Furion
+Vue
開發的移動電商項目
Apollo(阿波羅)是攜程框架部門研發的分布式配置中心,能夠集中化管理應用不同環境、不同集群的配置,配置修改后能夠實時推送到應用端,並且具備規范的權限、流程治理等特性,適用於微服務配置管理場景。
服務端基於Spring Boot和Spring Cloud開發,打包后可以直接運行,不需要額外安裝Tomcat等應用容器。
Java客戶端不依賴任何框架,能夠運行於所有Java運行時環境,同時對Spring/Spring Boot環境也有較好的支持。
.Net客戶端不依賴任何框架,能夠運行於所有.Net運行時環境,參考《.Net客戶端使用指南》。
更多產品介紹參見Apollo配置中心介紹。
本地快速部署請參見Quick Start。
產品特性
-
統一管理不同環境、不同集群的配置
- 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
基於.NetCore開發的輕量級(相對Apollo而言)配置中心,部署簡單、配置簡單,使用簡單,可以根據個人或者公司需求采用。
- 部署簡答,最少只需要一個數據節點,支持docker部署
- 支持多節點分布式部署來保證高可用
- 配置支持按照應用隔離,應用內配置支持分組隔離
- 使用長鏈接技術,配置信息實時推送到客戶端
- 支持IConfiguration、IOptions模式讀取配置,原程序幾乎不用改造
- 配置修改支持版本記錄,隨時回滾配置
- 所有所有節點都故障,客戶端支持從本地緩存讀取配置
配置完成后即可進入系統
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
插件化架構,又稱微核架構,指的是軟件的內核相對較小,主要功能和業務邏輯都通過插件實現的架構。
插件化架構一般有兩個核心概念:
- 內核
- 插件
內核通常只包含系統運行的最小功能,以及定義插件必須符合的接口;插件則是互相獨立的模塊,一般只包含單一的功能。
插件化技術並不是一個新興的技術,早期很多基於COM開發的WIN32程序其實都是插件化的系統。在.NET/.NET Core中,也有許多插件化的實現方案,例如,開源框架ABP, 開源的內容管理系統DotNetNuke, 電子商務框架NopCommerce。
《.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
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
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(事件總線)進行數據更新傳播。
系統架構圖
從上圖可知,該架構主要包括兩個部分:客戶端應用和Docker主機中運行的服務端應用。
- 客戶端應用:基於瀏覽器的Web應用;基於Xamarin開發的Android、IOS、UWP移動應用。
- 服務端應用:部署在在Doker主機的系列微服務。
其中服務端主要包括六大微服務:
- Identity Micsroservice(身份微服務):用於身份認證和授權。使用SQL Server數據庫。
- Catalog microservice(產品目錄微服務):用於產品資料的維護。使用SQL Server數據庫。
- Ordering microservice(訂單微服務):用於訂單邏輯的處理。使用SQL Server數據庫。
- Basket microservice(購物車微服務):用於購物車邏輯的處理。使用Redis數據庫。
- Marketing microservice(市場營銷微服務):用於市場營銷邏輯的處理。使用MongoDB/CosmosDB 和SQL Server數據庫。
- Locations microservice (位置微服務):用於提供位置服務。使用MongoDB/CosmosDB 數據庫。
- [New] Payment microservice (支付微服務):用於處理支付邏輯。
另外從上圖我們還可以清晰看出其通信架構:
- 客戶端與微服務通過API網關通信:用於查詢和接收來自客戶端應用程序的更新或事務命令。
- 異步事件通信:通過事件總線傳播來自微服務的更新或與外部應用程序集成。事件總線可使用任何消息代理架構技術(如 RabbitMQ)來實現,也可使用諸如 Azure 服務總線、NServiceBus、MassTransit 或 Brighter 等更高級的服務總線。
系統運行效果圖
開源地址:https://github.com/dotnet-architecture/eShopOnContainers
ABP是用於創建現代Web應用程序的完整架構和強大的基礎設施!遵循最佳實踐和約定,為你提供SOLID開發經驗。它的設計目標是對標 Java 平台 Spring 全家桶。
下圖展示了其強大的功能:
所有功能列表:
- 多個UI選項
- 多個數據庫提供程序
- ABP CLI
- 模塊化
- 多租戶
- BOOTSTRAP 標簽助手
- 動態表單
- 認證與授權
- 橫切關注點
- BUNDLING & MINIFICATION
- 虛擬文件系統
- 主題
- 后台作業
- DDD基礎設施
- 自動REST APIS
- 動態客戶端代理
- 分布式事件總線
- BLOB存儲
- 文本模板
- 測試基礎設施
- 審計日志
- 對象映射
- 電子郵件和短信抽象
- 本土化
- 設置管理
- 擴展方法
- 面向切面的編程
- 依賴注入
- 數據過濾
完善的開發文檔:https://docs.abp.io/zh-Hans/abp/latest/Getting-Started
- 基於ABP落地領域驅動設計-01.全景圖
- 基於ABP落地領域驅動設計-02.聚合和聚合根的最佳實踐和原則
- 基於ABP落地領域驅動設計-03.倉儲和規約最佳實踐和原則
- 基於ABP落地領域驅動設計-04.領域服務和應用服務的最佳實踐和原則
- 基於ABP落地領域驅動設計-05.實體創建和更新最佳實踐
- 基於ABP落地領域驅動設計-06.正確區分領域邏輯和應用邏輯


Viper 是一個基於Anno微服務引擎開發的Dashboard項目、示例項目。Anno 底層通訊采用 grpc、thrift。自帶服務發現、調用鏈追蹤、Cron 調度、限流、事件總線等。入門簡單、安全、穩定、高可用、全平台可監控。底層通訊可以隨意切換。
Anno 是一個分布式開發框架,同時支持 .net core3.1 、.net frameworker4.6.1。
開源地址: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