Я думаю, что это действительно зависит от предпочтений программиста.
На самом деле все сводится к зависимостям. Больше вещей в одной DLL означает, что она естественным образом создаст гораздо больше зависимых элементов в этой DLL.
Лично я склонен следовать тем же принципам, что и структура MS, по следующим причинам:
- Для новичков в пользовательской «структуре» легче найти то, что они хотят (например,
CompName.Web.UI
и CompName.Data
.
- Это помогает уменьшить зависимости до «очевидного» выбора. Я не слишком заинтересован в DLL-библиотеках типа
CompName.Common
, поскольку в них не указаны четкие возможные зависимости, в то время как CompName.Web.UI
предполагает, что она, вероятно, будет использоваться любыми веб-приложениями.
- Очевидное уменьшение размера, поскольку содержимое DLL будет более "релевантным".
DLL для уровней в приложении имеют смысл, типы внутри должны быть только теми типами, которые требуются бизнес-моделью, другие объекты (такие как утилиты, доступ к данным и т. Д.) Должны находиться в своих собственных библиотеках.