Есть много вариантов. Некоторые люди просто создают новые папки в проекте ASP.NET MVC. Другие (включая меня) создают совершенно новые проекты.
Один метод я довольно доволен, чтобы разрушить ваши проекты по назначению ...
- MyApp.Core < - Все бизнес-логика, нет DB/Web материал
- MyApp.Infrastructure < - DB/SMTP/журнала событий
- MyApp.UI.Web < - проект ASP.NET MVC
- MyApp.Tests
Я также видел эти ...
- MyApp.ApplicationServices
- MyApp.UI.Controllers
Я хотел бы предложить, принимая взглянуть на все различные проекты ASP.NET MVC там, в мире с открытым исходным кодом, чтобы посмотреть, как они организуют свои проекты (Code Camp Server, Store Front, Sharp Architecture, Nerd Dinner 2 и множество других). Я думаю, что это откроет вам мир новых возможностей (инверсия управления, шаблон хранилища и т. Д.). Тем не менее, это сложная задача, и я бы приравнял ее к сценарию синих пилюль/красных пилюль.
EDIT: Для того, чтобы ответить на ваш другой вопрос ...
Я бы сказал, это важно, но только в том смысле, что ломать все на слои поможет вам достичь слабосвязанности. Если вы сохраните все в одном проекте, у вас возникнет соблазн размыть линии между презентацией, бизнесом и базой данных. Но если вы разделите все, и вы осознаете свои проектные ссылки, отсутствие связи будет намного более очевидным, и вы будете гораздо более склонны к разделению проблем (SoC). SoC открывает дверь для модульного тестирования и упрощает техническое обслуживание.
SoC! = Физическое местоположение файла – jfar
Физическое местоположение файла облегчает SoC – Mayo