Azure 提供几种方式托管 web 应用程序,如 、和。查看这些不同的选项后,您可能不确定哪一种最适合需求,或可能有不清楚的概念,如 IaaS 对比 PaaS。这篇文章可帮助您了解选项,并帮助您为自己 web 方案做出正确的选择。尽管所有三个选项允许您在 Azure 中运行高度可扩展的 web 应用程序,但差异可帮助指导您的决定。
在许多情况,Azure 网站是最佳的选择。它为部署和管理提供简单灵活的选项,并且能够在托管高容量的网站。使用流行的软件如 WordPress,可从 Web 应用程序库快速创建新的网站,或可以将现有的网站移动到 Azure 网站。使用(目前处于预览状态),还可以添加后台作业处理。
还有在 Azure 云服务或 Azure 虚拟机上托管 web 应用程序的选项。这些选项是很好的选择,您的 web 层需要它们提供更多额外级别的控制和定制;但是,此增强的控制要以应用程序创建、管理和部署的复杂性增加为代价。下图说明了三个选项之间的权衡。
网站是更易于设置、管理和监视,但配置选项较少。关键之处在于使用 Azure 网站时,没有让您信服的理由将 web 前端放在云服务或虚拟机上。本文档其余部分提供做出明智决策所需的信息。这包括:
方案
我是小型企业所有者,并且我需要一种成本较低的方式来托管自己的站点,同时考虑将来的增长。
Azure 网站 (WAWS) 是这种情况不错的解决方案,因为您可以开始免费使用它,然后在需要时添加更多功能。例如,每个免费的网站附带由 Azure 提供的域 (your/_company。 chinacloudsites.cn)。如果已经准备好开始使用自己的域,添加的费用低至低至 $9.80 每月(截止到 1/2014)。有许多其他服务和扩展选项,允许站点随着用户需求的增加而发展。使用 Azure 网站,您可以:
- 从免费层开始,然后根据需要向上扩展。
- 使用应用程序库快速设置流行的 web 应用程序,如 WordPress。
- 根据需要向您的应用程序添加其他 Azure 服务和功能。
- 通过使用 your/_company.chinacloudsites.cn 域名提供的证书,用 HTTPS 保护您的网站。
我是 web 或图形设计师,并且我想为客户设计和生成网站
对于 web 开发人员,Azure 网站为您提供创建复杂的 web 应用程序所需的内容。网站提供 Visual Studio 和 SQL 数据库等工具的紧密集成。使用网站,开发人员可以:
- 使用的命令行工具。
- 使用流行的语言,如 、、 和 。
- 选择向上扩展到超高容量的三个不同的扩展级别。
- 与其他 Azure 服务集成,例如 、和。
- 与工具集成,例如 Visual Studio、Git、WebMatrix、WebDeploy、TFS 和 FTP。
我要将带有 web 前端的多层应用程序迁移到云
如果您运行多层应用程序,如与数据库服务器对话以存储和检索网站数据的 web 服务器,则您在 Azure 中有几个选项。这些体系结构选项包括网站、云服务和虚拟机。首先,网站对于您的解决方案是不错的选择,并可配合 Azure SQL 数据使用以创建一个两层体系结构。网站还允许您使用 Azure WebJobs SDK 预览运行后台或长时间运行进程。如果您需要更复杂的体系结构或更灵活的扩展选项,云服务或虚拟机是更好的选择。
云服务使您能够:
- 在可扩展的 web 和辅助角色上托管 web、中间层和后端服务。
- 仅在辅助角色上托管中间层和后端服务,保持前端在 Azure 网站上。
- 独立扩展前端和后端服务。
虚拟机使您能够:
- 更轻松地迁移高度定制的环境,如一个虚拟机映像。
- 运行不能在网站或云服务配置的软件或服务。
我的应用程序取决于高度定制的 Windows 或 Linux 的环境
如果您的应用程序需要软件和操作系统的复杂安装或配置,虚拟机可能是最佳解决方案。通过虚拟机,您可以:
- 使用虚拟机库启动操作系统,如 Windows 或 Linux,然后针对您的应用程序要求对其进行定制。
- 创建并上传现有的本地服务器的自定义映像,在 Azure 中的虚拟机上运行。
我的站点使用开放源代码软件,并且我希望在 Azure 中托管它
所有三个选项都允许您托管开放源代码语言和框架。云服务要求您使用启动任务,来安装和配置在 Windows 上运行的任何所需的开放源代码软件。使用虚拟机,可在机器映像上安装和配置软件,基于 Windows 或 Linux 都可以。如果网站上支持开放源代码框架,这提供更简单的方法来托管这些类型的应用程序,因为使用应用程序所需的语言和框架可以自动配置“网站”。网站使您能够:
- 使用多种流行的开放源代码语言,如、、 和 。
- 安装 WordPress、Drupal、Umbraco、DNN 和许多其他第三方 web 应用程序。
- 迁移现有应用程序或从应用程序库创建一个新的。
我有一个业务应用程序需要连接到公司网络
如果您想要创建业务应用程序,您的网站可能需要直接访问公司网络上的服务或数据。可能在网站、云服务和虚拟机上。您采用的方法中存在差异,其中包括:
- 网站可通过使用服务总线中继安全地连接到本地资源。这允许公司网络上的服务代表该 web 应用程序执行任务,无需将所有内容移到云中或建立一个虚拟网络。
- 云服务和虚拟机可以充分利用虚拟网络。实际上,虚拟网络允许 Azure 中运行的机器连接到本地网络。然后 Azure 将成为您公司数据中心的扩展。
我想为移动客户端托管 REST API 或 web 服务
基于 HTTP 的 web 服务允许您支持各种客户端,包括移动客户端。如 ASP.NET Web API 的框架与 Visual Studio 集成,能够更加轻松地创建和使用 REST 服务。这些服务来自 web 端点,因此可使用 Azure 上的任何 web 托管技巧支持此情况。但是,网站是托管 REST API 的不错选择。使用“站点”,您可以:
- 快速创建网站以便在 Azure 全球分布的数据中心之一托管 HTTP web 服务。
- 迁移现有的服务或创建新的,可能会利用 Visual Studio 中的 ASP.NET Web API。
- 实现 SLA 的单个实例可用性,或向外扩展到多台专用的计算机。
- 使用已发布的站点来提供 REST API 到任何 HTTP 客户端,包括移动客户端。
服务摘要
允许您在 Azure 上快速生成高度可扩展的网站。您可以使用 Azure 门户或命令行工具,通过流行的语言(例如 .NET、PHP 和 Python)设置网站。支持的框架已部署并且不要求更多安装步骤。Azure 网站库包含许多第三方应用程序(例如 Drupal 和 WordPress)以及开发框架(例如 Django 和 CakePHP)。在创建网站后,您可以迁移现有网站或者生成全新网站。Web 站点无需管理物理硬件,还提供了几个扩展选项。您可以从共享的多租户模型移动到标准模式,那里的专用机服务于传入流量。网站还允许您与其他 Azure 服务(例如 SQL数据库、服务总线 和存储)相集成。使用 预览,您可以添加后台处理。总之,Azure 网站通过支持多种语言、开放源应用程序和部署方法(FTP、Git、Web Deploy 或 TFS),从而更便于关注应用程序开发。如果您没有要求云服务或虚拟机的专门要求,则 Azure 网站非常有可能是您的最佳选择。
通过,您能够在丰富的平台即服务 (PaaS) 环境中创建高度可用的、可扩展 Web 应用程序。与网站不同,云服务首先在 Visual Studio 之类的开发环境中创建,然后部署到 Azure。PHP 之类的框架要求在角色启动时安装框架的自定义部署步骤或任务。云服务的主要优势在于能够支持更复杂的多层体系结构。单个云服务可由一个前端 Web 角色以及一个或多个辅助角色构成。每个层都可以单独缩放。还有对您的 Web 应用程序体系结构的提高的控制级别。例如,您可以使用远程桌面控制正在运行角色实例的计算机。您还可以编写在角色启动时运行的更高级的 IIS 和计算机配置更改的脚本,包括要求管理员控制的任务。
,您能够在 Azure 中的虚拟机上运行 Web 应用程序。这种功能也称为“基础结构即服务 (IaaS)”。通过门户创建新的 Windows Server 或 Linux 计算机,或者上载现有的虚拟机映像。虚拟机向您提供对操作系统、配置以及已安装软件和服务的最高的控制。这个选项很适合于快速将复杂的本地 Web 应用程序迁移到云,因为计算机可作为整体进行迁移。使用虚拟网络,您还可以将这些虚拟机连接到本地公司网络。与云服务一样,您能够远程访问这些计算机并且能够在管理级别执行配置更改。但与网站和云服务不同,您必须完全在基础结构级别管理虚拟机映像和应用程序体系结构。一个基本示例是您需要将自己的修补程序应用到操作系统。
功能比较
下表比较网站、云服务和虚拟机的功能,以便帮助您进行最佳选择。表格后面的注释中详细解释带有星号的框。
功能 | 网站 | 云服务(web 角色) | 虚拟机 |
---|---|---|---|
访问 服务总线、存储、SQL数据库 之类的服务 | X | X | X |
托管多层体系结构的 web 或 web 服务层 | X | X | X |
托管多层体系结构的中间层 | X | X | |
集成的 MySQL-as-a-service 支持 | X | X 1 | X |
支持 ASP.NET、经典 ASP、Node.js、PHP、Python | X | X | X |
向外扩展到多个实例且无需重新部署 | X | X | X 2 |
支持 SSL | X 3 | X | X |
Visual Studio 集成 | X | X | X |
远程调试 | X | X | X |
使用 TFS 部署代码 | X | X | X |
使用 GIT、FTP 部署代码 | X | X | |
使用 Web 部署来部署代码 | X | 4 | X |
WebMatrix 支持 | X | X | |
接近即时的部署 | X | ||
实例共享内容和配置 | X | ||
向上扩展到更大的计算机且无需重新部署 | X | ||
多个部署环境(生产和过渡) | X | X | |
使用 Azure 虚拟网络进行网络隔离 | X | X | |
支持 Azure 流量管理器 | X | X | X |
对服务器的远程桌面访问 | X | X | |
能够定义/执行启动任务 | X | X | |
自动操作系统更新管理 | X | X | |
集成的端点监视 | X | X | X |
无缝平台切换(32 位/64 位) | X | X |
1 Web 和辅助角色可以通过 ClearDB 的产品集成 MySQL-as-a-service,但不作为管理门户工作流的一部分。
2尽管虚拟机可以向外扩展到多个实例,在必须编写这些计算机上运行的服务以处理此向外扩展。必须配置额外的负载平衡器以跨机器路由请求。最后,应为参与同一角色的所有计算机创建一个地缘组,防止它们从维护或硬件故障同时重启。
3对于“网站”,自定义域名的 SSL 仅支持标准模式。有关将 SSL 用于网站的更多信息,请参见。
4 在部署到单实例角色时云服务支持 Web 部署。但是,生产角色要求多个实例以便满足 Azure SLA。因此,Web 部署不是在生产中用于云服务的合适的部署机制。