With Windows Azure Websites, you don’t have control over IIS or web Server because you are using a resources slice along with hundreds of other website on the same machine, you are sharing resources like any other so there is no control over IIS.
The big difference between a website shared and Azure web role is that a web-site is considered process bound while roles are VM bound.
Websites are stored on a content share which is accessible from all the “web servers” in the farm so there is no replication or anything like that required.
Web Roles give you several features beyond Web Sites:
- Ability to run elevated startup scripts to install apps, modify registry settings, install performance counters, fine-tune IIS, etc.
- Ability to split an app up into tiers (maybe Web Role for front end, Worker Role for backend processing) and scale independently
- Ability to RDP into your VM for debugging purposes
- Network isolation
- Support for Virtual Networks
- Dedicated virtual IP address, which allows web role instances in a cloud service to access IP-restricted Virtual Machines
- ACL-restricted endpoints (added in Azure SDK 2.3, April 2014)
- Support for any TCP/UDP ports (Web Sites are restricted to TCP 80/443)
Web Sites have advantages over Web Roles though:
- Near-instant deployment with deployment history / rollbacks
- Visual Studio Online, github, local git, ftp, CodePlex, DropBox, BitBucket deployment support
- Ability to roll out one of numerous CMS’s and frameworks, (like WordPress, Joomla, Django, MediaWiki, etc.)
- Use of SQL Database or MySQL
- Simple and fast to scale from free tier to shared tier to dedicated tier
- Web Jobs
- Backups of Web Site content
- Built-in web-based debugging tools (simple cmd/powershell debug console, process explorer, diagnostic tools like log streaming, etc.)