Azure Web Site和Azure Web Role有什么区别?

246
新的Azure Web Sites和传统的Azure Web角色在ASP.NET MVC应用程序中的材料差异是什么?选择“网站”还是“Web角色”的原因是什么?
假设在任何情况下我需要相同的容量(例如2个小实例)。价格似乎是可比较的,除了在预览期间,“网站”有33%的临时折扣。
是否有些事情可以通过“网站”做到而通过Web角色难以或不可能做到?例如,使用“网站”,将多个网站放入单个VM集合变得容易吗?与“Web角色”相比,我会失去什么?微调IIS的能力?能够在本地使用缓存服务的能力?
10个回答

216

Web角色提供了一些超出Web应用(以前称为Web网站)的功能:

  • 能够运行提升的启动脚本来安装应用程序,修改注册表设置,安装性能计数器,微调IIS等。
  • 能够将应用程序分成层(例如前端Web角色,后端处理的Worker角色)并独立扩展。
  • 能够通过RDP登录到虚拟机进行调试。
  • 网络隔离。
  • 专用虚拟IP地址,允许云服务中的Web角色实例访问受IP限制的虚拟机。
  • ACL受限终结点(在Azure SDK 2.3中添加,于2014年4月发布)。
  • 支持任何TCP / UDP端口(Web站点仅限于TCP 80/443)。

但是,相比Web角色,Web应用程序具有以下优势:

  • 具有部署历史记录/回滚功能的几乎即时的部署。
  • 支持Visual Studio Online、github、本地git、ftp、CodePlex、DropBox、BitBucket等多种部署方式。
  • 能够使用多种CMS和框架之一(如WordPress、Joomla、Django、MediaWiki等)。
  • 可以使用SQL数据库或MySQL。
  • 从免费层级到共享层级再到专用层级的扩展简单快速。
  • Web Jobs
  • Web站点内容备份
  • 内置基于Web的调试工具(简单的cmd/powershell调试控制台、进程浏览器、日志流等诊断工具)。

在2014年4月和2014年9月的更新中,Web应用程序和Web角色(以及Worker角色)现在具有一些共同的功能,包括:

  • 分段+生产插槽。
  • 通配符DNS、SSL证书。
  • Visual Studio集成。
  • Traffic Manager支持。
  • 虚拟网络支持。

下面是我从Web Sites选择表单中截取的屏幕截图:

enter image description here

我认为Web应用程序是快速上手的好方法,您可以从共享资源转移到预留资源。一旦您发展壮大,您可以升级到Web角色并按需扩展。


除了 Git + ftp 之外,另一个很棒的工具是 PublishSettings(例如在 WebMatrix 2 中也可以使用)。 - Kris van der Mast
18
分层并不是一个区分因素。您可以使用工作角色和网站。 - RickAndMSFT
4
关于分层:对于 Web Sites,您需要通过外部端点连接到 Worker,因为 Web Sites不支持虚拟网络。此外,您必须将代码拆分到多个部署中(一个用于 Web Sites,一个用于具有 worker 角色的 Cloud Service)。使用 Cloud Service,您可以轻松将代码分区为可扩展的分层,然后独立地调整每个分层的大小和规模,同时让这些分层之间进行内部通信。这就是我提到分层作为云服务(Web/Worker)的差异化时所指的。 - David Makogon
1
这个与https://dev59.com/WWgu5IYBdhLWcg3w9ryX#10960755相比,不是有点过时了吗? - Matt Kocaj
2
使用Web角色,您还可以在同一台虚拟机上执行后台处理。 - Boris Lipschitz

46

注:2014年的内容已经过时,许多信息不再准确-请参见评论。

在@David的回答基础上,还需要补充:

使用Windows Azure网站时,由于您正在使用资源切片并与同一台机器上的数百个网站共享资源,因此您无法控制IIS或Web服务器,就像其他任何资源分享一样。

网站共享和Azure Web角色之间的最大区别在于,网站被认为是进程限制,而角色是VM绑定的。

网站存储在内容共享中,可从农场中的所有“Web服务器”访问,因此无需复制或其他任何操作。

Windows Azure网站无法拥有自己的主机名,必须仅使用websitename.azurewebsites.net,并且当它们在保留模式下运行时,您可以在DNS提供程序中使用CNAME设置来精确路由您的请求,这与以前的Windows Azure Role完全相同。对于共享网站,不支持CNAME设置。


据我所知,WebRoles 也没有自己的主机名 - 它们都是 rolename.cloudapp.net。除非有一些我不知道的功能? - Brian Reischl
你不能使用DNS来创建一个CNAME别名,将www.yourdomain.com指向websitename.azurewebsites.net吗? - Bernard Vander Beken
我相信对于WA Web Sites,只有运行在保留实例(专用虚拟机)上的应用程序才能够将自定义域映射到它们上面。 - user94559
我认为ScottGu最近提到他们正在考虑在共享实例上支持自定义域名。 - jeremy
19
说实话,这个答案中的很多信息已经不正确了(尽管在2012年6月是正确的):现在网站可以拥有自定义域名。网站可以运行在“保留”模式下,这本质上是一个虚拟机,但完全由管理人员控制。 - Jay Querido

34

我刚刚在http://robdmoore.id.au/blog/2012/06/09/windows-azure-web-sites-vs-web-roles/上发布了一篇关于这个问题的综合博客文章。

以下是我的结论摘录:如果您需要庞大的规模、SSL、亚洲或西部美国数据中心、非标准配置(IIS、端口、诊断、安全证书或启动脚本)、RDP或成本效益的工作角色(与Web角色相结合),那么现在还得坚持使用Web角色。

否则,Web站点是一个很好的选择!


14

Azure Web Role就像一个虚拟专用主机。您获得一个充当Web服务器的虚拟机(VM),并拥有该VM实例。

Azure Web Sites就像一个弹性共享托管服务。您将应用程序部署到一个不受您控制且也为其他用户提供站点服务的Web服务器上。您可以根据资源需求的变化将站点进行伸缩(需要额外费用)以使其更具弹性。


6
Azure Web Sites使您能够快速在Azure上构建高度可扩展的网站。您可以使用Azure门户或命令行工具设置支持流行语言(如.NET、PHP、Node.js和Python)的网站。支持的框架已经部署,不需要更多安装步骤。Azure Web Sites库包含许多第三方应用程序,例如Drupal和WordPress以及开发框架,例如Django和CakePHP。创建站点后,您可以迁移现有的网站或构建全新的网站。Web Sites消除了管理物理硬件的需求,并提供了几个扩展选项。您可以从共享的多租户模式转移到标准模式,其中专用机器服务于传入的流量。Web Sites还使您能够与其他Azure服务集成,例如SQL数据库、Service Bus和存储。使用Azure WebJobs SDK预览版,您可以添加后台处理。总之,Azure Web Sites通过支持广泛的语言、开源应用程序和部署方法(FTP、Git、Web Deploy或TFS),使应用程序开发更加容易。如果没有需要云服务或虚拟机的专业要求,则Azure Web Site很可能是最佳选择。 云服务使您能够在丰富的平台即服务(PaaS)环境中创建高可用性、可扩展的Web应用程序。与Web站点不同,云服务首先在开发环境(如Visual Studio)中创建,然后再部署到Azure。框架(如PHP)需要自定义部署步骤或任务,在角色启动时安装框架。云服务的主要优势是支持更复杂的多层体系结构。单个云服务可以包括一个前端Web角色和一个或多个工作角色。每个层可以独立缩放。还可以更好地控制您的Web应用程序基础结构。例如,您可以远程桌面连接到运行角色实例的计算机。您还可以脚本更高级的IIS和机器配置更改,在角色启动时运行,包括需要管理员控制的任务。
虚拟机使您能够在Azure的虚拟机上运行Web应用程序。这种功能也称为基础设施即服务(IaaS)。通过门户创建新的Windows Server或Linux机器,或上传现有的虚拟机镜像。虚拟机让您对操作系统、配置和安装的软件和服务拥有最多的控制权。这是一个很好的选择,可以快速将复杂的本地Web应用程序迁移到云中,因为整个机器可以移动。通过虚拟网络,您还可以将这些虚拟机连接到本地企业网络。与Cloud Services一样,您可以远程访问这些机器并能够在管理员级别执行配置更改。但是,与Web Sites和Cloud Services不同,您必须完全在基础架构级别管理虚拟机映像和应用程序架构。一个基本的例子是,您必须对操作系统应用自己的补丁。
请查看此链接的更新和全面比较: http://azure.microsoft.com/en-us/documentation/articles/choose-web-site-cloud-service-vm/

6

还有一个情况尚未确定:在这500个异常被排除之后,他们并没有提到Azure网站处理通配符CNAME的能力。我们中有几个人正在使用Nate的Web角色加速器,因为一行代码提供了Nate软件的通配符子域功能。在我们确认Azure网站能够处理它们之前,我们无法移动这些通配符子域应用程序。如果它永远不能做到这一点,那么Web角色方面就会成为正面因素。值得注意的是,在定价完全相同(预览折扣过期后)的情况下,我不确定是否要放弃我的RDC和事件查看器访问权限(只是提到其中两个事项)。


4
Azure网站、Web Worker和虚拟机是Windows Azure上可用的三种不同的计算方法。它们在控制和责任级别上有所不同:
- Azure网站:具有最低的控制级别,但您不必担心保持虚拟机和IIS的健康状态,因为Azure会为您处理这些。 - Web角色:提供更多的控制(流量管理、远程桌面),但可能需要更多的管理工作,这意味着您可以通过远程桌面等方式破坏某些内容。 - 虚拟机:提供完全的VM控制,因此需要最多的管理工作。
没有最佳选择,因为这取决于您需要的控制级别、需要哪些功能以及您想要让Azure维护什么。这是一个大话题...
请查看这些文章以获取更多信息,以便做出更明智的选择: 这归结于易用性和功能之间的权衡。

3

我发现还有两件事情,一个是为自定义域名网站获取SSL证书的成本,另一个是多租户配置。

对于网站,你需要在标准实例的基础上每月支付费用(小型实例是最便宜的选项)。这意味着为了获得自定义域名的https,你需要支付大约70美元/月的小型实例费用,以及大约41美元/月的支持所有浏览器的SSL证书费用。

对于WebRole,你可以选择XS实例并免费添加自己的SSL证书,这意味着你只需要支付大约15美元每月,就能拥有具有SSL证书的自定义域名。

对于多租户网站,请查看多租户Azure动态通配符CName


1
一个 Web 角色是托管多个网站的虚拟机。

2
并不完全准确。你可以在 Web 角色中托管多个网站,但是 Web 角色远远超出此范畴,因为它们是 Windows Server VM。你可以选择根本不运行任何网站,而只运行后台任务、REST 端点、数据库服务器等(没有使用 IIS 的要求,甚至可以禁用它)。不要忘记它们是无状态的,这使得它们非常容易扩展。 - David Makogon
@DavidMakogon,那么我可以这样说,Web 角色实际上执行一些任务,但由于它使用 HTTP 协议,因此被称为“WEB”角色,并且由于它支持此协议,因此也支持网站,但这并不是它的主要目标? - Aditya Bokade
@AdityaBokade 不要试图读太多:这个名称是 Azure 刚推出时的遗物,当时 Web 角色是托管外部应用程序的唯一方式(工作角色没有外部端点,也没有其他东西存在 - 没有 VM、没有 Web 应用程序)。Web(和工作)角色是无状态的 Windows 虚拟机,具有特殊的代码打包和启动脚本。它不是通过支持 http: 来定义的:您可以通过 http(s)、tcp、udp 或甚至根本不使用任何东西与外部资源通信。这就是全部内容。 - David Makogon

0

这是一个常见问题,我想引用一段来自 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接