Dpz.Core.Web
Dpz.Core.Web 是 dpz.core 项目的核心 Web 前端/后端应用,基于 ASP.NET Core (.NET 10) 构建。它集成了丰富的功能,包括博客文章、动态、评论、实时聊天、身份验证等。
🛠 技术栈
本项目使用了以下主要技术和框架:
- 核心框架: .NET 10 (ASP.NET Core MVC)
- 数据库/缓存: Redis (StackExchange.Redis)
- 配置中心: AgileConfig
- 身份认证: OpenIddict (OAuth2/OIDC), ASP.NET Core Identity
- 后台任务: Hangfire
- 实时通信: SignalR (Redis Backplane)
- 响应式/设备检测: Wangkanai.Detection, Wangkanai.Responsive
- 日志: Serilog
- Web 优化: WebMarkupMin (HTML/XML 压缩), Brotli/Gzip 压缩
- 其他: Markdig (Markdown), ImageSharp (图片处理)
✨ 功能特性
- 内容管理: 文章、动态 (Mumble)、评论、代码片段管理。
- 用户系统: 基于 Cookie 和 OpenIddict 的身份验证,支持第三方登录整合。
- 实时互动: 集成 SignalR 实现实时聊天、弹幕通知等功能。
- 设备适配: 自动检测设备类型(移动端/桌面端)并适配视图。
- 安全防护:
- IP 限流 (IpRateLimit)
- 爬虫/Bot 拦截 (RejectBotsMiddleware)
- 跨域资源共享 (CORS) 配置
- 性能优化:
- 响应式缓存 (ResponseCaching)
- 静态资源指纹/缓存控制
- HTML/XML 最小化
🚀 快速开始
前置要求
- .NET 10 SDK
- Node.js (用于构建前端资源)
- Redis Server
- Docker (可选,用于容器化部署)
本地开发
构建前端资源
项目使用
esbuild构建前端静态资源。npm install esbuild --save-dev node ./esbuild.config.js配置文件
项目主要依赖
AgileConfig进行配置,但基础配置位于appsettings.json。确保配置了正确的 AgileConfig 连接信息。"AgileConfig": { "appId": "your-app-id", "secret": "your-secret", "nodes": "http://your-agile-config-server", "env": "DEV" }运行项目
dotnet run
🐳 Docker 部署
项目提供了详细的 Docker 部署支持。
构建镜像
# 切换到解决方案根目录
cd /home/ubuntu/project/dpz.core/src
# 构建镜像
sudo docker build -t dpz.core -f Dpz.Core.Web/Dockerfile .
运行容器
生产环境
sudo docker run --restart=always \
--name dpz.core \
-e TZ=Asia/Shanghai \
-p 2372:8080 \
-d dpz.core:latest
预发布环境 (UAT)
sudo docker build -t dpz.core.uat -f Dpz.Core.Web/Dockerfile .
sudo docker run --restart=always \
--name dpz.core.uat \
-e "AgileConfig:env=STAGING" \
-e TZ=Asia/Shanghai \
-p 33801:8080 \
-d dpz.core.uat:latest
测试环境
sudo docker network create dpz.core # 如果需要
sudo docker build -t dpz.core.test -f Dpz.Core.Web/Dockerfile .
sudo docker run --restart=always \
--name dpz.core.test \
-e "AgileConfig:env=TEST" \
-e TZ=Asia/Shanghai \
-p 33803:8080 \
-d dpz.core.test:latest
⚙️ 配置说明
拦截规则 (InterceptRules)
项目支持通过配置定义请求拦截规则,用于防御爬虫和恶意请求。
{
"InterceptRules": [
{ "Type": "UserAgent", "Pattern": "*bot*" },
{ "Type": "ClientIp", "Pattern": "192.168.1.*" },
{ "Type": "Uri", "Pattern": "/admin/*" }
]
}
IIS Web.Config
如果使用 IIS 托管,项目包含预配置的 web.config 规则,主要用于文件扩展名过滤,确保安全性。
📂 项目结构
Controllers/: MVC 控制器,处理业务逻辑。Views/: Razor 视图文件,包含各个模块的页面。wwwroot/: 静态资源(CSS, JS, Images, Favicon)。Middleware/: 自定义中间件(如RejectBotsMiddleware)。Library/: 辅助类库、扩展方法、TagHelpers。Models/: 视图模型 (ViewModel)。Program.cs: 应用程序入口、服务注册和中间件管道配置。
📝 许可证
Copyright © dpangzi.
合成大西瓜
| 等级 | 水果名称 | 素材宽度 × 高度 (px) | 物理碰撞半径 (px) | 尺寸递增说明 |
|---|---|---|---|---|
| 1 | 葡萄 | 40 × 40 | 20 | 起始尺寸,小巧灵活 |
| 2 | 樱桃 | 60 × 60 | 30 | +20px |
| 3 | 橘子 | 80 × 80 | 40 | +20px |
| 4 | 柠檬 | 100 × 100 | 50 | +20px |
| 5 | 猕猴桃 | 120 × 120 | 60 | +20px |
| 6 | 番茄 | 140 × 140 | 70 | +20px |
| 7 | 桃子 | 160 × 160 | 80 | +20px |
| 8 | 菠萝 | 190 × 190 | 95 | +30px(开始显著变大) |
| 9 | 椰子 | 220 × 220 | 110 | +30px |
| 10 | 半西瓜 | 260 × 260 | 130 | +40px(极具压迫感) |
| 11 | 大西瓜 | 300 × 300 | 150 | +40px(占据大部分屏幕宽度) |
大西瓜的合成路径:葡萄→樱桃→橘子→柠檬→猕猴桃→番茄→桃子→菠萝→椰子→半西瓜→大西瓜。
葡萄: 40 × 40 樱桃: 60 × 60 橘子: 80 × 80 柠檬: 100 × 100 猕猴桃:120 × 120 番茄: 140 × 140 桃子: 160 × 160 菠萝: 190 × 190 椰子: 220 × 220 半个西瓜:260 × 260 大西瓜: 300 × 300
评论加载中...