DevWebProSE
 


Click to Play

MSN Talks Webmaster Tools
Product Manager of Live Search Webmaster Tools, Jeremiah Andrick spent the day here at the WebProNews headquarters. Our very own Mike...

Latest Web News

Sweden file sharing case gets retrial
In Sweden, a court case involving a man who had allegedly uploaded 23,000 music tracks and 30 movies to file sharing networks has gone to retrial. The decision in the case will have implications for the future of...

Government mulls relaxed internet privacy
The government is considering making it easier for police to track suspects' activities on the internet. According to the political newspaper Riksdagen & Departement, the government is exploring a lower threshold for...

Hasselblad Selects CSI DesignDataManager
Systems Inc Ltd (CSI), a leading developer of design data and document management solutions, today announces that in partnership with Solidmakarna AB, Sweden’s VAR for DDM, they have implemented DDM at at Victor Hasselblad AB, a name synonymous with cameras...

Sweden Tops 2008 E-Government Readiness Report
The United Nations just released its 2008 E-Government Readiness Report, ranking countries by e-government development. The 250-plus page report: UN E-Government Survey 2008: From E-Government...

Tobii Technology AB: Tobii and ATI Join Forces
Eye tracking world leader Tobii Technology and Assistive Technology Inc. (ATI) are today announcing that they are joining forces to become a leading vendor of high-tech communication solutions for the disability market...



01.11.08


Structuring Web Apps Into Multiple Tiers

By Mads Kristensen

Very often I read that you need to structure your web applications into multiple tiers to separate the concerns.

The advice is to move the business and data logic out of the web project into two different projects so you end up with the classic 3 tier model - presentation, business and data. This advice is good.

The strange thing is that this advice is given to web developers as a way of structuring web applications. I've always found that very odd. Not that web developers don't write business and data logic, but I don't see the connection between web development and business/data logic development.
Let me explain

The premise for the advice is that business/data logic is part of building a website. This is wrong. A website is a visual representation that interacts with the business logic, but the business logic doesn't and shouldn't care about the website. The business logic is an API consumed by the website and nothing more. The business logic still doesn't care if its public methods (API) are used on a website, in a Windows Forms application or in a web service. Ergo, business logic is not part of building a website. The premise is wrong.

In a typical 3 tier web solution you have three projects - the website, business- and data logic projects. That makes it a little confusing to believe that the business and data logic has nothing to do with building a website. But if you think of the three projects as the building blocks in creating a solution then it's easier to understand. In other words; you don't separate a website into three tiers by separating the business and data logic into their own projects, you separate the solution into three tiers. Since the website is just the UI in such a solution, it is wrong statement that your website is 3-tiered and the premise is then wrong.
The three tiers

New Server Offer! Double or Triple - You Pick The Winning Savings Combo - Click here today!

The reason why I've always found this advice odd is that I always build my websites in three tiers, but it has nothing to do with the business and data logic. The three tiers I use in web development are specific for the website only. The tiers are:

1. User interface
2. User interface logic
3. Presentation logic

The names are some that I use and may be different elsewhere.

User interface (UI)

The UI is the HTML, JavaScript and CSS that makes up the visual look and feel and the browser behavior. It lives in pages (.aspx), user controls (.ascx), .js and .css files. In some cases also in HTTP handlers (.ashx), but mainly for custom AJAX mechanisms.

User interface logic

This tier is what controls the server side behaviour of the UI. It lives in code-behind files and in the App_Code folder. This logic is responsible for handling button events and differentiates the response based on the user etc. It's also custom web control collections that could live in its own project and often do.
Presentation logic

This is the where all the stuff goes that isn't directly is used in the UI. It could be RSS feeds or classes used by the code-behind. Most often it's where I put the HttpHandlers and HttpModules and the logic that controls them. It could be located in its own project or it could just be in its own folder in the App_Code or wherever it feels right to put it depending on the size of the project.

It doesn't really matter where the tiers are physically placed as long as they are logically separated. That's why it often makes sense to move the tiers into their own projects to make the separation clear and the code easier to maintain and reuse.

So a three tier web application has nothing to do with business and data logic. Remember that the business logic is just an API consumed by a website even if they both live in the same Visual Studio solution.

Comments


About the Author:
Mads Kristensen currently works as a Senior Developer at Traceworks located in Copenhagen, Denmark. Mads graduated from Copenhagen Technical Academy with a multimedia degree in 2003, but has been a professional developer since 2000. His main focus is on ASP.NET but is responsible for Winforms, Windows- and web services in his daily work as well. A true .NET developer with great passion for the simple solution.

http://www.madskristensen.dk/

About DevWebProSE
DevWebProSE is for professional developers ... those who build and manage applications and sophisticated websites. DevWebProUK delivers via news and expert advice New Strategies In Development.

DevWebProSE is brought to you by:

SecurityConfig.com NetworkingFiles.com
ITmanagementNews.com WebProASP.com
DatabaseProNews.com SQLProNews.com
ITcertificationNews.com SysAdminNews.com
LinuxProNews.com WirelessProNews.com
CProgrammingTrends.com ITmanagementNews.com



-- DevWebProSe is an iEntry, Inc. publication --
iEntry, Inc. 2549 Richmond Rd. Lexington KY, 40509
 © 2008 iEntry Inc.  All Rights Reserved  Privacy Policy  Legal 

advertising info | news headlines | free newsletters | comments/feedback | submit article