Azure网站和Azure Web角色有什么区别


241

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

假设在两种情况下我都需要相等的容量(例如2个小实例)。除了在预览期间网站有33%的临时折扣这一事实外,价格似乎具有可比性。

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


具有相同的qs。他们应该在文档中明确指出。
90深渊

Answers:


213

Web角色为您提供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角色(和辅助角色)共有的功能,包括:

  • 登台+生产槽
  • 通配符DNS,SSL证书
  • Visual Studio整合
  • 交通管理器支持
  • 虚拟网络支持

这是我从“网站”库选择表中获得的屏幕截图: 在此处输入图片说明

我认为Web Apps是快速启动和运行的好方法,您可以从共享资源转移到保留资源。一旦超出此限制,就可以转到“ Web角色”并根据需要进行扩展。


除了Git + ftp外,另一个很棒的功能是PublishSettings(例如,也可以在WebMatrix 2中使用)
Kris van der Mast

18
分成几层并不是一个区别因素。您可以在网站上使用辅助角色。
RickAndMSFT

4
关于层:对于Web站点,您需要通过外部端点连接到Worker,因为Web站点不支持虚拟网络。此外:您必须将代码分散在多个部署中(一个用于Web站点,一个用于带服务角色的Cloud Service)。借助Cloud Service,您可以轻松地将代码划分为可伸缩的层,然后独立调整每个层的大小和规模,同时在这些层之间进行内部通信。这就是我将层指出为Cloud Services(网络/工作者)的区别时的意思。
大卫·马科贡

1
stackoverflow.com/a/10960755/56145相比,这不是有点过时了吗?
马特·科卡伊

2
使用Web角色,您还可以在相同的VM上执行后台处理
Boris Lipschitz

44

EDIT 2014:就其价值而言,此答案中的许多信息已不再正确-请参见评论。

向@David响应添加更多内容:

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

网站共享和Azure Web角色之间的最大区别是,网站是角色绑定的,而角色是VM绑定的。

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

Windows Azure的网站不能有自己的主机名,而必须使用websitename只有.azurewebsites.net,你肯定可以使用CNAME设置在您的DNS提供商来发送你的要求正好与只有当他们在保留模式运行以前的Windows Azure角色相同。共享网站不支持CNAME设置。


AFAIK WebRoles也没有获得自己的主机名-它们都是rolename.cloudapp.net。除非有我不知道的功能?
Brian Reischl 2012年

您不能使用DNS创建从www.yourdomain.com指向websitename.azurewebsites.net的CNAME别名吗?
Bernard Vander Beken 2012年

我相信对于WA网站,只有运行有保留实例(专用VM)的应用程序才能将自定义域映射到它们。
user94559 2012年

我认为scottgu最近提到他们也在寻求在共享实例上支持自定义域。
杰里米

19
就其价值而言,此答案中的许多信息不再正确(尽管是在2012年6月):网站现在可以具有自定义域。网站可以在“保留”模式下运行,该模式本质上是VM,但是完全受管。
杰·奎里多

34

我刚刚在http://robdmoore.id.au/blog/2012/06/09/windows-azure-web-sites-vs-web-roles/上发布了有关此主题的综合博客文章。

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

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


14

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

Azure网站就像一个弹性的共享托管服务。您将应用程序部署到不受您控制的Web服务器上,并且该服务器还服务于其他用户的站点。您可以上下扩展站点(需要额外付费),以使站点随着资源需求的变化而更具弹性。


6

还有另外一种情况即将出现:消除了这500个例外之后,他们对Azure网站处理通配符CNAME的功能一无所知。我们中的一些人在Cloud Services中使用Nate的Web角色加速器,因为Nate的软件中提供了通配符子域功能的一线破解。在知道Azure网站将能够处理它们之前,我们无法移动这些通配符子域应用程序。如果它永远无法做到这一点,那么它在等式的“ Web角色”方面将被视为肯定。还要注意的是,由于定价完全相同(在预览折扣到期之后),我不确定是否要放弃对RDC和Event Viewer的访问(仅提及两件事)。


6

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

云服务使您能够在丰富的平台即服务(PaaS)环境中创建高可用性,可伸缩的Web应用程序。与网站不同,云服务首先在开发环境(例如Visual Studio)中创建,然后再部署到Azure。框架(例如PHP)需要自定义部署步骤或在角色启动时安装框架的任务。云服务的主要优点是能够支持更复杂的多层架构。单个云服务可能包含一个前端Web角色和一个或多个辅助角色。每一层都可以独立扩展。对您的Web应用程序基础结构的控制级别也越来越高。例如,您可以将远程桌面远程部署到运行角色实例的计算机上。

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

通过此链接查看更新的全面比较:http : //azure.microsoft.com/zh-cn/documentation/articles/choose-web-site-cloud-service-vm/


4

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

  • Azure网站的控制级别最低,但是您不必担心保持运行状况虚拟机和IIS,因为Azure的东西可以帮您做到这一点
  • Web角色可为您提供更多控制权(流量管理器,远程桌面),但您可以进行更多管理,这意味着您可以通过远程桌面破坏某些内容
  • 虚拟机可让您完全控制VM,因此需要进行最多的管理工作。

没有最佳选择,因为这取决于所需的控制级别,所需的功能以及要保留Azure内容的内容。这是个大话题。

请查看本文以获得更多信息,以便做出更明智的选择:

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


3

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

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

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

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


1

Web角色是承载多个网站的虚拟机


2
不太准确。您可以在一个Web角色中托管多个网站,但是Web角色是Windows Server VM,因此远远超出了这些角色。您可以选择根本不运行任何网站,而只运行后台任务,REST端点,数据库服务器等(不需要使用IIS,甚至可以禁用IIS)。并且不要忘记它们是无状态的,这使得它们非常容易扩展。
David Makogon 2013年

@DavidMakogon我也可以说,Web角色实际上执行一些任务,但是由于它使用HTTP协议,因此被称为“ WEB”角色,并且由于它支持该协议,因此它也支持网站,但这不是主要目的。因此?
Aditya Bokade '16

@AdityaBokade不要尝试多读它:该名称是Azure首次启动时的遗物,其中Web角色是承载面向外部的应用程序的唯一方法(Worker Roles没有外部终结点,并且不存在任何其他端点-而不是VM,而不是Web Apps)。Web(和工作人员)角色是无状态Windows虚拟机,具有用于代码和启动脚本的特殊包装。它不是通过支持http来定义的:您可以通过http(s),tcp,udp甚至根本不与外部资源进行通信。真的就是全部。
大卫·马科贡

0

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

访问诸如缓存,服务总线,存储,SQL Azure数据库之类的服务-WebSite:是WebRole:是

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

共享的内容和配置-WebSite:是WebRole:否

使用GIT和FTP部署代码-WebSite:是WebRole:否

即时部署-WebSite:是WebRole:否

集成的MySQL即服务支持-WebSite:是WebRole:是

多个部署环境(生产和分阶段)-WebSite:否WebRole:是

网络隔离-WebSite:否WebRole:是

对服务器的远程桌面访问-WebSite:否WebRole:是

能够以提升的权限运行程序-WebSite:No 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 -使用-哪个.aspx

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.