>For those people who abstract the logic to persist out of your business objects, how do you do it without DataSets? One guy here says there isn't an elegant way, another feels that the "Data Layer" is just the code that has knowledge of the database,
so it seems like there is a lot of muddying of the waters in term of what the term "3-tier" actually means.
>What do you all think?
There are advantages to 3-tier which for some large projects are justified, however I have seen more projects where the extra complexity was not justified than when it was justified. Possibly all your company's projects justify the complexity for every application.
I agree that the terminology is confused. Some of the architectures have more than 3 layers to them and therefore 3-tier is not a strictly correct term for them.
The key point I submit, is that the GUI is separated from the rest of the logic thus allowing rigorous unit testing.