I am setting up three different servers where i will have my code. I want these servers to share load these are window 2008 servers. I want them to be setup in a way that request are handled by them randomly and load is shared. are there other options.
put a reverse proxy doing load balancing in front of them. either hardware or software based. some of more popular linux based:
The simplest solution is to list all three IP addresses in DNS. The DNS servers will rotate the IP addresses as they resolve the name. This will give rough load balancing.
Otherwise, you need some sort of load balancer in front of the servers. These may give better load balancing than DNS.
Load balancing with sessions is more difficult, and there are a number of solutions.
A good choice in your situation is Microsoft Application Request Routing, ARR. Basically it is an IIS extension, which does Layer 7 (HTTP) load balancing.
Typically you would have one (or 2 for high availability with NLB) servers in front of your webapp servers:
pQd's suggestions are absolutely sound too. The main benefit from using ARR is that it runs on Windows. With ARR you don't need a mixed Windows & Linux environment, which makes administration and security patching simpler. Apache also runs on Windows, but it's not a native app in the sense that its GUI doesn't follow Microsoft's way of doing things etc.
You might benefit from hitting O'Reilly's online bookstore, and buying a book about load balancing.
Yes, that's a good way to go. Keep in mind that all servers must be able to access session data (login cookies, shopping cart contents, etc), so you need a shared session data store (Microsoft StateServer, your SQL database, Project Velocity etc.)