generated from VLADIMIR/template
update
This commit is contained in:
+11
-8
@@ -41,18 +41,21 @@ cmd/<name>/ сборка и запуск приложения
|
|||||||
|
|
||||||
```text
|
```text
|
||||||
cmd → app → services → repos
|
cmd → app → services → repos
|
||||||
↘ modules
|
└──────────────→ modules
|
||||||
```
|
```
|
||||||
|
|
||||||
- По прикладной логике `app` зависит только от `services`; `proto` используется
|
- `modules` — технический слой, доступный из любого уровня (`cmd`, `app`,
|
||||||
как транспортный контракт. Прямые зависимости от `repos` и `modules` в
|
`services`, `repos`). `proto` используется как транспортный контракт.
|
||||||
handlers и mapping запрещены.
|
- Прямые зависимости `app` от `repos` запрещены в production-коде handlers и
|
||||||
- `cmd` собирает граф зависимостей и может импортировать `services`, `repos` и
|
mapping; прикладные операции идут через `services`.
|
||||||
`modules` для wiring.
|
- `cmd/<name>/main.go` — composition root: для инициализации и wiring он может
|
||||||
|
импортировать любой внутренний слой (`app`, `services`, `repos`, `modules`).
|
||||||
- `services` не импортируют `app` и `proto`.
|
- `services` не импортируют `app` и `proto`.
|
||||||
- `repos` не знают о protobuf, HTTP, gRPC, ролях транспорта и UI.
|
- `repos` не знают о protobuf, HTTP, gRPC, ролях транспорта и UI.
|
||||||
- `modules` не знают о конкретном use case приложения. Если код нужен только
|
- `modules` не импортируют `app`, `services` и `repos`, не знают о конкретном
|
||||||
одному сервису, он остаётся в этом сервисе.
|
use case приложения и могут зависеть только от стандартной библиотеки и
|
||||||
|
других технических модулей без циклических зависимостей. Если код нужен
|
||||||
|
только одному сервису, он остаётся в этом сервисе.
|
||||||
- Циклические зависимости запрещены; не исправляй их дополнительным
|
- Циклические зависимости запрещены; не исправляй их дополнительным
|
||||||
`common`-пакетом без конкретной общей ответственности.
|
`common`-пакетом без конкретной общей ответственности.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user