What are the main benefits of Windows 64-bit over 32-bit for ASP.Net apps?

Besides the advantages of 64-bit memory allocation (> 4 GB - see this question on StackOverflow for why 32-bit +4 GB solutions won't work for me), what other reasons do I have for recommending that we should host an ASP.NET website on 64-bit Windows Server 2008, as opposed to the 32-bit version?

If it's only the larger addressable memory (>4 GB) issue, we have a load-balanced solution anyway so we could scale by adding a new (virtual) box.

The CPUs won't be running hot either, so any marginal speed gains couldn't be justified.

My own gut feeling is that we should host on 64-bit if we can, purely because it's easier to scale (by plugging in more RAM when we need to). But is that it?!

All comments and ideas are welcome!


Solution 1:

I think the question you should be really asking is why not go x64? If your hardware is supported and your apps work, what's the reason to stick with 32 bit? There is little to no cost difference and its the way all future software is going to move, Exchange 2007 for example is 64bit only and I'm sure many new pieces of software will go that way.

If you can't come up with a compelling reason to stick with 32 bit then I'd go with 64.

Solution 2:

  • x86_64 cpus do have the no-execute bit in their page tables. I.e. this can prevent security exploits caused by buffer overruns. 32-bit x86 cpus do only support this feature in the PAE mode.
  • you can only used signed Windows drivers. IMHO this is an advantage because you can't break your system with a broken, untested driver. Remember, most Windows problems are caused by broken drivers.

To be honest: In my opinion 64-bit should be the default for years now! I can't believe how long it takes the Windows community to make the switch. I can't understand why Microsoft even bothered to release a 32-bit Vista (and now even Windows 7). Even Apple decided to switch from PowerPC to 32-bit x86 although most cpus at the time were already capable of 64-bit. This makes no sense to me at all. Everything would be so much easier if everything would be 64-bit and only 64-bit.

Solution 3:

There are lots of "reasons" but the first and foremost is that all of Microsoft's products are going x64. It 'future-proofs' the design a bit, and gives your ASP.NET apps more room to fail (from an OOM error, for example).