I always advise my students to think before they blindly follow the n-Tier model. And recently I got hold of this article which explains the concept in an excellent way. Have a look at:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/NPALayering.asp
I particularly like this line:
"Cross-tier communication carries with it a significant performance cost, to the tune of three to six orders of magnitude over a normal, in-proc method call—in essence, making this a comparison between a trip down to the grocery store versus a trip to Pluto (see Effective Enterprise Java, Item 17). Are we throwing away good meat… er, CPU cycles, just because that is the way Mom always did it?"
:-)