.NET 8.0开源项目如何构建伪微服务框架?

摘要:前言 嘿,小伙伴们!最近看到了一个 .NET 8.0 的小项目伪微服务框架,非常适合想要快速搭建小型应用项目或是想要学习.NET 8.0及新的技术,但又不知道从哪里学起的朋友。这个框架可以帮助我们简化开发流程,同时还能适应不断变化的需求。
前言 嘿,小伙伴们!最近看到了一个 .NET 8.0 的小项目伪微服务框架,非常适合想要快速搭建小型应用项目或是想要学习.NET 8.0及新的技术,但又不知道从哪里学起的朋友。这个框架可以帮助我们简化开发流程,同时还能适应不断变化的需求。 它虽然简化了很多复杂的微服务特性,但仍保留了关键的微服务理念,让我们可以专注于业务逻辑而不是底层细节,并且达到实操效果。 想要快速上手 .NET 8.0,不妨试试这个框架。项目已经在 GitHub 上开源了,欢迎大家前来围观、提供建议或贡献代码。希望这个框架能够帮助更好的帮助我们工作中遇到的问题。 项目介绍 为什么说是伪微服务框架,常见微服务框架可能还包括服务容错、服务间的通信、服务追踪和监控、服务注册和发现等等,而这里为了在使用中的更简单,将很多东西进行了简化或者省略了。 简化微服务概念:作者虽然称为“伪微服务”,但本框架依然具备一些关键的微服务特性,如模块化设计和服务解耦。它通过减少复杂的服务间通信、容错机制和服务发现等功能,使开发更加高效且易于管理。 技术栈:集成了一些比较实用的新技术,包括EF Core、Redis、RabbitMQ和MySQL,确保应用高效又能应对高并发场景。 易用性:该框架的目标是尽可能地简化开发过程,提供完整的接口和文档,能够迅速上手,并将更多精力集中在业务逻辑上。 持续优化:尽管目前仍处于早期阶段,但作者承诺将持续改进和完善该项目。这包括但不限于引入更多高级特性、增强现有功能以及提升整体性能。 项目核心 对象映射:使用 AutoMapper 自动处理对象之间的映射,让你无需手动编写繁琐的转换代码。 查询封装:通过 Ardalis.Specification 和 LinqKit.Core 封装 EF Core 查询,让数据获取变得更简单直观。 数据库交互:在 EF Core 中重写了 SaveChangesInterceptor,实现了软删除功能,并自动管理创建时间和更新时间字段。 整体架构:采用了整洁的架构设计,便于理解和维护。 业务功能:已经预置了一些基本的业务功能,开箱即用。 依赖注入:内置了依赖注入容器,方便管理组件和服务。 认证与授权:使用双 token 实现了安全登录和无感知的前端 token 刷新。 分布式 ID 生成:集成了 Snowflake 分布式 ID 生成器,确保全局唯一标识符。 缓存与锁:通过 Redis 实现了分布式缓存和分布式锁,提高了系统的可用性和并发性能。 消息队列:利用 RabbitMQ 封装了异步任务处理机制,如文件上传和下载。 定时任务:结合 Cronos 和 BackgroundService 实现了秒级定时任务。 数据初始化:使用 BackgroundService 进行数据初始化,比如字典数据的加载。 日志记录:采用 Serilog 记录异常日志,并通过 Docker 部署实现日志的可视化监控。 操作日志:通过自定义过滤器和反射记录操作日志,便于追踪用户行为。 权限验证:实现了权限验证过滤器,确保用户只能访问被授权的资源。 统一响应格式:使用 IAsyncResultFilter 统一了返回给前端的数据格式。 Excel 操作:集成 EPPlus 库,支持 Excel 导入和导出。 一键部署:支持使用 goploy 快速部署前后端应用。 API 文档:通过 Swagger 自动生成 RESTful API 文档,方便前端和后端开发人员协作。 配置加载:自动加载 appsettings.json 文件中的配置信息。 项目框架 通过Github下载项目源码,我们可以查看项目框架,具体如下图所示: 1、Libraries 包含各种外部类库,对其深加工使用在项目中 2、Services/Basic 微服务基础支撑子系统 3、Services/NCDP 微服务业务子系统 4、Services/SystemService 微服务系统服务(包括数据库的更新、定时任务、数据初始化、Swagger承载、RabbitMQ队列事件处理器等) 5、sun.Core sun.Core作为了中转,其他外部或者自己封装的类库,在引用的时候都是在sun.Core中进行的引用。 算是间接引用,来简化项目中的依赖关系。 同时在sun.Core也封装了一些核心组件和服务。 6、sun.Infrastructure 主要封装一些通用的方法,以及基础设施组件,供外部使用。
阅读全文