企业级WPF桌面应用框架 - 基于Prism + HandyControl,支持模块化插件架构,开箱即用。
- 模块化架构 - 基于Prism 9的动态模块加载,支持插件化开发,模块间通过接口+事件解耦
- 完善的RBAC - 用户-角色-权限三级权限管理,支持菜单/按钮/API三种权限类型,组织单位关联
- 现代化UI - HandyControl 3.5组件库,支持Light/Dark主题切换,动态资源字典
- 丰富的扩展点 - 菜单(IMenuItemProvider)、仪表盘组件(IDashboardWidgetProvider)、报表(IReportGenerator)均可扩展
- 审计追踪 - 完整的操作审计日志,支持11种操作类型,持久化到数据库,支持Excel导出
- 会话安全 - 会话超时自动锁屏(可配置1-480分钟)、数据库断连自动锁屏、PBKDF2密码哈希
- 告警系统 - 多级别告警(Info/Warning/Critical),支持弹窗和声音提示,告警确认/解决/忽略生命周期管理
- 数据导出 - 支持CSV/Excel(ClosedXML)/PDF(QuestPDF)导出和CSV导入
- 通知系统 - 跨模块全局通知,支持5种通知类型和4级优先级,未读计数Badge
- 缓存服务 - 内存缓存(ConcurrentDictionary),支持模式匹配批量失效
- 分页查询 - 泛型分页查询(IPagedQuery/PagedResult),支持排序和过滤
- 配置管理 - appsettings.json + appsettings.local.json + 环境变量三层配置,运行时配置持久化
- 日志系统 - Serilog结构化日志,按日滚动,用户上下文自动注入
- ID生成 - 基于Yitter的分布式雪花ID生成器
| 分类 | 技术 | 版本 | 用途 |
|---|---|---|---|
| 框架 | .NET | 10 | 运行时 |
| UI框架 | WPF | net10.0-windows | 桌面界面 |
| MVVM框架 | Prism (Unity) | 9.0 | 模块化、导航、依赖注入、事件聚合 |
| 控件库 | HandyControl | 3.5 | WPF UI组件 |
| ORM | SqlSugar | 5.1.4 | CodeFirst数据库初始化、查询 |
| 日志 | Serilog | - | 结构化日志,文件滚动输出 |
| Excel | ClosedXML | - | Excel导出 |
| QuestPDF | - | PDF报表生成 | |
| 加密 | BouncyCastle | - | PBKDF2密码哈希、SM4国密加解密 |
| ID生成 | Yitter.IdGenerator | - | 分布式雪花ID |
| 测试 | xUnit + Moq + FluentAssertions | - | 单元测试、Mock、断言 |
- .NET 10 SDK
- Visual Studio 2026+ 或 JetBrains Rider
- SQL Server 2019+(或使用LocalDB进行开发测试)
git clone https://github.com/yourorg/desktop.boilerplate.git
cd desktop.boilerplate
dotnet restore
dotnet build在 src/Vk.Dbp.WpfWindow 目录创建 appsettings.local.json:
{
"ConnectionStrings": {
"Default": "Server=127.0.0.1;Database=DabpCore;Trusted_Connection=True;TrustServerCertificate=True;"
}
}运行应用后,SqlSugar CodeFirst 会自动创建数据库表并初始化种子数据。
用户名: admin
密码: 123456
首次登录后请立即修改默认密码。
📖 详细的配置说明请参阅 快速开始指南
解决方案包含 17个项目,分层架构如下:
desktop.boilerplate/
├── src/ # 核心源代码
│ ├── Vk.Dbp.WpfWindow/ # Shell宿主(启动、布局、主题、导航)
│ ├── Vk.Dbp.Contracts/ # 契约层(接口、事件、扩展点)
│ ├── Vk.Dbp.Services/ # 通用服务(会话、审计、缓存、导出)
│ ├── Vk.Dbp.Infrastructure/ # 基础设施(实体、仓储、ORM)
│ ├── Vk.Dbp.Utils/ # 工具类(加密、ID生成、日志)
│ ├── Vk.Dbp.Domain/ # 领域模型(预留)
│ ├── Vk.Dbp.AdminWindow/ # 管理窗口
│ └── Vk.Dbp.Tools/ # 工具项目
├── prismModules/ # Prism业务模块
│ ├── Vk.Dbp.AccountModule/ # 账户管理(10视图、13VM、11服务)
│ └── Vk.Dbp.WorkshopModule/ # 车间示例(6视图)
├── dbpframework/ # 框架层
│ ├── Vk.Dbp.Core/ # 核心抽象
│ └── Vk.Dbp.Account/ # 账户原语
├── dbpApps/ # 客户应用入口
├── test/ # 测试项目(54+单元测试)
├── scripts/ # PowerShell脚本
└── docs/ # 文档
📖 完整的项目结构和架构说明请参阅 架构指南
| 文档 | 说明 |
|---|---|
| 架构概览 | 分层架构、项目结构、技术栈、依赖规则 |
| 快速开始 | 环境配置、数据库设置、配置系统、环境变量 |
| 二次开发指南 | 创建模块、核心服务使用、扩展点、事件系统、导航、主题 |
| 数据库 Schema | 13张表结构、实体关系、种子数据 |
| 安全特性 | 密码安全、Token、SM4加密、会话安全、审计、告警 |
| 服务与运维 | 服务注册、日志系统、启动流程、脚本工具、测试、模块详解、代码规范 |
| 文档 | 说明 |
|---|---|
| 模块开发指南 | 详细的模块开发教程和最佳实践 |
| 项目评审和路线图 | 项目现状分析和演进计划 |
| 本地配置说明 | 本地开发环境配置指南 |
| 登录会话指南 | 登录和会话管理API参考 |
| 贡献指南 | 开发流程、编码规范、PR规范 |
| 更新日志 | 版本变更记录和升级指南 |
欢迎贡献!请先阅读 贡献指南
MIT License - 详见 LICENSE
- Prism - MVVM和模块化框架
- HandyControl - WPF控件库
- SqlSugar - ORM框架
- Serilog - 结构化日志框架
- ClosedXML - Excel读写库
- QuestPDF - PDF生成库
- BouncyCastle - 密码学库
- Yitter.IdGenerator - 分布式雪花ID生成器
- xUnit / Moq / FluentAssertions - 测试框架
