.NET Core/.NET5/.NET6 开源项目汇总6:框架与架构设计(DDD、云原生/微服务/容器/DevOps/CICD等)项目
开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激、尊重。请严格遵守每个项目的开源协议后再使用。尊重知识产权,共建和谐开源社区。
如果表述不恰当的地方,请及时告知我,谢谢。
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开发的移动电商项目
插件化架构,又称微核架构,指的是软件的内核相对较小,主要功能和业务逻辑都通过插件实现的架构。

插件化架构一般有两个核心概念:
- 内核
- 插件
内核通常只包含系统运行的最小功能,以及定义插件必须符合的接口;插件则是互相独立的模块,一般只包含单一的功能。
插件化技术并不是一个新兴的技术,早期很多基于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

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



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
.NET Core/.NET5/.NET6 开源项目汇总6:框架与架构设计(DDD、云原生/微服务/容器/DevOps/CICD等)项目的更多相关文章
- .NET Core/.NET5/.NET6 开源项目汇总4:CMS、Blog项目
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
- .NET Core/.NET5/.NET6 开源项目汇总5:权限管理系统项目
系列目录 [已更新最新开发文章,点击查看详细] 企业管理系统一般包含后台管理UI.组织机构管理.权限管理.日志.数据访问.表单.工作流等常用必备功能.下面收集的几款优秀开源的管理系统,值得大家 ...
- .NET Core/.NET5/.NET6 开源项目汇总10:实用工具
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
- .NET Core/.NET5/.NET6 开源项目汇总9:客户端跨平台UI框架
系列目录 [已更新最新开发文章,点击查看详细] .NET Core 实现了跨平台,支持在 Windwos.Linux.macOS上开发与部署,但是也仅限于Web应用程序.对于Windows桌面 ...
- .NET Core/.NET5/.NET6 开源项目汇总1:常用必备组件
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
- .NET Core/.NET5/.NET6 开源项目汇总2:任务调度组件
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
- .NET Core/.NET5/.NET6 开源项目汇总3:工作流组件
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
- .NET Core/.NET5/.NET6 开源项目汇总7:电商项目
系列目录 [已更新最新开发文章,点击查看详细] 谈起.NET/.NET Core的企业级实战案例,电商项目是典型代表.其中高负载.高并发.高可用性等问题是考核.NET技术性能的重要指标.下面整 ...
- .NET Core/.NET5/.NET6 开源项目汇总8:Blazor项目
系列目录 [已更新最新开发文章,点击查看详细] Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 U ...
随机推荐
- (一)RabbitMQ安装与基本配置
[博主使用的环境是阿里云ecs服务器,操作系统为centos] 安装erlang环境 RabbitMQ底层是Erlang语言,因此要先安装erlang环境,就像你要运行Java程序就必须先安装JRE/ ...
- java如何调用本地扬声器
各位看官可以关注博主个人博客,了解更多信息. 作者:Surpasser 链接地址:https://surpass.org.cn 前言 博主的毕设系统在做一个餐厅的点餐管理系统,在记性移动端页面开发的时 ...
- 简单说几个MySQL高频面试题
前言: 在各类技术岗位面试中,似乎 MySQL 相关问题经常被问到.无论你面试开发岗位或运维岗位,总会问几道数据库问题.经常有小伙伴私信我,询问如何应对 MySQL 面试题.其实很多面试题都是大同小异 ...
- Elasticsearch数据库优化实战:让你的ES飞起来
摘要:ES已经成为了全能型的数据产品,在很多领域越来越受欢迎,本文旨在从数据库领域分析ES的使用. 本文分享自华为云社区<Elasticsearch数据库加速实践>,原文作者:css_bl ...
- Nacos服务发现
基础配置初始化 NacosDiscoveryClientConfiguration NacosDiscoveryProperties 初始化Nacos基础配置信息的bean,主要指yaml中配置Nac ...
- 记一次MySQL(5.7版本)数据库的主从同步和备份
我遇到的问题 我先后在BAT三大云服务器商购买了学生机,配置如下 百度云2核/4G 阿里云1核/2G 腾讯云1核/2G 我的解决方案 由于我不知道百度云的续费规则,导致买了2核/4G的服务器之后以为像 ...
- 端口映射(socket应用)
# coding=gb2312 import sys import time import socket import thread import subprocess ############### ...
- 图解 Redis | 不就是 AOF 持久化嘛
AOF 日志 试想一下,如果 Redis 每执行一条写操作命令,就把该命令以追加的方式写入到一个文件里,然后重启 Redis 的时候,先去读取这个文件里的命令,并且执行它,这不就相当于恢复了缓存数据了 ...
- .NET Worker Service 添加 Serilog 日志记录
前面我们了解了 .NET Worker Service 的入门知识[1] 和 如何优雅退出 Worker Service [2],今天我们接着介绍一下如何为 Worker Service 添加 Ser ...
- FreeBSD 13.0 正式版发布,已经可以下载
请访问原文链接:https://sysin.org/article/freebsd-13/,查看最新版.原创作品,转载请保留出处. 根据 FreeBSD 13.0 官方发布计划,4 月 9 日 13. ...