假设在任何情况下我需要相同的容量(例如2个小实例)。价格似乎是可比较的,除了在预览期间,“网站”有33%的临时折扣。
是否有些事情可以通过“网站”做到而通过Web角色难以或不可能做到?例如,使用“网站”,将多个网站放入单个VM集合变得容易吗?与“Web角色”相比,我会失去什么?微调IIS的能力?能够在本地使用缓存服务的能力?
Web角色提供了一些超出Web应用(以前称为Web网站)的功能:
但是,相比Web角色,Web应用程序具有以下优势:
在2014年4月和2014年9月的更新中,Web应用程序和Web角色(以及Worker角色)现在具有一些共同的功能,包括:
下面是我从Web Sites选择表单中截取的屏幕截图:
我认为Web应用程序是快速上手的好方法,您可以从共享资源转移到预留资源。一旦您发展壮大,您可以升级到Web角色并按需扩展。
注:2014年的内容已经过时,许多信息不再准确-请参见评论。
在@David的回答基础上,还需要补充:
使用Windows Azure网站时,由于您正在使用资源切片并与同一台机器上的数百个网站共享资源,因此您无法控制IIS或Web服务器,就像其他任何资源分享一样。
网站共享和Azure Web角色之间的最大区别在于,网站被认为是进程限制,而角色是VM绑定的。
网站存储在内容共享中,可从农场中的所有“Web服务器”访问,因此无需复制或其他任何操作。
Windows Azure网站无法拥有自己的主机名,必须仅使用websitename.azurewebsites.net,并且当它们在保留模式下运行时,您可以在DNS提供程序中使用CNAME设置来精确路由您的请求,这与以前的Windows Azure Role完全相同。对于共享网站,不支持CNAME设置。
我刚刚在http://robdmoore.id.au/blog/2012/06/09/windows-azure-web-sites-vs-web-roles/上发布了一篇关于这个问题的综合博客文章。
以下是我的结论摘录:如果您需要庞大的规模、SSL、亚洲或西部美国数据中心、非标准配置(IIS、端口、诊断、安全证书或启动脚本)、RDP或成本效益的工作角色(与Web角色相结合),那么现在还得坚持使用Web角色。
否则,Web站点是一个很好的选择!
Azure Web Role就像一个虚拟专用主机。您获得一个充当Web服务器的虚拟机(VM),并拥有该VM实例。
Azure Web Sites就像一个弹性共享托管服务。您将应用程序部署到一个不受您控制且也为其他用户提供站点服务的Web服务器上。您可以根据资源需求的变化将站点进行伸缩(需要额外费用)以使其更具弹性。
还有一个情况尚未确定:在这500个异常被排除之后,他们并没有提到Azure网站处理通配符CNAME的能力。我们中有几个人正在使用Nate的Web角色加速器,因为一行代码提供了Nate软件的通配符子域功能。在我们确认Azure网站能够处理它们之前,我们无法移动这些通配符子域应用程序。如果它永远不能做到这一点,那么Web角色方面就会成为正面因素。值得注意的是,在定价完全相同(预览折扣过期后)的情况下,我不确定是否要放弃我的RDC和事件查看器访问权限(只是提到其中两个事项)。
我发现还有两件事情,一个是为自定义域名网站获取SSL证书的成本,另一个是多租户配置。
对于网站,你需要在标准实例的基础上每月支付费用(小型实例是最便宜的选项)。这意味着为了获得自定义域名的https,你需要支付大约70美元/月的小型实例费用,以及大约41美元/月的支持所有浏览器的SSL证书费用。
对于WebRole,你可以选择XS实例并免费添加自己的SSL证书,这意味着你只需要支付大约15美元每月,就能拥有具有SSL证书的自定义域名。
对于多租户网站,请查看多租户Azure动态通配符CName
这是一个常见问题,我想引用一段来自 msdn 的摘录。
访问缓存、服务总线、存储、SQL Azure 数据库等服务 - WebSite: 是 WebRole: 是
支持 ASP.NET、经典 ASP、Node.js、PHP - WebSite: 是 WebRole: 是
共享内容和配置 - WebSite: 是 WebRole: 否
使用 GIT、FTP 部署代码 - WebSite: 是 WebRole: 否
几乎即时的部署 - WebSite: 是 WebRole: 否
集成 MySQL 作为服务支持 - WebSite: 是 WebRole: 是
多个部署环境(生产和暂存) - WebSite: 否 WebRole: 是
网络隔离 - WebSite: 否 WebRole: 是
远程桌面访问服务器 - WebSite: 否 WebRole: 是
具有提升权限运行程序的能力 - WebSite: 否 WebRole: 是
定义/执行启动任务的能力 - WebSite: 否 WebRole: 是
使用不支持的框架或库的能力 - WebSite: 否 WebRole: 是
支持 Windows Azure Connect / Windows Azure Network - WebSite: 否 WebRole: 是
要获取更详细的信息,请访问此链接:http://blogs.msdn.com/b/silverlining/archive/2012/06/27/windows-azure-websites-web-roles-and-vms-when-to-use-which.aspx。