Несколько советов по разделению вашего проекта на несколько проектов:
Одной из причин разделения проекта на несколько библиотек классов является возможность повторного использования. Я еще не видел, как часть приложения BLL или DAL повторно использовалась в другом приложении. Вот что нам рассказывали учебники из 90-х! Но большинство, если не все современные приложения слишком специфичны и даже на одном предприятии, я никогда не видел, чтобы одни и те же компоненты BLL или DAL повторно использовались в нескольких приложениях. В большинстве случаев эти библиотеки классов служат исключительно для обслуживания того, что видит пользователь в этом конкретном приложении, и это не то, что можно легко использовать повторно (если оно вообще есть).
Другая причина разделения проекта на несколько библиотек классов связана с возможностью развертывания. Если вы хотите самостоятельно создавать версии и развертывать эти части, имеет смысл пойти по этому пути. Но это часто случай использования для фреймворков, а не корпоративных приложений. Entity Framework является хорошим примером. Он состоит из нескольких сборок, каждая из которых ориентирована на различные области функциональности. У нас есть одна базовая сборка, которая включает в себя основные артефакты, у нас есть другая сборка для общения с базой данных SQL Server, другая для SQLite и так далее. Благодаря этой модульной архитектуре мы можем ссылаться и загружать только те части, которые нам нужны.
Представьте, если бы Entity Framework была только одной сборкой! Это будет одна гигантская сборка с большим количеством кода, который нам не понадобится. Кроме того, каждый раз, когда группа поддержки добавляла новую функцию или исправляла ошибку, всю монолитную сборку нужно было компилировать и развертывать. Это сделало бы эту сборку очень хрупкой. Если мы используем Entity Framework поверх SQL Server, почему обновление из-за исправления ошибки для SQLite может повлиять на наше приложение? Это не должно! Вот почему он разработан по модульному принципу.
В большинстве веб-приложений мы версии и развертываем все эти сборки (Web, BLL и DAL) вместе. Таким образом, разделение проекта на 3 проекта не добавляет никаких значений.
Слои являются концептуальными. Они не имеют физического представительства в
код. Наличие папки или сборки с именем BLL или DAL не означает
вы правильно разместили свое приложение, и это не значит, что вы
улучшили ремонтопригодность. Ремонтопригодность - это чистый код,
маленькие методы, маленькие классы, каждый из которых несет единую ответственность и
ограниченная связь между этими классами. Разделить проект на жир
классы и жирные методы в проекты BLL / DAL не улучшают
ремонтопригодность вашего программного обеспечения. Сборки являются единицами управления версиями
и развертывание. Разделите проект на несколько проектов, если хотите
повторно использовать определенные части этого в других проектах, или если вы хотите
независимо версии и развертывания каждого проекта.
Источник: https://programmingwithmosh.com/csharp/should-you-split-your-asp-net-mvc-project-into-multiple-projects/