243

新的Azure 网站与 ASP.NET MVC 应用程序的传统 Azure Web 角色之间有什么实质性区别?我为什么会选择“网站”而不是“网络角色”,反之亦然?

假设在任何一种情况下我都需要相同的容量(例如 2 个小实例)。除了网站在预览期间有 33% 的临时折扣之外,这些价格似乎相当。

我可以用“网站”做哪些对网络角色有困难或不可能的事情?例如,使用“网站”将多个网站放在一组虚拟机中是否变得容易?我会因为“网站”与“网络角色”而失去任何东西吗?能够微调 IIS?能否在本地使用缓存服务?

4

10 回答 10

214

Web 角色为您提供了 Web 应用程序(以前称为网站)之外的多项功能:

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

不过,Web 应用程序比 Web 角色具有优势:

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

随着 2014 年 4 月和 2014 年 9 月的推出,现在有一些 Web 应用程序和 Web 角色(以及 Worker 角色)共有的功能,包括:

  • 分期+生产槽
  • 通配符 DNS、SSL 证书
  • Visual Studio 集成
  • 流量管理器支持
  • 虚拟网络支持

这是我从网站图库选择表中截取的屏幕截图: 在此处输入图像描述

我认为 Web 应用程序是一种快速启动和运行的好方法,您可以在其中从共享资源转移到保留资源。一旦超出此范围,您就可以升级到 Web 角色并根据需要进行扩展。

于 2012-06-08T00:06:18.167 回答
45

编辑 2014:对于它的价值,这个答案中的很多信息不再正确 - 请参阅评论。

在@David 回复中添加更多内容:

使用 Windows Azure 网站,您无法控制 IIS 或 Web 服务器,因为您在同一台机器上使用资源切片以及数百个其他网站,您像其他任何网站一样共享资源,因此无法控制 IIS。

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

网站存储在内容共享上,可以从场中的所有“网络服务器”访问,因此不需要复制或类似的东西。

Windows Azure 网站不能有自己的主机名,而只能使用websitename .azurewebsites.net 并且您确定可以使用 DNS 提供程序中的 CNAME 设置来路由您的请求,与以前的 Windows Azure 角色完全相同,只有当它们以保留模式运行时. 共享网站不支持 CNAME 设置。

于 2012-06-08T02:01:22.503 回答
34

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

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

否则,网站是一个不错的选择!

于 2012-06-09T11:50:46.347 回答
14

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

Azure 网站就像一个弹性共享托管服务。您将应用程序部署到不受您控制的 Web 服务器,该服务器还为其他用户的站点提供服务。您可以向上和向下扩展您的站点(需额外付费),以使其在您的资源需求发生变化时更具弹性。

于 2012-06-08T05:49:49.847 回答
6

还有另一种情况悬而未决:在消除这 500 个异常之后,他们没有说明 Azure 网站处理通配符 CNAME 的能力。我们中的一些人在云服务中使用 Nate 的 Web 角色加速器,因为单行 hack 在 Nate 的软件中提供了通配符子域功能。在我们知道 Azure 网站能够处理它们之前,我们无法移动这些通配符子域应用程序。如果它永远无法做到这一点,那么它在等式的 Web 角色方面就会成为积极因素。另外值得注意的是,由于定价完全相同(在预览折扣到期后),我不确定是否要放弃对 RDC 和事件查看器的访问(仅提及两件事)。

于 2012-06-09T18:30:38.510 回答
6

Azure 网站使您能够在 Azure 上快速构建高度可扩展的网站。您可以使用 Azure 门户或命令行工具来设置使用流行语言(如 .NET、PHP、Node.js 和 Python)的网站。支持的框架已经部署,不需要更多的安装步骤。Azure 网站库包含许多第三方应用程序,例如 Drupal 和 WordPress,以及开发框架,例如 Django 和 CakePHP。创建站点后,您可以迁移现有网站或构建全新的网站。网站消除了管理物理硬件的需要,并且还提供了多种扩展选项。您可以从共享多租户模型转移到专用机器为传入流量提供服务的标准模式。网站还使您能够与其他 Azure 服务集成,例如 SQL 数据库、服务总线和存储。使用 Azure WebJobs SDK 预览版,您可以添加后台处理。总之,Azure 网站通过支持广泛的语言、开源应用程序和部署方法(FTP、Git、Web 部署或 TFS),可以更轻松地专注于应用程序开发。如果您没有需要云服务或虚拟机的特殊要求,Azure 网站很可能是最佳选择。

云服务使您能够在丰富的平台即服务 (PaaS) 环境中创建高可用性、可扩展的 Web 应用程序。与网站不同,云服务首先在 Visual Studio 等开发环境中创建,然后再部署到 Azure。诸如 PHP 之类的框架需要在角色启动时安装框架的自定义部署步骤或任务。云服务的主要优势是能够支持更复杂的多层架构。单个云服务可以由一个前端 Web 角色和一个或多个工作角色组成。每一层都可以独立扩展。对您的 Web 应用程序基础设施的控制水平也有所提高。例如,您可以远程桌面到运行角色实例的机器上。

虚拟机使您能够在 Azure 中的虚拟机上运行 Web 应用程序。此功能也称为基础架构即服务 (IaaS)。通过门户创建新的 Windows Server 或 Linux 机器,或上传现有的虚拟机映像。虚拟机让您可以最大程度地控制操作系统、配置以及已安装的软件和服务。这是将复杂的本地 Web 应用程序快速迁移到云的好选择,因为机器可以作为一个整体移动。借助虚拟网络,您还可以将这些虚拟机连接到本地企业网络。与云服务一样,您可以远程访问这些机器,并能够在管理级别执行配置更改。然而,与网站和云服务不同的是,您必须在基础架构级别完全管理您的虚拟机映像和应用程序架构。一个基本示例是您必须将自己的补丁应用到操作系统。

从此链接查看更新和全面的比较:http: //azure.microsoft.com/en-us/documentation/articles/choose-web-site-cloud-service-vm/

于 2014-06-27T04:56:41.813 回答
4

Azure 网站、Web Worker 和虚拟机是 Windows Azure 上可用的三种不同计算方法。它们在控制和责任级别上有所不同:

  • Azure 网站具有最低级别的控制,但你并不关心保持健康的虚拟机和 IIS,因为 Azure 的东西会为你做这件事
  • Web 角色为您提供更多控制(流量管理器、远程桌面),但您可以进行更多管理,这意味着您可以通过远程桌面破坏某些东西
  • 虚拟机让您可以完全控制 VM,因此需要进行最多的管理工作。

没有一个最佳选择,因为这取决于您需要什么级别的控制、您需要什么功能以及您希望保留 Azure 的东西来维护什么。这是一个很大的话题..

请查看这篇文章以获取更多信息以做出更明智的选择:

它归结为易用性和功能之间的权衡。

于 2014-02-22T10:11:21.303 回答
3

我发现的另外两件事是为自定义域站点和多租户配置获取 SSL 的成本。

对于网站,您需要在标准实例之上按月付费(小实例是最便宜的选择)。这意味着为了获得自定义域 https 将花费您 ~70/月的小型实例加上 ~41/月的 SSL 支持所有浏览器。

对于 WebRole,您可以获得 XS 实例并免费添加自己的 SSL,这意味着每月约 15 美元,并且您有一个带有 SSL 的自定义域。

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

于 2014-04-01T18:39:58.320 回答
1

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

于 2013-05-20T14:55:20.537 回答
0

这是一个常见的问题,我想摘录一段msdn。

访问缓存、服务总线、存储、SQL Azure 数据库等服务 - 网站:是 WebRole:是

支持 ASP.NET、经典 ASP、Node.js、PHP- 网站:是 WebRole:是

共享内容和配置 - 网站:是 WebRole:否

使用 GIT、FTP 部署代码- 网站:是 WebRole:否

近乎即时的部署-WebSite:Yes WebRole:No

集成 MySQL 即服务支持-网站:是 WebRole:是

多个部署环境(生产和登台)-WebSite:No WebRole:Yes

网络隔离-WebSite:No WebRole:Yes

远程桌面访问服务器-WebSite:No WebRole:Yes

能够以提升的权限运行程序-WebSite:No WebRole:Yes

能够定义/执行启动任务-WebSite:No WebRole:Yes

能够使用不受支持的框架或库-WebSite:No WebRole:Yes

支持 Windows Azure Connect/Windows Azure Network-WebSite:No WebRole:Yes

要获得更多详细信息,请访问此链接:http: //blogs.msdn.com/b/silverlining/archive/2012/06/27/windows-azure-websites-web-roles-and-vms-when-to -use-which.aspx

于 2014-09-12T07:31:56.317 回答