The difference that exists between two terms that are sometimes used
interchangeably - layer and tier. Note that using layer and tier interchangeably
is a mistake per se in all situations - and, frankly, I often use these terms as
they were synonyms. Fact is, however, they are not synonyms. A layer refers to
pieces of software that are logically separated, but typically live within the
same process and machine. A tier, instead, refers to pieces of software that
live in distinct processes or AppDomains or machines. You can allocate a layer
on a tier but not vice versa. You can have multiple layers on the same tier. A
tier refers to physical separation; a layer is about logical separation. So if
you take it literally a business tier is a distinct server where you run the
code that forms the business logic. Whenever tiers are involved you should have
a remoting technology all around to permit communication. Whatever you call a
layer can be moved any time (with some extra work) to a tier.
Hope you enjoyed.. :)