# STD **Repository Path**: wisdom-win/std ## Basic Information - **Project Name**: STD - **Description**: No description available - **Primary Language**: C# - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-14 - **Last Updated**: 2025-07-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # STD - .NET 8 高可用微服务架构 一个基于 .NET 8 构建的企业级微服务架构项目,采用领域驱动设计(DDD)和清洁架构(Clean Architecture)模式。 ## 🏗️ 架构特点 ### 技术栈 - **.NET 8** - 最新的.NET框架 - **ASP.NET Core** - Web API框架 - **Entity Framework Core** - ORM框架 - **Docker & Docker Compose** - 容器化部署 - **Consul** - 服务发现和配置管理 - **Ocelot** - API网关 - **Redis** - 缓存和会话存储 - **RabbitMQ** - 消息队列 - **PostgreSQL/MySQL/SQL Server/Oracle/SQLite** - 多数据库支持 - **Serilog** - 结构化日志 - **Prometheus & Grafana** - 监控和可视化 - **MediatR** - 中介者模式实现CQRS - **AutoMapper** - 对象映射 - **FluentValidation** - 数据验证 ### 架构模式 - **领域驱动设计 (DDD)** - 以业务领域为核心 - **清洁架构 (Clean Architecture)** - 分层架构设计 - **CQRS** - 命令查询职责分离 - **微服务架构** - 服务拆分和独立部署 - **事件驱动架构** - 异步消息处理 ## 📁 项目结构 ``` STD/ ├── src/ # 源代码 │ ├── Shared/ # 共享库 │ │ ├── Common/ # 通用组件 │ │ │ ├── Enums/ # 枚举定义 │ │ │ ├── Extensions/ # 扩展方法 │ │ │ └── Helpers/ # 帮助类 │ │ ├── Domain/ # 领域层 │ │ │ ├── Entities/ # 实体 │ │ │ ├── ValueObjects/ # 值对象 │ │ │ └── Events/ # 领域事件 │ │ ├── Infrastructure/ # 基础设施层 │ │ │ ├── Database/ # 数据库相关 │ │ │ ├── Caching/ # 缓存 │ │ │ └── Messaging/ # 消息队列 │ │ └── Contracts/ # 契约层 │ │ └── DTOs/ # 数据传输对象 │ ├── Services/ # 微服务 │ │ └── UserService/ # 用户服务 │ │ ├── Domain/ # 领域层 │ │ ├── Application/ # 应用层 │ │ ├── Infrastructure/ # 基础设施层 │ │ └── Presentation/ # 表现层 │ └── Gateway/ # API网关 ├── tests/ # 测试项目 │ └── Unit/ # 单元测试 ├── config/ # 配置文件 ├── docs/ # 文档 ├── scripts/ # 脚本文件 └── monitoring/ # 监控配置 ``` ## 🚀 快速开始 ### 前置要求 - .NET 8 SDK - Docker Desktop - Docker Compose ### 启动项目 1. **克隆项目** ```bash git clone cd STD ``` 2. **启动所有服务** ```bash ./scripts/start.sh ``` 3. **选择数据库类型** 脚本会提示选择要使用的数据库类型: - PostgreSQL (默认) - MySQL - SQL Server - Oracle - SQLite - 全部启动 ### 访问服务 启动完成后,可以通过以下地址访问各个服务: - **API网关**: http://localhost:5000 - **Consul UI**: http://localhost:8500 - **Grafana**: http://localhost:3000 (admin/admin) - **Prometheus**: http://localhost:9090 - **RabbitMQ管理**: http://localhost:15672 (admin/admin) ### API测试 ```bash # 创建用户 curl -X POST http://localhost:5000/api/users \ -H "Content-Type: application/json" \ -d '{ "username": "testuser", "email": "test@example.com", "password": "password123", "fullName": "Test User", "phoneNumber": "13800138000" }' # 获取用户列表 curl http://localhost:5000/api/users # 获取特定用户 curl http://localhost:5000/api/users/{userId} ``` ## 🏛️ 架构详解 ### 分层架构 1. **表现层 (Presentation)** - 控制器 (Controllers) - API端点 - 请求/响应处理 2. **应用层 (Application)** - 命令处理器 (Command Handlers) - 查询处理器 (Query Handlers) - 应用服务 (Application Services) 3. **领域层 (Domain)** - 实体 (Entities) - 值对象 (Value Objects) - 领域服务 (Domain Services) - 仓储接口 (Repository Interfaces) 4. **基础设施层 (Infrastructure)** - 数据访问 (Data Access) - 外部服务集成 - 消息队列 - 缓存实现 ### 设计模式 - **CQRS**: 命令和查询分离 - **Repository Pattern**: 数据访问抽象 - **Factory Pattern**: 对象创建 - **Mediator Pattern**: 解耦组件通信 - **Strategy Pattern**: 数据库提供者选择 ## 🔧 配置说明 ### 数据库配置 项目支持多种数据库,通过配置文件切换: ```json { "Database": { "Type": "PostgreSQL", "Server": "localhost", "Port": 5432, "Database": "userservice", "Username": "postgres", "Password": "password" } } ``` ### 服务配置 每个微服务都有独立的配置文件: - `config/services/userservice.json` - 用户服务配置 - `config/databases/` - 数据库配置文件 ## 🧪 测试 ### 运行测试 ```bash # 运行所有测试 dotnet test # 运行特定项目测试 dotnet test tests/Unit/UserService.UnitTests.csproj # 生成测试覆盖率报告 dotnet test --collect:"XPlat Code Coverage" ``` ### 测试策略 - **单元测试**: 测试业务逻辑和领域模型 - **集成测试**: 测试数据访问和外部服务 - **端到端测试**: 测试完整的API流程 ## 📊 监控和日志 ### 日志 使用Serilog进行结构化日志记录: ```csharp _logger.LogInformation("用户 {UserId} 已创建", user.Id); ``` ### 监控 - **Prometheus**: 指标收集 - **Grafana**: 数据可视化 - **健康检查**: 服务状态监控 ## 🔄 CI/CD ### 构建脚本 ```bash # 构建项目 ./scripts/build/build.sh # 发布项目 dotnet publish --configuration Release ``` ### Docker部署 ```bash # 构建镜像 docker-compose build # 启动服务 docker-compose up -d # 查看日志 docker-compose logs -f ``` ## 📚 开发指南 ### 添加新服务 1. 在 `src/Services/` 下创建新服务目录 2. 按照分层架构组织代码 3. 在 `Gateway/ocelot.json` 中添加路由配置 4. 更新 `docker-compose.yml` ### 添加新功能 1. 在领域层定义实体和业务规则 2. 在应用层创建命令/查询处理器 3. 在基础设施层实现数据访问 4. 在表现层添加API端点 ### 代码规范 - 使用C#编码规范 - 遵循SOLID原则 - 编写单元测试 - 添加XML文档注释 ## 🤝 贡献指南 1. Fork项目 2. 创建功能分支 3. 提交更改 4. 推送到分支 5. 创建Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 🆘 支持 如果您遇到问题或有建议,请: 1. 查看 [文档](docs/) 2. 搜索 [Issues](../../issues) 3. 创建新的 Issue --- **注意**: 这是一个示例项目,用于演示企业级微服务架构的最佳实践。在生产环境中使用前,请根据实际需求进行调整和优化。