I plan my decisions in the same way - businessLogic, dataaccess, domain objects are all in the same project. Views (Web, Web services, Windows forms, WPF ..) are all part of their own projects.
Thus, the special user interface code is not filtered into the lower levels of the application. In most web projects, I had to hack into the form of a window in order to insert new data into the database or to manage some type of application that is not “capable in the web environment”.
If I baked at HttpCaching at the business level, I would not be able to switch between views.
source share