Несколько шаблонов, которые я нашел полезными для организации проектов в рамках решения:
У меня почти всегда есть "общие" или "утилитарные" проекты.Этот проект должен иметь очень мало зависимостей, поэтому его можно легко использовать везде и везде в моем решении (или, возможно, в других решениях).Вы удивитесь, сколько маленьких вспомогательных классов попадет в этот проект.
Я всегда стараюсь разделить свою бизнес-логику на один проект (или, скорее, набор проектов), а мой код начальной загрузки / провайдера - на другойпроект (или набор проектов).Мои классы начальной загрузки / провайдера зависят от контекста (они могут предполагать наличие аргументов HttpContext или аргументов командной строки и т. Д.), Но они не содержат бизнес-логики.Мои бизнес-классы реализуют бизнес-логику, но не предполагают наличие или отсутствие каких-либо специфических для контекста элементов.Таким образом, если я изначально создаю систему как консольное приложение, я могу позже написать набор загрузочных / провайдеров службы Windows и очень быстро преобразовать их в службу Windows с минимальным влиянием на бизнес-классы.1005 *
Как и в классах начальной загрузки / провайдера, я также пытаюсь изолировать свой уровень данных от своих бизнес-классов.Но это обычное базовое разделение, которое каждый слышал 1000 раз, поэтому вряд ли стоит упоминать.
Бизнес-логика многих систем слишком сложна, чтобы вписаться в один проект и поддерживать определенную степень сопровождения кода.Таким образом, я обычно оказываюсь с несколькими проектами бизнес-логики, сгруппированными по функциональным областям («управление клиентами», «инвентаризация продуктов» и т. Д.).