Imagine having the following scenario:
You need to create a system where the Back end is seperate from the Front end, which is always important when programming, of course. But What if you want to be able to change the back end completely without changing the front end?
When creating a big website for instance, I'd go with the following projects:
Data - Handles all the data connections, the i.e. LINQ generated files and other partial overrides.
Interfaces - This layer is interesting, is this an overflow? Having the interfaces separated is because, the Business logic and the Data layer might have a lot of Interfaces in common and instead of Referencing the Data Layer from the Front, you can reference the Interface Layer and then have the Business Logic sending you an interface, instead of knowing about the correct classes and structure of the Data Objects in the Data Layer.
Business Logic - This speaks for itself, the business logic for the application.
Front End - Web, GUI or whatever is needed, code-wise of course.
My question is really, is this an overflow of layers and thinking? Is maybe the Interface Layer unimportant? Suggestions?