.NET 8 微服务框架长什么样?集成 AI 智能体、多租户、自动调度与实时通信
前言
现在做系统,光会写接口已经不够了。越来越多项目要求支持多租户、分布式部署,还要集成登录认证、定时任务、实时通知,甚至加上 AI 功能。用 .NET 从头搭一套这样的架构,费时又容易踩坑。
本文推荐一个基于 .NET 8 的微服务脚手架。它按 DDD 分层,模块之间解耦清晰,常用功能都配好了,拿来就能用,省下大量搭架子的时间。
项目介绍
NetCoreKevin 是一套基于领域驱动设计(DDD)的 .NET 8 Web API 项目,采用前后端分离架构,前端用 Vue3 + Ant Design,后端按微服务思路设计。
它包含了实际项目中常用的功能:基于 IdentityServer4 的统一认证、细粒度权限控制、Quartz 定时任务、SignalR 实时通信、多租户支持(一库多租户),以及 Redis 缓存、CAP 事件总线、RabbitMQ 解耦等基础设施。
另外,也集成了一些实用的 AI 能力,比如用 OCR 自动识别验证码、通过 SemanticKernel 调用大模型、结合 Qdrant 实现 RAG 检索等。这些功能都以模块化方式封装,按需启用即可,适合需要快速搭建 SaaS 类系统的团队使用。

项目功能
1、安全认证体系
基于IdentityServer4实现OAuth2与OpenID Connect协议,支持单点登录(SSO)与多租户权限管理,通过API级别的权限控制确保系统安全。
2、分布式系统支持
通过CAP消息总线实现跨服务事件通信,结合Consul服务注册与发现机制,构建高可用的分布式架构。
3、智能缓存策略
集成Redis与内存缓存,支持多级缓存机制,显著提升系统响应速度。
4、自动化任务调度
基于Quartz.NET的定时任务系统,支持复杂调度规则与任务依赖管理,满足数据同步、清理等后台处理需求。
5、AI能力集成
嵌入SemanticKernel语义理解框架、OCR验证码识别与MCP协议服务,为业务注入智能基因。
6、多云存储与短信服务
支持阿里云、腾讯云等主流云服务商的文件存储与短信发送,降低企业上云门槛。
项目技术
技术亮点
.NET 8 最新的 .NET 框架,性能更优,支持更多新特性
DDD 领域驱动设计,将复杂业务逻辑抽象为模块化结构
微服务架构 通过 Consul、CAP、Quartz 等实现服务解耦和分布式管理
CAP 消息总线,用于跨服务事件通信
MediatR 领域事件处理
IdentityServer4 安全认证中心,支持 OAuth2 和 OpenID Connect
Quartz 定时任务调度
EF Core ORM 工具,用于数据库操作
Docker 容器化部署,便于环境管理
AI 集成 SemanticKernel、MCP 服务、OCR 验证码识别等 AI 技术
AI 集成说明
AI 模块包括:
SemanticKernel:语义理解框架,支持自然语言处理。
OCR 验证码识别:通过 AI 技术识别验证码图像。
MCP 服务:用于 AI 服务通信或协议扩展。

项目框架
DDD思想

思维导图

项目核心
分层结构和模块化设计

项目启动与配置
1、配置 Redis 和数据库
项目启动前需在 JSON 配置文件中设置 Redis 和数据库连接字符串。默认使用 MySQL,可根据需要更换数据库类型。数据库结构可通过 EF Core 迁移脚本生成。
2、Docker 部署
项目提供完整的 Dockerfile 和相关配置文件,支持容器化部署。
3、JSON 配置
所有模块(包括缓存、短信、日志、AI 等)均通过 JSON 文件进行配置,便于环境隔离和灵活调整。
项目上手教程
1、配置数据库连接
编辑 appsettings.json,填写正确的 MySQL 连接字符串。如不熟悉 EF Core,可参考微软官方文档。
2、初始化数据库
在 Kevin.EntityFrameworkCore 项目目录下执行以下命令:
Add-Migration "初始化数据库"
Update-Database
3、启动主 API 服务
运行 App.WebApi 项目。首次启动会自动初始化种子数据(定义位于 kevin.Domain.BaseDatas)。
启动成功后,访问 http://localhost:9901/swagger/index.html 查看 API 文档。
4、启动认证中心
运行 App.AuthorizationService 项目,作为统一身份认证与授权服务。
5、启动前端
进入 vue 目录,依次执行:
npm install
npm run dev(开发模式)
或
npm run build(生产构建)
项目代码
文件上传控制器
/// <summary>
/// 通过图片文件ID获取图片
/// </summary>
/// <param name="fileId">图片ID</param>
/// <param name="width">宽度</param>
/// <param name="height">高度</param>
/// <param name="cancellationToken">cancellationToken</param>
/// <returns></returns>
/// <remarks>不指定宽高参数,返回原图</remarks>
[AllowAnonymous]
[HttpGet("GetImage")]
public FileResult GetImage([Required] Guid fileId, int width, int height, CancellationToken cancellationToken)
{
var file = db.Set<TFile>().Where(t => t.Id == fileId).FirstOrDefault();
var path = Kevin.Common.App.IO.Path.ContentRootPath() + file.Path;
var stream = System.IO.File.OpenRead(path);
string fileExt = Path.GetExtension(path);
var provider = new FileExtensionContentTypeProvider();
var memi = provider.Mappings[fileExt];
if (width == 0 && height == 0)
{
return File(stream, memi, file.Name);
}
else
{
using var original = SKBitmap.Decode(path);
if (original.Width < width || original.Height < height)
{
return File(stream, memi, file.Name);
}
else
{
if (width != 0 && height == 0)
{
var percent = ((float)width / (float)original.Width);
width = (int)(original.Width * percent);
height = (int)(original.Height * percent);
}
if (width == 0 && height != 0)
{
var percent = ((float)height / (float)original.Height);
width = (int)(original.Width * percent);
height = (int)(original.Height * percent);
}
var SKSamplingOptions = new SKSamplingOptions();
using var resizeBitmap = original.Resize(new SKImageInfo(width, height), SKSamplingOptions);
using var image = SKImage.FromBitmap(resizeBitmap);
using var imageData = image.Encode(SKEncodedImageFormat.Png, 100);
return File(imageData.ToArray(), "image/png");
}
}
}
/// <summary>
/// 通过文件ID获取文件静态访问路径
/// </summary>
/// <param name="fileid">文件ID</param>
/// <param name="cancellationToken">cancellationToken</param>
/// <returns></returns>
[HttpGet("GetFilePath")]
public async Task<string> GetFilePath([Required] Guid fileid, CancellationToken cancellationToken)
{
return await _fileService.GetFilePath(fileid, cancellationToken);
}
项目效果
AI集成


系统首页

后台自动任务调度系统(基于Quartz.NET)

基础API

项目源码
项目源码包含完整代码、配置文件与说明文档。
Gitee:https://gitee.com/netkevin-li/NetCoreKevin
总结
NetCoreKevin 是一个非常完整的微服务架构项目,结合了 DDD、CAP、Quartz、EFCore 等多种技术,并集成了 AI、OCR、短信、文件存储等实用功能。其模块化设计使每个功能都可以独立引用,非常适合大型企业级应用的开发。
关键词
NetCoreKevin、.NET 8、DDD架构、微服务、AI集成、IdentityServer4、CAP事件总线、Quartz调度、Vue3前端、模块化设计、DDD、微服务、多租户、AI智能体、.NET8、Vue3、SignalR、Quartz、CAP、RAG
最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。
也可以加入微信公众号[DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!


浙公网安备 33010602011771号