D> Is a multi-tier application simply an application where multiple users
D> are simultaneously accessing the same database over a LAN?
I will answer to this the loooong way :-)
Multi-tier (per-se) means "divided in different tiers" (or layers).
The fact there is (or there isn't a database) and how/where these tiers are
located is secondary althought in practice most examples and documentation
you will find out there refer to 3 tiers running on different machines (of
which the last one is ultimately a database).
Something like this:
Client(s) <---> Application Server <---> Data storage (whatever that is)
Theoretically speaking, multi tier "design" could be applied to pretty much
anything, even client / server applications or an application like notepad.
The most important thing IMO is the separation of responsibilities and
contract-based access to each of the tiers.
For instance, you could have a form which displays a list box and has two
buttons: GetData and UpdateData.
You could have an object called for instance MessageManager implementing the
IMessageManager = interface
function GetData(aClientID : string) : string;
procedure UpdateData((aClientID : string; Value : string);
Finally you could have an either (1) and INI file which contains a list of
messages to which MessageManager writes and reads to or (2) an additional
class which interacts with the MessageManager and has an interface like this
IINIReaderWriter = interface
function ReadLine(LineNo) : string;
procedure UpdateLine(LineNo, NewValue);
The core concept here is that each tier only knows of the closest one and
nothing about the implementation of its functionality.
The form only accesses a MessageManager via an interface, MessageManager
then talks to either IINIReaderWriter or does direct access. Point is that
regardless of that, the client still works.
RemObjects Software, Inc.