Я планирую свои решения аналогичным образом - объекты businessLogic, dataaccess, domain находятся в одном проекте. Представления (веб), веб-службы, формы Windows, WPF ..) все входят в свои собственные отдельные проекты.
Таким образом, код, специфичный для пользовательского интерфейса, не фильтруется на нижних уровнях приложения. В большинстве веб-проектов мне приходилось взламывать форму Windows, чтобы вводить новые данные в базу данных или управлять каким-либо типом приложения, которое не может быть реализовано в веб-среде.
Если я запекаю в HttpCaching на бизнес-уровне, я не смог бы переключаться между представлениями.