ASP.NET 2.0 application across three physical servers?



Hi folks,

We're looking for a CMS system for our organisation, and we're picking
potential solutions.

We need something that is scalable cause we're a growing company, so
there's potentially 2000+ simultaneous users.

It's been recommended that we favour applications which can be
separated into three separate physical tiers (web server, application
server, and sql server). The justification being that it's very
expensive to add additional application servers just because you're
web traffic increases.

In my experience, I've never seen anyone deploy a typcial ASP.NET web
site in this way, where there is a separate application server.
Instead, I've seen IIS and the .NET App always live on the same
machine, possibly in a load balanced cluster etc (see below).

Small Scale
Server A - IIS, .NET App, MSSQL

Small/Medium Scale
Server A - IIS, .NET App
Server B - MSSQL

Medium Scale
Server A - Load Balancer
Server B - IIS, .NET App
Server C - IIS, .NET App
Server D - MSSQL
Server E - MSSQL Session State Server

How would you go about deploying a "typical" .NET application across 3
tiers? Would you want to?
From what I understand, web services/messaging/remoting/COM+ are all
ways of allowing independent deployment of the application tier (I've
used some of these myself), but these come with their own costs and
complexities. For most .NET apps I'd favour clustering for simple
scalability. Am I missing something?

Hope this makes sense


Note that I'm not knocking the Web/App/Data server approach, I use
this with RubyOnRails all the time (Apache Server / Mongrels App
Servers / MySQL).


I'm not sure I understand your question. If you are talking about "tiers"
that usually refers to the logical, not physical (e.g. "data tier" "business
logic tier", etc)

You can certainly set up an app in conformance with your "Medium Scale"
example - it's no big deal. Is your question related to "how to do that"?


Thanks for the reply, I'll try and be clearer!

Essentially I'm asking if it's common to have a 3-server setup for a
typical ASP.NET site rather than a 2-server setup. In the 3 server
setup one server acts as a presentation server (web), another acts as
an *application server*, and then the 3rd acts as a database server. I
don't think I've ever seen this configuration in ASP.NET - the web and
application server are usually one and the same.

We have an advisor who is telling us that, for scalability, we should
be aiming for this three server deployment model. However, I was
trying to think how this might be achieved in .NET without having to
re-write the site to use services, remoting or messaging. Our
application doesn't seem to warrant the complexity that this would
involve, and scaling can probably be done by mirroring & load
balancing instead.

Hope that makes some sense!



Scalability is not necessarily improved by moving "pieces" of an application
to separate physical machines. For example, when a SQL Server is located on a
separate machine, more network latency comes into play for each SQL call than
if it were on the same machine.
There are a lot of factors to consider, and each application has different
characteristics under load. Load testing is one way to compare the results of
different deployment scenarios.

Short urls & more:


But, what do you mean with .net app?

As I know, the .net app runs directly under IIS, you can not separate them


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