В главе 12 Внедрение зависимостей, принципы, практики и шаблоны , Марк Симанн и я описываем, что при работе с DI-контейнером существует несколько параметров конфигурации, а именно:
- Файлы конфигурации - отображение указывается в файлах конфигурации (обычно в формате XML или JSON)
Configuration as Code
- код явно определяет сопоставления
Auto-Registration
- Правила используются для определения местоположения подходящих компонентов с помощью отражения и для построения отображений.
В настоящее время вы подаете заявление Configuration as Code
. Однако, используя Auto-Registration
, вы применяете Convention over Configuration для регистрации компонентов вашего приложения с использованием отражения на основе указанного соглашения.
В разделе 12.3 мы подробно описываем, когда вам следует использовать DI-контейнер, и как вам следует его использовать. В итоге мы заявляем, что:
Использование Convention over Configuration с использованием Auto-Registration
может минимизировать объем обслуживания на Composition Root
почти до нуля.
Поэтому мы советуем:
a Composition Root
следует либо сфокусировать на Pure DI
с, возможно, несколькими типами с поздним связыванием, либо около Auto-Registration
с, необязательно, ограниченным количеством Configuration as Code
и конфигурационные файлы. Composition Root
, который фокусируется вокруг Configuration as Code
, не имеет смысла, и поэтому его следует избегать.
В главах 6 и 10 книги мы также описываем типы конструкций, которые вы можете использовать, которые, среди прочего, максимизируют соглашение по конфигурации и, вместе с ним, сводят к минимуму объем обслуживания вашей конфигурации DI.