Will we need to support two different code bases once we migrate our web app to Azure if we want to keep the old deployment still up in Windows Server or can the same exact web app be run on both?
The exact same app cannot run in both environments, but you may be able to deploy an application for each environment from the same code base. What this means is that what goes into a Windows Azure deployment package is a superset of a normal web application.
I am going to assume that you will not be using Blob Storage, Queues etc., since in that case you will obviously have a problem. Basically, what gets deployed to Windows Azure is a traditional web application, but with a few things added (list is not necessarily complete):
- Your code base will have to contain service definitions and configurations (these are just XML files)
- Your web application will have to have a RoleEntryPoint. In the VS2008 template this is in the WebRole class which derives from RoleEntryPoint (in WebRole.cs).
Just like you cannot use Azure Queues, Blobs etc. in your traditional Windows Server environemnt, there are features of the .NET framework which you may be used to using, but which will not be supported in Windows Azure (at the moment you cannot write to an NTFS like file system, although it will be possible once Windows Azure Drives is launched).
All in all, I think you could maintain two application instances from the same code base, but you will have to always keep the differences between Azure and traditional deployment in mind. Also keep in mind that the deployment procedures are vastly different.
PS. I think some of this may change with the release of Windows Server AppFabric. I am not sure, but you may want to investigate.