专栏首页.NET企业级解决方案应用与咨询.NET Core/.NET5/.NET6 开源项目汇总6:框架与架构设计(DDD、云原生/微服务/容器/DevOps/CICD等)项目

.NET Core/.NET5/.NET6 开源项目汇总6:框架与架构设计(DDD、云原生/微服务/容器/DevOps/CICD等)项目

系列目录 【已更新最新开发文章,点击查看详细】

开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激、尊重。请严格遵守每个项目的开源协议后再使用。尊重知识产权,共建和谐开源社区。 如果表述不恰当的地方,请及时告知我,谢谢。

9、Furion【国产,入选GVP】

Furion项目的作者【富察宏磊】是一位90后的优秀IT人才。

Furioin 是一款基于.NET5技术开发的功能强大、性能极致、文档完善、示例丰富、极易入门、快速开发、极易维护的Web框架。

功能模块

框架特点

  • 全新面貌:基于 .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

基于Furion的开源案例

  • Admin.NET:基于 Furion 的通用权限管理平台。
  • 考试君:基于 Furion 的在线考试系统
  • 园丁:基于 Furion + Blazor 的超简单后台管理系统
  • Queer:基于 Furion + Layui 的通用型管理系统
  • Pear Admin:基于 Furion + PearAdmin 管理系统
  • JoyAdmin:基于 Furion + iviewadmin 开发的管理系统
  • YShop:基于 Furion + Vue 开发的移动电商项目

8、携程 Apollo

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

7、轻量级配置中心AgileConfig

基于.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

6、基于ASP.NET Core构建可热插拔的插件化系统

插件化架构,又称微核架构,指的是软件的内核相对较小,主要功能和业务逻辑都通过插件实现的架构。

插件化架构一般有两个核心概念:

  • 内核
  • 插件

内核通常只包含系统运行的最小功能,以及定义插件必须符合的接口;插件则是互相独立的模块,一般只包含单一的功能。

插件化技术并不是一个新兴的技术,早期很多基于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

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

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(事件总线)进行数据更新传播。

系统架构图

从上图可知,该架构主要包括两个部分:客户端应用和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 全家桶。

下图展示了其强大的功能:

所有功能列表:

完善的开发文档: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与您选择的语言结合使用。

官网:https://dapr.io

1、Viper 微服务框架

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

系列目录 【已更新最新开发文章,点击查看详细】

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • .NET6 平台系列1 .NET Framework发展历程

    自1995年互联网战略日以来最雄心勃勃的事业 —— 微软.NET战略, 2000年6月30日。 

    张传宁IT讲堂
  • .NET平台系列31:.NET团队送给.NET开发人员的云原生学习资源汇总

     .NET Core 启动于2016年,跟K8S同年诞生,既拥有着悠久的历史积累,又集成了当下最新的设计理念,加上.NET团队持续对容器技术的官方支持和适配改...

    张传宁IT讲堂
  • .NET平台系列21:云原生时代 .NET5 雄霸天下

      随着互联网持续高歌猛进,相关技术名词也是层出不穷。微服务、容器化、DevOps、ServerLess、FaaS,这两年最火的当属云原生Cloud Nativ...

    张传宁IT讲堂
  • .NET6 平台系列4 .NET开源之路

      .NET平台是微软于2000年推出的Windows操作系统的应用软件开发框架,发展至今形成巨大的技术栈,涉及多语言(支持C#、F#、VB.NET)多领域(W...

    张传宁IT讲堂
  • .NET6 平台系列3 .NET CLR 详解

      运行时(Runtime Environment,简称Runtime ),是指那些支持在特定的平台上,用于运行特定编程语言编写的软件的库和程序集,它一般要处理...

    张传宁IT讲堂
  • .NET平台系列18 .NET5的超强优势

      .NET5 统一版本之后将支持所有 .NET 应用程序类型:Xamarin、ASP.NET、IoT 和桌面。此外,它将利用一个单独的 CoreFX/基类库 ...

    张传宁IT讲堂
  • .NET 平台系列6 .NET Core 发展历程

      在我的上一篇博客《.NET平台系列5 .NET Core 简介》中主要介绍了.NETCore的基本情况,主要包括.NET跨平台的缘由、.NET Core的定...

    张传宁IT讲堂
  • 性能再提升70%?大咖前瞻带你揭开.NET6的神秘面纱!

    本月初微软官宣.NET 6 的RC1正式发布,这意味着.NET6正式版跟我们见面的时间又近了一步。在之前的.NET6预览版本中,微软加入了大量新功能特性,而在最...

    葡萄城控件
  • 64位Visual Studio 2022来了,微软在下一盘大棋!

    难得五一长假,蹲家里盘点了一下这2年.NET的发展,可谓日新月异,重现辉煌,各种重磅更新接踵而至:

    寒树Office与RPA
  • .NET6 平台系列2 .NET Framework框架详解

      .NET Framework 是 Windows 的托管执行环境,可为其运行的应用提供各种服务。 它包括两个主要组件:公共语言运行时 (CLR),它是处理运...

    张传宁IT讲堂
  • 【重榜?】.NET 6 Preview 1 开箱上手!带你尝试新版本更新!

    最近 .NET 6 Preview 1 发布了,.NET 统一是此版本的核心。大家可以读一下原文博客:

    痴者工良
  • 成都活动 | 6月30日「DevOps Open Day」报名进行中

    那么你一定不能错过敏捷先驱ThoughtWorks的敏捷成熟度模型线下分享,这次我们精心准备了三个精彩话题:敏捷落地实践经验分享,助力团队敏捷转型;领域驱动设计...

    ThoughtWorks
  • 西安活动 | 2019年1月13日「拥抱开源, 又见.NET」

    随着.NET Core的发布和开源,.NET又重新回到人们的视野。.NET Core的下个3.0即将release,加入非常多的新功能,越来越拥抱变化,DevO...

    ThoughtWorks
  • 潘淳:苏州.NET俱乐部成立大会全流程-下午(全部22环节)

    ⊙【14】课程2:《使用 .NET Core + DevOps 开发微信跨平台应用》

    寒树Office与RPA
  • .NET平台系列13 .NET5 统一平台

      时机决定一切,对于 .NET5 也是如此。实际上微软.NET团队在开始开发 .NET Core 时,对 .NET Framework 的全面重写是不可想象的...

    张传宁IT讲堂
  • DotNet.CAP,或是.NET唯一靠谱的开源分布式框架!

    .NET5、容器化、K8S、分布式、微服务、DevOps、云原生,热门的技术名词很多,然而无论概念如何包装,落地的底层逻辑是不变的,分布式事务就是一个钉子户,任...

    寒树Office与RPA
  • 在全Linux环境去开发、运行、部署.NET Core项目!

    2016年.NET Core首个正式版本问世,如今已发布到了.NET Core3.1,再有2个月.NET5也将如约而至,跨平台开发已经快5年,然而很多人却还只是...

    心莱科技雪雁
  • eShopOnContainers 知多少[1]:总体概览

    在微服务大行其道的今天,Java阵营的Spring Boot、Spring Cloud、Dubbo微服务框架可谓是风水水起,也不得不感慨Java的生态圈的火爆。...

    圣杰
  • 【52ABP实战教程】0.0.0 -- ASP.NET CORE系列介绍

    为什么是.net core? 记得在半年前.NET CORE刚刚出了1.0,当时有朋友推荐我使用的时候,个人觉得还不成熟。 现在.NET Core已经到了2....

    角落的白板报

扫码关注云+社区

领取腾讯云代金券