Fengling Member - 会员服务
- Remove .github/instructions/ directory (14 files) - Remove .github/copilot-instructions.md - Remove scripts/EXAMPLES.md and README.md - Switch to CleanDDD workflow (cleanddd-* skills) |
||
|---|---|---|
| eng | ||
| scripts | ||
| src | ||
| vs-snippets | ||
| .dockerignore | ||
| .gitattributes | ||
| .gitignore | ||
| Directory.Build.props | ||
| Directory.Build.targets | ||
| Directory.Packages.props | ||
| Fengling.Member.sln.DotSettings | ||
| NuGet.Config | ||
| README.md | ||
Fengling.Member
环境准备
使用 Aspire(推荐)
如果您的项目启用了 Aspire 支持(使用 --UseAspire 参数创建),只需要 Docker 环境即可,无需手动配置各种基础设施服务。
# 仅需确保 Docker 环境运行
docker version
# 直接运行 AppHost 项目,Aspire 会自动管理所有依赖服务
cd src/Fengling.Member.AppHost
dotnet run
Aspire 会自动为您:
- 启动和管理数据库容器(MySQL、SQL Server、PostgreSQL、MongoDB 等)
- 启动和管理消息队列容器(RabbitMQ、Kafka、NATS 等)
- 启动和管理 Redis 容器
- 提供统一的 Aspire Dashboard 界面查看所有服务状态
- 自动配置服务间的连接字符串和依赖关系
访问 Aspire Dashboard(通常在 http://localhost:15888)可以查看和管理所有服务。
推荐方式:使用初始化脚本(不使用 Aspire 时)
如果您没有启用 Aspire,项目提供了完整的基础设施初始化脚本,支持快速搭建开发环境:
使用 Docker Compose(推荐)
# 进入脚本目录
cd scripts
# 启动默认基础设施 (MySQL + Redis + RabbitMQ)
docker-compose up -d
# 使用 SQL Server 替代 MySQL
docker-compose --profile sqlserver up -d
# 使用 PostgreSQL 替代 MySQL
docker-compose --profile postgres up -d
# 使用 Kafka 替代 RabbitMQ
docker-compose --profile kafka up -d
# 停止所有服务
docker-compose down
# 停止并删除数据卷(完全清理)
docker-compose down -v
使用初始化脚本
# Linux/macOS
cd scripts
./init-infrastructure.sh
# Windows PowerShell
cd scripts
.\init-infrastructure.ps1
# 清理环境
./clean-infrastructure.sh # Linux/macOS
.\clean-infrastructure.ps1 # Windows
手动方式:单独运行 Docker 容器
如果需要手动控制每个容器,可以使用以下命令:
# Redis
docker run --restart unless-stopped --name netcorepal-redis -p 6379:6379 -v netcorepal_redis_data:/data -d redis:7.2-alpine redis-server --appendonly yes --databases 1024
# MySQL
docker run --restart unless-stopped --name netcorepal-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_CHARACTER_SET_SERVER=utf8mb4 -e MYSQL_COLLATION_SERVER=utf8mb4_unicode_ci -e TZ=Asia/Shanghai -v netcorepal_mysql_data:/var/lib/mysql -d mysql:8.0
# RabbitMQ
docker run --restart unless-stopped --name netcorepal-rabbitmq -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest -v netcorepal_rabbitmq_data:/var/lib/rabbitmq -d rabbitmq:3.12-management-alpine
服务访问信息
启动后,可以通过以下地址访问各个服务:
- Redis:
81.68.223.70:16379,password=sl52788542 - MySQL:
localhost:3306(root/123456) - RabbitMQ AMQP:
localhost:5672(guest/guest) - RabbitMQ 管理界面: http://localhost:15672 (guest/guest)
- SQL Server:
localhost:1433(sa/Test123456!) - PostgreSQL:
localhost:5432(postgres/123456) - Kafka:
localhost:9092 - Kafka UI: http://localhost:8080
IDE 代码片段配置
本模板提供了丰富的代码片段,帮助您快速生成常用的代码结构。
Visual Studio 配置
运行以下 PowerShell 命令自动安装代码片段:
cd vs-snippets
.\Install-VSSnippets.ps1
或者手动安装:
- 打开 Visual Studio
- 转到
工具>代码片段管理器 - 导入
vs-snippets/NetCorePalTemplates.snippet文件
VS Code 配置
VS Code 的代码片段已预配置在 .vscode/csharp.code-snippets 文件中,打开项目时自动生效。
JetBrains Rider 配置
Rider 用户可以直接使用 Fengling.Member.sln.DotSettings 文件中的 Live Templates 配置。
可用的代码片段
NetCorePal (ncp) 快捷键
| 快捷键 | 描述 | 生成内容 |
|---|---|---|
ncpcmd |
NetCorePal 命令 | ICommand 实现(含验证器和处理器) |
ncpcmdres |
命令(含返回值) | ICommand<Response> 实现 |
ncpar |
聚合根 | Entity<Id> 和 IAggregateRoot |
ncprepo |
NetCorePal 仓储 | IRepository 接口和实现 |
ncpie |
集成事件 | IntegrationEvent 和处理器 |
ncpdeh |
域事件处理器 | IDomainEventHandler 实现 |
ncpiec |
集成事件转换器 | IIntegrationEventConverter |
ncpde |
域事件 | IDomainEvent 记录 |
Endpoint (ep) 快捷键
| 快捷键 | 描述 | 生成内容 |
|---|---|---|
epp |
FastEndpoint(NCP风格) | 完整的垂直切片实现 |
epreq |
仅请求端点 | Endpoint<Request> |
epres |
仅响应端点 | EndpointWithoutRequest<Response> |
epdto |
端点 DTOs | Request 和 Response 类 |
epval |
端点验证器 | Validator<Request> |
epmap |
端点映射器 | Mapper<Request, Response, Entity> |
epfull |
完整端点切片 | 带映射器的完整实现 |
epsum |
端点摘要 | Summary<Endpoint, Request> |
epnoreq |
无请求端点 | EndpointWithoutRequest |
epreqres |
请求响应端点 | Endpoint<Request, Response> |
epdat |
端点数据 | 静态数据类 |
更多详细配置请参考:vs-snippets/README.md
依赖对框架与组件
- NetCorePal Cloud Framework
- ASP.NET Core
- EFCore
- CAP
- MediatR
- FluentValidation
- Swashbuckle.AspNetCore.Swagger
数据库迁移
# 安装工具 SEE: https://learn.microsoft.com/zh-cn/ef/core/cli/dotnet#installing-the-tools
dotnet tool install --global dotnet-ef --version 9.0.0
# 强制更新数据库
dotnet ef database update -p src/Fengling.Member.Infrastructure
# 创建迁移 SEE:https://learn.microsoft.com/zh-cn/ef/core/managing-schemas/migrations/?tabs=dotnet-core-cli
dotnet ef migrations add InitialCreate -p src/Fengling.Member.Infrastructure
代码分析可视化
框架提供了强大的代码流分析和可视化功能,帮助开发者直观地理解DDD架构中的组件关系和数据流向。
🎯 核心特性
- 自动代码分析:通过源生成器自动分析代码结构,识别控制器、命令、聚合根、事件等组件
- 多种图表类型:支持架构流程图、命令链路图、事件流程图、类图等多种可视化图表
- 交互式HTML可视化:生成完整的交互式HTML页面,内置导航和图表预览功能
- 一键在线编辑:集成"View in Mermaid Live"按钮,支持一键跳转到在线编辑器
🚀 快速开始
安装命令行工具来生成独立的HTML文件:
# 安装全局工具
dotnet tool install -g NetCorePal.Extensions.CodeAnalysis.Tools
# 进入项目目录并生成可视化文件
cd src/Fengling.Member.Web
netcorepal-codeanalysis generate --output architecture.html
✨ 主要功能
-
交互式HTML页面:
- 左侧树形导航,支持不同图表类型切换
- 内置Mermaid.js实时渲染
- 响应式设计,适配不同设备
- 专业的现代化界面
-
一键在线编辑:
- 每个图表右上角的"View in Mermaid Live"按钮
- 智能压缩算法优化URL长度
- 自动跳转到Mermaid Live Editor
- 支持在线编辑、导出图片、生成分享链接
📖 详细文档
完整的使用说明和示例请参考:
关于监控
这里使用了prometheus-net作为与基础设施prometheus集成的监控方案,默认通过地址 /metrics 输出监控指标。