Отдельные контейнеры против одного контейнера - Unity
В настоящее время моя команда работает над проектом, который использует модель "процесса". Каждый процесс состоит из "шагов", эти шаги могут быть каждым "IValidationStep" или "ITransactionStep". В каждом случае логика отличается (шаги транзакции могут откатываться).
Эти шаги будут решены с помощью Unity.
В нашем проекте мы собираемся построить общую логику валидации и транзакций, используя шаги, которые можно заменить в конфигурации Unity.
В настоящее время мы обсуждаем, следует ли разделять контейнеры (контейнер на поток, который состоит из процессов проверки и транзакций) или просто хранить все это в одном контейнере.
Я хотел бы получить ваше честное мнение о разделении контейнеров против одного контейнера. Имейте в виду, что наш проект должен быть полностью тестируемым с помощью модульных тестов.
2 ответа
Если ваш код должен быть полностью тестируемым, ваши процессы, вероятно, получат все зависимости (шаги) посредством внедрения зависимостей. В этом случае процесс будет полностью независим от Unity и не будет содержать ссылки на UnityContainer
, Единственный код, который будет иметь ссылку на UnityContainer
будет логика создания и выполнения ваших процессов. Это приводит меня к одиночке UnityContainer
с именованными типами регистрации.
Почему бы не начать с одного контейнера и рефакторинга для нескольких при необходимости, иногда вам просто нужно начать и посмотреть, где вы закончите, чтобы узнать правильный подход...