Отдельные контейнеры против одного контейнера - Unity

В настоящее время моя команда работает над проектом, который использует модель "процесса". Каждый процесс состоит из "шагов", эти шаги могут быть каждым "IValidationStep" или "ITransactionStep". В каждом случае логика отличается (шаги транзакции могут откатываться).

Эти шаги будут решены с помощью Unity.

В нашем проекте мы собираемся построить общую логику валидации и транзакций, используя шаги, которые можно заменить в конфигурации Unity.

В настоящее время мы обсуждаем, следует ли разделять контейнеры (контейнер на поток, который состоит из процессов проверки и транзакций) или просто хранить все это в одном контейнере.

Я хотел бы получить ваше честное мнение о разделении контейнеров против одного контейнера. Имейте в виду, что наш проект должен быть полностью тестируемым с помощью модульных тестов.

2 ответа

Решение

Если ваш код должен быть полностью тестируемым, ваши процессы, вероятно, получат все зависимости (шаги) посредством внедрения зависимостей. В этом случае процесс будет полностью независим от Unity и не будет содержать ссылки на UnityContainer, Единственный код, который будет иметь ссылку на UnityContainer будет логика создания и выполнения ваших процессов. Это приводит меня к одиночке UnityContainer с именованными типами регистрации.

Почему бы не начать с одного контейнера и рефакторинга для нескольких при необходимости, иногда вам просто нужно начать и посмотреть, где вы закончите, чтобы узнать правильный подход...

Другие вопросы по тегам