settings
folder
folder
folder-class
folder
folder-views
folder-public
powershell
docker
file
visualstudio
javascript
nodejs
csharp
csharp

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 (可选,用于容器化部署)

本地开发

  1. 构建前端资源

    项目使用 esbuild 构建前端静态资源。

    npm install esbuild --save-dev
    node ./esbuild.config.js
    
  2. 配置文件

    项目主要依赖 AgileConfig 进行配置,但基础配置位于 appsettings.json。确保配置了正确的 AgileConfig 连接信息。

    "AgileConfig": {
      "appId": "your-app-id",
      "secret": "your-secret",
      "nodes": "http://your-agile-config-server",
      "env": "DEV"
    }
    
  3. 运行项目

    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 × 4020起始尺寸,小巧灵活
2樱桃60 × 6030+20px
3橘子80 × 8040+20px
4柠檬100 × 10050+20px
5猕猴桃120 × 12060+20px
6番茄140 × 14070+20px
7桃子160 × 16080+20px
8菠萝190 × 19095+30px(开始显著变大)
9椰子220 × 220110+30px
10半西瓜260 × 260130+40px(极具压迫感)
11大西瓜300 × 300150+40px(占据大部分屏幕宽度)

大西瓜的合成路径:葡萄→樱桃→橘子→柠檬→猕猴桃→番茄→桃子→菠萝→椰子→半西瓜→大西瓜。

葡萄: 40 × 40 樱桃: 60 × 60 橘子: 80 × 80 柠檬: 100 × 100 猕猴桃:120 × 120 番茄: 140 × 140 桃子: 160 × 160 菠萝: 190 × 190 椰子: 220 × 220 半个西瓜:260 × 260 大西瓜: 300 × 300

评论加载中...