В компании, в которой я сейчас работаю, мы поддерживаем 4 приложения Windows, которые в некоторой степени связаны.Для каждого приложения у нас есть решение от 50 до 100 проектов.Вероятно, есть 40 или 50 проектов, которые совместно используются одним или несколькими решениями.
Просто чтобы дать вам представление, более крупное решение имеет почти 90 проектов, 20 из которых являются проектами пользовательского интерфейса (основное приложение, проекты с пользовательскими элементами управления)., UI helper projects), еще 20 проектов Business Layer, вероятно, 30 или 40 проектов уровня Data Access, а остальные проекты Windows Service и специализированные проекты
Я всегда чувствовал, что в проекте слишком многокаждое решениеКонечно, мы говорим о больших приложениях, но я не понимаю, почему многие проекты не могут быть объединены.В моей предыдущей компании у нас фактически был один проект для бизнес-уровня, один проект для DAL и, очевидно, один проект для каждого окна или веб-приложения.
Вот некоторые из проблем, с которыми я столкнулсяиз-за большого количества проектов:
- Большое время компиляции.
- Классы, которые обычно должны быть частными, должны быть общедоступными, чтобы быть доступными для других проектов в том же слое.
- Я недавно начал использовать профилировщик Eqateq.Пробная версия позволяет профилировать до 10 библиотек.Моя ситуация явно усложняет использование этого приложения.
- Отслеживание ссылок между проектами довольно сложно.Я уверен, что между проектами много неиспользованных ссылок.
В отличие от этого, я не нашел преимущества в этой ситуации.
Итак, мои вопросы:
- Когда вы решите создать новый проект, а не просто создать папку в текущем проекте?
- Есть ли какие-то преимущества, которые я пропускаю?
ОБНОВЛЕНИЕ:
Имейте в виду, что я не предлагаю иметь один единственный проект для всего.Как минимум, должен быть один проект для DAL, один для BL и один для каждого приложения пользовательского интерфейса.И я понимаю, что даже это нереально для большинства приложений.Я пытаюсь понять, каковы наилучшие методы определения уровня «единой ответственности» за сборку?Я имею в виду, что это очень субъективный вопрос, который, если довести его до крайности, приведет к тому, что в каждом классе будет одна сборка.
ОБНОВЛЕНИЕ 2:
Все три ответа дают ценную информацию, но какЯ могу выбрать только один, который я выбрал Доку для его комментария о том, как определить количество проектов DAL.Я также ссылаюсь на другие вопросы, которые я только что нашел, которые имеют связанную информацию: Здесь и здесь .Я также рекомендую прочитать эту статью .