Equinox Project开发规范:代码组织与命名约定的最佳实践
Equinox Project是一个基于.NET Core构建的企业级应用程序模板,采用领域驱动设计(DDD)、CQRS和事件溯源等现代化架构模式。掌握其代码组织与命名规范对于构建可维护、可扩展的企业应用至关重要。✨
🏗️ 项目结构分层规范
Equinox Project采用清晰的分层架构,每个项目都有明确的职责边界:
核心领域层
- Equinox.Domain - 核心业务逻辑和领域模型
- Equinox.Domain.Core - 领域基础设施和基础类型
应用服务层
- Equinox.Application - 应用服务编排和业务用例实现
基础设施层
- Equinox.Infra.Data - 数据持久化实现
- Equinox.Infra.CrossCutting.Identity - 身份认证和授权服务
表现层
- Equinox.Services.Api - Web API接口
- Equinox.UI.Web - Web用户界面
📁 目录结构命名约定
1. 领域层目录规范
在 src/Equinox.Domain/ 目录下,严格遵循以下结构:
Commands/ # 命令对象
├── Validations/ # 命令验证器
Events/ # 领域事件
Models/ # 领域模型
Interfaces/ # 仓储接口
2. 应用层目录规范
在 src/Equinox.Application/ 中采用:
ViewModels/ # 视图模型
Services/ # 应用服务
EventSourcedNormalizers/ # 事件溯源规范化器
Extensions/ # 扩展方法
Interfaces/ # 应用服务接口
🔤 命名约定与最佳实践
类名命名规则
领域实体:使用业务术语,如 Customer 命令对象:以 Command 结尾,如 RegisterNewCustomerCommand 事件对象:以 Event 结尾,如 CustomerRegisteredEvent 仓储接口:以 Repository 结尾,如 ICustomerRepository
文件命名约定
- 命令文件:
RegisterNewCustomerCommand.cs - 验证器文件:
RegisterNewCustomerCommandValidation.cs - 事件处理器:
CustomerEventHandler.cs
🎯 核心代码组织原则
单一职责原则
每个类只负责一个明确的职责,例如:
CustomerCommandHandler.cs- 处理客户相关命令CustomerEventHandler.cs- 处理客户相关事件
接口隔离原则
每个接口都定义明确的契约,如:
ICustomerAppService.cs- 客户应用服务接口ICustomerRepository.cs- 客户仓储接口
依赖倒置原则
高层模块不依赖低层模块,两者都依赖于抽象。例如在 src/Equinox.Infra.CrossCutting.IoC/NativeInjectorBootStrapper.cs 中通过依赖注入容器来管理依赖关系。
📝 验证器组织规范
Equinox Project采用 FluentValidator 进行验证,验证器组织在专门的 Validations/ 目录中:
Validations/
├── CustomerValidation.cs
├── RegisterNewCustomerCommandValidation.cs
├── UpdateCustomerCommandValidation.cs
└── RemoveCustomerCommandValidation.cs
每个验证器都对应特定的命令或实体,确保验证逻辑的集中管理。
🔄 事件溯源架构规范
事件存储结构
在 src/Equinox.Infra.Data/EventSourcing/ 中:
SqlEventStore.cs- SQL事件存储实现IEventStoreRepository.cs- 事件存储仓储接口
历史数据管理
通过 src/Equinox.Application/EventSourcedNormalizers/ 中的规范化器来处理事件重放和状态重建。
🚀 配置管理最佳实践
Equinox Project将配置按功能模块分离:
- API配置:
src/Equinox.Services.Api/Configurations/ - Web配置:
src/Equinox.UI.Web/Configurations/
每个配置类都遵循单一职责原则,如 ApiConfig.cs、SwaggerConfig.cs、DatabaseConfig.cs 等。
💡 实用开发建议
- 遵循现有模式 - 新增功能时参考现有代码的组织方式
- 保持一致性 - 在整个项目中统一使用相同的命名约定
- 模块化思维 - 将相关功能组织在同一目录下
- 明确边界 - 各层之间通过接口进行通信,避免直接依赖
通过遵循这些代码组织和命名规范,Equinox Project确保了代码的可读性、可维护性和可扩展性。这些最佳实践不仅适用于Equinox项目本身,也可以作为其他.NET企业级应用开发的参考标准。🎉
掌握这些规范将帮助你快速上手Equinox项目开发,构建高质量的软件解决方案!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



