Loading...
Loading...
Compare original and translation side by side
$ARGUMENTS$ARGUMENTS[0]$ARGUMENTS[1]$ARGUMENTS$ARGUMENTS[0]$ARGUMENTS[1]scripts/validate-boundaries.sh <modules-dir>scripts/validate-shared-kernel.sh <shared-dir> <modules-dir>scripts/check-circular-deps.sh <modules-dir>scripts/validate-boundaries.sh <modules-dir>scripts/validate-shared-kernel.sh <shared-dir> <modules-dir>scripts/check-circular-deps.sh <modules-dir>| Principle | What It Means | How to Enforce |
|---|---|---|
| High Cohesion | Module contains everything for its domain | Domain + Application + Infrastructure + API per module |
| Low Coupling | Modules don't depend on each other's internals | Communication only via shared contracts/interfaces |
| Single Responsibility | Each module has one bounded context | One business domain per module directory |
| Encapsulated Data | Module owns its data | Separate DB schema per module, no cross-module queries |
| Explicit Dependencies | All module dependencies are visible | Module registration file listing required contracts |
| Domain-Driven Design | Modules align with business domains | Named after business capabilities, not technical layers |
| 原则 | 含义 | 实施方式 |
|---|---|---|
| 高内聚 | 模块包含其领域的所有相关内容 | 每个模块包含Domain + Application + Infrastructure + API层 |
| 低耦合 | 模块不依赖其他模块的内部实现 | 仅通过共享契约/接口通信 |
| 单一职责 | 每个模块对应一个限界上下文 | 每个模块目录对应一个业务领域 |
| 数据封装 | 模块拥有自身数据的控制权 | 每个模块使用独立的DB schema,禁止跨模块查询 |
| 依赖显式化 | 所有模块依赖均可见 | 模块注册文件列出所需契约 |
| 领域驱动设计 | 模块与业务领域对齐 | 以业务能力命名,而非技术层级 |
/modular-monolith dotnet ECommerceApp Product Order Payment Shipping
/modular-monolith spring-boot MyShop catalog basket checkout
/modular-monolith nestjs SaasApp tenant billing notification
/modular-monolith go FinanceApp accounts transactions reporting/modular-monolith dotnet ECommerceApp Product Order Payment Shipping
/modular-monolith spring-boot MyShop catalog basket checkout
/modular-monolith nestjs SaasApp tenant billing notification
/modular-monolith go FinanceApp accounts transactions reporting