Last post Feb 14, 2011 10:00 AM by atconway
Feb 12, 2011 04:14 PM|amincold|LINK
whats is the difference three tier and three layer architecture. I need three tier architecture which is fulfill the object oriented requirement. and database change flexibility. thank you
Feb 12, 2011 05:32 PM|sukumarraju|LINK
the difference three tier and three layer architecture.
Both are same i.e., presentation layer, business layer and data access layer are separtaed into separate layers or tiers.
Read more at Microsoft Application Architecture Guide, 2nd Edition (Free edition)
Feb 12, 2011 06:06 PM|mbanavige|LINK
Its true that they are very often used interchangeably, but some folks do make a distinction between layers and tiers where layers represent the logical structure and tiers represent a physical structure. So a Tier is introduced when one of the layers moves
to a physically different server. Depending on how they are designed, not all n-layer apps can support moving one of the layers to a different tier/server.
Feb 12, 2011 10:02 PM|shabirhakim1|LINK
I agree they are used interchangeably,but fact is that Tiers indicate a physical separation of components, which may mean different assemblies such as DLL, EXE etc on the same server or multiple servers.but layers refers to a logical separation
of components, such as having distinct namespaces and classes for the DAL, BLL and User Interface Layer.
Feb 14, 2011 10:00 AM|atconway|LINK
whats is the difference three tier and three layer architecture.
This is a good question and one that is often misinterpreted. It is important to understand the difference between tiers and layers. A
tier is a physical separation of layers onto separate boundries or machines. Typically this is done for scalability of hardware purposes, but has a downside of extra network latency due to the extra hops when making calls.
A logical layer is just a separation of logic into meaningful pieces or responsibilities. A traditional 3-layer
logical UI-BLL-DAL architecture might have all (3) layers on the same machine with just the database on a separate server. The UI, BLL, and DAL are all
logically separated into their own tiers and have their own responsibilities. Typically the 1st break off of a layer in this architecture would be to break the DAL off and place it on the database server to be as close to the database as possible.
You could also have a 'SmartClient' application that may completely reside on the client (including the datasource in some scenarios) thus residing on a single tier, but the logical architecture is still an n-layer design with multiple logical layers.
Typically a n-tier logical design using the UI, BLL, DAL layers offer a nice separation of concerns and scalable design. So separating logical layers is always something I recommend. However, separating tiers or components into separate physical tiers
is something that should only be done when required or needed. Why? Well the more physical tiers, the more network hops that will be introduced, and ultimately there will be performance considerations.
So in your case it is a good idea to have a logical n-layer design using a UI, BLL, and DAL, and probably better to have the UI and BLL on (1) server and the Database reside on a separate server. It is not
incorrect to separate all (3) layers physically, but if it is not required or not needed, then there is no need to separate the tiers physically to that degree.
The following links will help with this:
Should all apps be n-tier?
A variety of physical n-tier options:
I need three tier architecture which is fulfill the object oriented requirement. and database change flexibility.
There are a bunch of architectures and design patterns that will fulfill these requirements, but if you are a beginner, starting off with a traditional 3-layer design might suit the project best.