抖音粉丝群1
『7x24小时有问必答』

前言

基于 .NET 10 打造的跨平台文档管理系统,才真正感受到了什么叫"专业级"的开源力量。它不仅仅是一个简单的文件存储工具,更是一个集成了 CQRS 架构、实时通信、版本控制等高级特性的现代化应用示例。

项目介绍

一款标准的前后端分离项目,后端基于全新的 .NET 10 运行时开发,前端则采用了 Angular 框架。它最大的亮点在于对架构模式的深度应用——整个项目严格遵循 CQRS(命令查询职责分离)+ MediatR(中介者模式)的设计思想,配合异步编程模型,确保了代码的高内聚、低耦合。
这意味着,对于需要二次开发的企业来说,这套系统的代码结构清晰,逻辑分层明确,无论是增加新的业务模块,还是修改现有的审批流程,都能做到"热插拔"式的平滑扩展。同时,它支持 MySQL 8.0 和 SQL Server 2012 作为后端数据库,并提供了完善的 Docker 部署支持,无论是 Windows、Linux 还是 Mac 环境,都能快速落地。

项目功能

功能模块
核心能力
业务价值
智能文档引擎
分片上传、MD5秒传、AES加密存储、全格式预览
确保大文件传输稳定,底层数据绝对安全,查阅便捷
权限与审计
细粒度角色控制、登录IP审计、强制踢人下线
满足企业合规要求,所有操作有迹可循,杜绝越权访问
共享与协作
内部团队共享、带密码/有效期的外部链接、实时通知
打破信息孤岛,内外部文件分发既灵活又可控
版本控制
自动保留历史版本、一键回滚、历史版本下载
为重要文档提供“后悔药”,防止误删或恶意篡改
管理控制台
实时仪表盘、SMTP邮件配置、NLog系统日志查看
IT管理员的专属阵地,全方位掌控系统健康度与用户动态

项目特点

1、架构先行,代码即文档
采用 CQRS + MediatR 模式,将"写操作"(Command)和"读操作"(Query)彻底分离。这不仅让代码逻辑更加清晰,还极大地提升了系统的可维护性。所有的方法都是异步的,配合依赖注入(DI),让高并发场景下的性能表现非常稳健。
2、全平台覆盖,无缝衔接
除了标准的 Web 端(Angular),项目还提供了基于 Avalonia 的跨平台客户端。这意味着,你的团队成员可以在 Windows、Linux 或 Mac 上使用原生体验的桌面客户端,甚至在移动设备上也能通过响应式布局进行操作,真正实现了"一处部署,全端可用"。
3、安全为王,细节拉满
安全不仅仅是加密存储。系统内置了严格的文件类型过滤(禁止上传 .exe、.bat 等危险文件),通过防抖(Debounce)优化了全局搜索体验,还利用 Redis(或降级为内存锁)实现了上传并发控制,防止文件覆盖冲突。这些细节体现了开发团队深厚的技术功底。

系统架构与技术栈

层级
核心技术组件
关键说明
运行时框架.NET 10 (net10.0)
微软最新 LTS 版本,极致性能与跨平台支持
架构模式CQRS + MediatR
命令查询职责分离,业务逻辑高度解耦,易于扩展
前端交互Angular + Material
响应式布局,提供流畅的 Web 端与移动端体验
桌面客户端Avalonia UI
真正的跨平台原生客户端(Windows/Linux/Mac)
数据存储EF Core 10 + MySQL/SQL Server
强大的 ORM 映射,支持多数据库无缝切换
安全认证JWT Bearer + ASP.NET Identity
令牌基身份验证,保障接口访问的安全性
实时通信SignalR
实现文件夹变更推送、在线用户检测等毫秒级通知

项目效果

1.png

2.png

3.png

4.png

5.png

6.png

7.png

项目源码

Web 层:包含 API 启动入口和依赖注入配置。
MediatR 层:存放所有的 Command 和 Query 处理逻辑,是业务的核心。
Repository 层:封装了 EF Core 的通用仓储模式。
Domain 层:定义了实体类和 DbContext。
Client 层:基于 Avalonia 的跨平台客户端代码,是学习 .NET 桌面开发的绝佳范例。
GitHub:https://github.com/dorisoy/Dorisoy.Pan

总结

Dorisoy.Pan 不仅仅是一个文档管理系统,它更像是一套企业级应用的开发脚手架。它展示了如何利用 .NET 10 的最新特性,结合 CQRS 等先进架构,开发一个高可用、易扩展的现代化应用。不管是搭建一个内部的私有云盘,还是想寻找一个可二次开发的文档管理内核,Dorisoy.Pan 都是一个不错的选择。

关键词

最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。也可以加入微信公众号[DotNet技术匠]  社区,与其他热爱技术的同行一起交流心得,共同成长!
作者:小码编匠
出处:gitee.com/smallcore/DotNetCore
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!

END

方便大家交流、资源共享和共同成长
纯技术交流群,需要加入的小伙伴请扫码,并备注加群

推荐阅读

觉得有收获?不妨分享让更多人受益
关注「DotNet技术匠」,共同提升技术实力

收藏
点赞
分享
在看

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码