title: Avoiding Vendor-Lock-in: Is code written for Windows Azure completely portable to self-hosted IIS/ASP.NET?
body: <p><strong>Background</strong><br>
  I'm just getting started on a new web-development product that I intend to host in the cloud and am weighing my options for cloud-providers.</p>
  
  <p>I really like the idea of going with a Platform-as-a-Service solution like Azure because my server administration skills aren't nearly as robust as my development skills. So the ability to focus only on the app and outsource concerns like backups/load balancing/etc. is attractive to me.</p>
  
  <p>HOWEVER, I am also concerned about vendor lock-in. I expect the margins on my application to be fairly slim and need to keep a careful eye on cost controls. If I pick a PaaS solution like Azure and MS decides to jack up their prices substantially I'd like to be able to take my business to a cheaper provider.</p>
  
  <p>I've been doing ASP.NET development for years, but am just getting up to speed with Azure. I know that Azure apps are written using the same tools/language as normal ASP.NET apps, but don't know whether they differ enough that the same app wouldn't run on a regular IIS/ASP.NET installation without substantial modifications.</p>
  
  <p><strong>The Question</strong><br>
  Are Azure apps generally portable to non-cloud versions of IIS/ASP.NET enabling you to move them easily to one of the numerous IaaS/HaaS providers without major surgery?</p>
  
  <p>I understand that obviously I'd lose the PaaS advantages like built-in load balancing and the other extras. I am mainly concerned about whether Azure forces you to write you web app in a very Azure specific way that will need to be re-factored to work outside of Microsoft's Cloud.</p>