Я планирую какую-то работу по внедрению Dependency Injection в то, что в настоящее время является большой монолитной библиотекой, в попытке сделать библиотеку более простой для модульного тестирования, более понятной и, возможно, более гибкой в качестве бонуса.
Я решил использовать NInject, и мне очень нравится девиз Nate: "Сделай одно, сделай это хорошо" (перефразируя), и, похоже, это особенно хорошо работает в контексте DI.
Теперь мне стало интересно, должен ли я разделить то, что в настоящее время является одной большой сборкой, на несколько небольших сборок с непересекающимися наборами функций. Некоторые из этих небольших сборок будут иметь взаимозависимости, но далеко не все из них, потому что архитектура кода уже довольно слабо связана.
Обратите внимание, что эти наборы функций не являются тривиальными и небольшими для себя... он охватывает такие вещи, как связь клиент/сервер, сериализация, пользовательские типы сбора, абстракции файлов-IO, общие библиотеки подпрограмм, библиотеки потоков, стандартное ведение журнала и т.д..
Я вижу, что предыдущий вопрос: Что лучше, много небольших сборок или одна большая сборка? вид адресов этой проблемы, но с тем, что кажется даже более тонкую детализацию, что заставляет меня задаться вопросом, будут ли в этом случае отвечать ответы?
Кроме того, в различных вопросах, которые подходят к этой теме, общий ответ заключается в том, что наличие "слишком много" сборок вызвало неуточненные "боли" и "проблемы". Мне бы очень хотелось узнать конкретно, какими могут быть возможные нижние стороны этого подхода.
Я согласен с тем, что добавление 8 сборок, когда раньше было только 1, было "немного больно", но необходимость включать большую монолитную библиотеку для каждого приложения также не совсем идеальна... плюс добавление 8 сборок - это что-то вы делаете только один раз, поэтому я очень мало сочувствую этому аргументу (даже если бы я сначала пожаловался вместе со всеми).
Добавление:
До сих пор я не видел никаких аргументов против небольших собраний, поэтому я думаю, что я продолжу сейчас, как будто это не проблема. Если кто-нибудь может подумать о хороших основах с проверенными фактами, чтобы поддержать их, мне все равно было бы очень интересно услышать о них. (Я добавлю щедрость, как только смогу увеличить видимость)
РЕДАКТИРОВАТЬ: Переместил анализ производительности и результаты в отдельный ответ (см. ниже).