N-tier application - Design issue

M

mehdi_mousavi

Hi folks,
In an N-tier application, what is the possible values of N??? I'm not
kidding, I just interviewed with a programmer today, and he started the
"2-tier application" conversation. From then on, I heard about "5-tier
application" and then "7-tier application".... I do know what is a
3-tier application, but what about 2, 5, and 7??? Does 2-tier means a
"Client-Server" application model? What about 5 and 7???

Would you please describe me this?

TIA,
Mehdi
 
D

DeveloperX

2 tier is client server, either with the majority of the logic on a fat
client, or on the server accessed through a thin client.
3 tier is the classic client - server - database architecture where the
client's job is to look pretty but all the business logic is processed
at the server which hides the database away from the user, validates
stuff, applies business rules, etc.
From there each additional tier is generally a way of breaking the
server into discreet sections. A data access tier for example manages
all communication with the database while a business rules tier would
implement business logic. This offers the advantage that if you wanted
to replace the data access tier with one that communicates with a
different database, you can work on the data access tier in isolation
knowing you won't damage your business rules.
On the client end, you can have a presentation abstraction tier which
defines how an application should look and feel regardless of whether
it's running as aspx or a windows forms app.
Add in a tier for distribution of server requests, so you can have two
or more servers acting as one seamless application, that's at least
five tiers.
 
L

Laurent Bugnion

Hi,
2 tier is client server, either with the majority of the logic on a fat
client, or on the server accessed through a thin client.

I think the politically correct term for a non-thin client is a "thick"
client ;-)

Laurent
 
D

DeveloperX

How about proportionally normal for this type of client client. No one
will have any idea what I'm talking about but at least my client won't
have hurt feelings :)
 
M

mehdi_mousavi

So there's actually 2 (client-server) or 3 (presentation, middle layer,
data layer) major tiers. And any other tier that's being added to this
model is actually partitioning each of those tiers. For example, in a
3-tier application, the data layer is actually divided into Business
Logic Objects, Data AccessLogic and etc. Right?

Thank you for your time,
Mehdi

P.S.: I really enjoyed the "fat client" phrase. ;)
 
L

Laurent Bugnion

Hi,

mehdi_mousavi said:
Amazing :))))

Laurent Bugnion wrote:

There was a smiley in my post, but somehow it doesn't show in Thunderbird...

Greetings,
Laurent
 
D

DeveloperX

Yeah it's all about partitioning the application in a way that
increases scalability, performance, maintainability and security.
Another point that's worth noting is that a well written 2 tier system
should adopt a lot of what you'd see in systems with more tiers.
For example in a 2 tier system consisting of a morbidly obese client
talking to a database server, some how the client is going to have to
get data into that database. Now if you take the seperation described
above, your client can have a library of data objects for talking to
the database with well defined interfaces, a library of business
objects, a library that defines the client's GUI rules, then a GUI.
If in the future your two tier needs to switch to oracle from SQL
Server, or you want to go to a three tier model, it's much simpler
because you've layered the code and only have one layer to change. Want
to upgrade the GUI? Just write a new one that utilises the client GUI
rules.
I hope that helps some,
 
A

Andy

DeveloperX said:
2 tier is client server, either with the majority of the logic on a fat
client, or on the server accessed through a thin client.
3 tier is the classic client - server - database architecture where the
client's job is to look pretty but all the business logic is processed
at the server which hides the database away from the user, validates
stuff, applies business rules, etc.

Well, keep in mind that a logical tier does not have to be on a
separate physical tier. You can have a 3-tier application, all running
on one box. That's one physical tier, but three logical tiers
(assuming you COULD separate the logical tiers onto separate if the
need arose).
 
M

Mark Wilden

In an N-tier application, what is the possible values of N???

I've found that what many people refer to as 3-tier actually has 4-tiers -
presentation, business, data access, and database.

///ark
 
?

=?ISO-8859-1?Q?Arne_Vajh=F8j?=

mehdi_mousavi said:
In an N-tier application, what is the possible values of N??? I'm not
kidding, I just interviewed with a programmer today, and he started the
"2-tier application" conversation. From then on, I heard about "5-tier
application" and then "7-tier application".... I do know what is a
3-tier application, but what about 2, 5, and 7??? Does 2-tier means a
"Client-Server" application model? What about 5 and 7???

Assuming that by "tier" you really mean tier as in stuff
that can run on different boxes and not "layers", then
with MS technology:

2 tier:

VB.NET app ---- SQLServer db

3 tier:

browser ---- ASP.NET web app ---- SQLServer db

4 tier:

browser ---- ASP.NET web app ---- COM+ services ---- SQLServer db

I find it hard to come up with realistic 5, 6 and 7 tiers.

Layers is much easier.

Arne
 
?

=?ISO-8859-1?Q?Arne_Vajh=F8j?=

mehdi_mousavi said:
So there's actually 2 (client-server) or 3 (presentation, middle layer,
data layer) major tiers. And any other tier that's being added to this
model is actually partitioning each of those tiers. For example, in a
3-tier application, the data layer is actually divided into Business
Logic Objects, Data AccessLogic and etc. Right?

Even though MS is not always good at it then you should try
and distinguish between:

tier = something that can (but does not have to) run of different boxes

layer = a logical separation within the same tier

so in a typical 3 tier:

browser ---- ASP.NET web app ---- SQLServer

you can divide the middle tier (ASP.NET app) in 3 layers:
presentation, business logic and data access

(I prefer to consider it 4 layers: presentation, control,
business logic and data access, but that is not so common)

And if you use store procedures, then you can divide
your third tier in 2 layers: stored procedures and tables
even though that distinction is not so common.

Arne
 
R

Registered User

Assuming that by "tier" you really mean tier as in stuff
that can run on different boxes and not "layers", then
with MS technology:

2 tier:

VB.NET app ---- SQLServer db

3 tier:

browser ---- ASP.NET web app ---- SQLServer db

4 tier:

browser ---- ASP.NET web app ---- COM+ services ---- SQLServer db

I find it hard to come up with realistic 5, 6 and 7 tiers.

Layers is much easier.
When considering a system design my preference is to the continually
abstract layers until all the major elements have been determined.
Then it becomes a matter of determining where to segment the layers
into logical tiers.

A desktop app could be layered as
UI -> BL -> UDM -> DBS
where the UDM (adaptor pattern) is a layer where any ugly data
manipulation occurs . If desired the same representation can be
segmented into 2, 3 or 4 tiers. In a 4-tier model the UI piece would
be some form of smart client.

regards
A.G.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top