第一章:项目概述与技术选型
1.1 项目背景
Blog v1.0 是一个基于 .NET 10 和 Vue 3 的全栈个人博客系统,灵感来源于即鹿无虞的设计理念 —— 在技术探索中懂得取舍,专注于核心功能。
本项目采用前后端分离架构,后端提供 RESTful API,前端使用 Vue 3 构建管理面板和博客前端。
1.2 技术选型
后端技术栈
| 技术 | 版本 | 用途 | |------|------|------| | .NET | 10.0 | 运行时 | | ASP.NET Core | 10.0 | Web 框架(Minimal API) | | SqlSugarCore | 5.1.4 | ORM | | PostgreSQL | 17 | 数据库 | | Redis | 7 | 缓存/黑名单 | | JWT Bearer | — | 认证 | | Serilog | — | 日志 | | HtmlAgilityPack | — | HTML 解析 | | ToolGood.Words | — | 敏感词过滤 | | BCrypt.Net | — | 密码哈希 |
前端技术栈
| 技术 | 版本 | 用途 | |------|------|------| | Vue | 3.5 | 前端框架 | | TypeScript | 6 | 类型安全 | | Element Plus | 2.14 | UI 组件库 | | Vite | 8 | 构建工具 | | Pinia | 3 | 状态管理 | | Vue Router | 5 | 路由 |
为什么选择这些技术?
SqlSugar ORM 提供了类似 MyBatis 的灵活性,同时保留了 LINQ 的强类型查询能力,支持多种数据库。
PostgreSQL 作为生产级数据库,提供 JSONB、全文搜索等强大功能。
Redis 用于 JWT Token 黑名单和热点数据缓存。
ToolGood.Words 基于 DFA 算法的敏感词过滤,性能优异。
1.3 总体架构
Blog.sln
├── Blog.Api # API 层 — 路由、中间件、过滤器
├── Blog.Common # 公共层 — 工具、错误码、Token、Redis
├── Blog.Core # 核心层 — ORM 配置、仓储、工作单元
├── Blog.Domain # 领域层 — 实体、DTO、枚举、配置
├── Blog.Services # 服务层 — 业务逻辑
└── Blog.Vue # 前端 — Vue 3 + Element Plus
分层职责
- API 层:接收 HTTP 请求,调用服务层,返回响应
- 服务层:业务逻辑编排,事务管理
- 领域层:数据模型、DTO、枚举定义
- 核心层:ORM 封装、仓储模式、工作单元
- 公共层:跨层共享的工具和基础设施
1.4 核心功能模块
- 用户系统 — 注册、登录、JWT 认证、角色管理
- 文章系统 — CRUD、Markdown 渲染、标签分类
- 评论系统 — 嵌套回复、敏感词过滤、垃圾评分
- 分类管理 — 数据库分类 + 文件夹映射
- 收藏功能 — 收藏夹、文章收藏
- 站点配置 — 运行时编辑、JSON 持久化
- 文件上传 — 本地存储 + 七牛云
- 数据统计 — 仪表盘、文章趋势
- 日志系统 — 审计日志、操作日志
1.5 部署架构
Docker Compose
├── PostgreSQL 17 # 数据库
├── Redis 7 # 缓存
└── Elasticsearch # 全文搜索(可选)
项目使用 Docker Compose 管理基础设施,后端通过 PublishSingleFile 发布为单文件可执行文件。
1.6 开发环境准备
# 1. 安装 .NET 10 SDK
# 2. 安装 Docker Desktop
# 3. 启动基础设施
docker-compose up -d postgres redis
# 4. 运行项目
cd Blog.Api
dotnet run
下一章我们将开始搭建项目结构和配置基础设施。