繁体   English   中英

将 web 站点部署到 azure 和传统 IIS

[英]Deploy web site to azure and traditional IIS

I currently work with a legacy asp.net web application and one of the requirements going forward is that it be deployable to windows azure.

我想知道管理 Azure 和传统 IIS web 服务器的部署会有多困难。

Azure seems to require a specific customized version of a web applicaiton project is it possible to deploy the customized web application to a standard IIS instance once it has been converted.

编辑:

它是一个 ASP.NET Web 应用程序而不是 Web 站点(将所有内容编译成一个 dll)

更新:

最后,由于将应用程序转换为在 Azure 中工作所涉及的工作量以及 Azure 与其他云解决方案相比的成本,因此决定使用托管传统云虚拟服务器的 Z34D1F91FB2E514B8576FAB1A75A89A6

感谢您提供非常好的答案。

您是否可以将您的应用程序部署到 Azure 几乎原样在很大程度上取决于您的应用程序的工作方式。 Azure 几乎要求您的应用程序是无状态的。 如果它是一个普通的 web 应用程序,将数据存储在 session 或应用程序缓存中,并且只将数据保存到数据库中,那么您可以将其部署到 Z3A580F142203677F1F0BC30898F63F。

如果您有像后台线程一样运行的有状态服务(无论如何这都很糟糕),或者如果您将数据保存到文件系统(除了临时缓存),那么您可能会遇到问题。 确实,迁移到 Azure 的问题与迁移到任何多服务器负载平衡解决方案的问题完全相同。 一个警告是永久存储。

如果你需要将数据存储在数据库以外的地方,那么你最好使用 Azure 的存储解决方案,它有一个 API 和用于存储二进制数据、键/值数据的客户端库(他们称之为表,但实际上,它不是桌子)和队列。 它们还具有透明的 blob-as-file-system 选项以实现兼容性。 如果你想在你的应用程序中使用这些也在 Azure 之外使用,那么你需要在你的代码和 Azure 客户端库之间编写一个额外的层,它支持 Z3A580F142203677F1F0BC30898ZF6 客户端库。 Azure SDK 确实包含用于 Azure 服务的仿真器,但它们绝对不适合生产使用。

就 Azure 特定项目的机制而言,这实际上并不难。 是的,您需要在解决方案中创建一个特定于 Azure 的项目,该项目定义 Web 角色和部署的内容,但它将引用您现有的 Web 应用程序,而不是相反。 You can deploy the Azure Web Role to Azure or you can continue to deploy the existing application to IIS normally and concurrently.

Web 站点,Web 应用程序,MVC,真的没有太大区别。 实际上也不必是 .NET。 可以是 PHP 或 Java 或任何你想放在你的虚拟机上的东西。 就 Azure 而言,它的工作原理都是一样的。

MS 喜欢将 Azure 作为平台即服务 (Paas) 解决方案推出,他们提供大量服务,您可以在他们的标准平台上运行应用程序,并将其与亚马逊 AWS 进行对比,他们称之为基础设施即服务-服务(Iaas),它“只是”一个虚拟机。 但是,MS 实际上与 AWS 一样是 IaaS 解决方案,甚至可能更是如此。 AWS 和 Azure 之间的唯一区别是 AWS 允许您选择要在 VM 上安装的内容,并且使用 Azure 您必须使用 Windows 服务器 2008窗户)。 借助 Azure 和 AWS,主机提供额外的 PaaS 服务,您可以利用这些服务进行数据存储和消息路由。 AWS 还提供大量额外服务,例如视频流。

另请注意,使用 Azure(我认为是 AWS),您甚至可以在非托管应用程序中使用它们提供的服务。 如果你想从非 Azure 应用程序使用 Azure 的数据存储,你可以这样做,它只是 HTTP REST 调用来获取/放置数据。 您为数据中心和非数据中心托管的应用程序之间的数据输入/输出支付的唯一区别是,如果应用程序也在数据中心内(只是数据输入/输出在数据中心内是免费的,您仍然有存储和交易费)。

一些东西:

  • Samuel Neff 的回答提到在 blob(云驱动器)中安装文件系统。 只有一个实例可以锁定此云驱动器进行写入,因此它的行为不像网络文件共享。 你需要为此做好计划。
  • 您需要与 Windows Azure 诊断子系统集成,以了解应用程序的运行 state(例如性能计数器、跟踪日志等)。
  • 如果您的 web 应用程序依赖于第三方应用程序,则您需要安装这些应用程序。 这些实际上是作为角色实例启动过程的一部分通过 OnStart() 事件处理程序或作为启动任务安装的。 后者允许管理员级别的安装(包括注册表更改、COM 组件安装等)。 您需要仔细管理这些安装,因为它们会影响实例的启动时间。
  • 对于 asp.net 应用程序,您需要考虑 session state。 进程内 session state 将不起作用,因为每个实例在 ZCD691B4957F06CDE26 中都有自己的 state 存储。 The SQL Azure session state provider doesn't have background cleanup agents, so you'll need to build this into your web or worker role instance (see this blog post by the SQL Azure team for the implementation). 最好的选择是使用 AppFabric Cache,这是一项刚刚投入生产的新服务。 此缓存即服务还为 asp.net 提供了自定义 session state 提供程序。 注意:截至今天,AppFabric 缓存服务只能通过 .NET 接口访问; 它没有 REST 接口(所有其他存储服务 - 表、blob、队列 - 都有REST 接口)。 .NET、 JavaPHP都有存储客户端库。 Ruby 有一个来自开源社区。
  • 当需要时,您必须管理扩展到多个实例。 这不是今天的内置服务,但有第 3 方服务,例如 ParaLeap 的AzureWatch 还有微软的 System Center Operations Manager,它现在有 Windows Azure 监控支持。 您还需要处理缩减服务器实例数量的情况。

对于类似的 StackOverflow 问题,我在此处的答案中有一些额外的详细信息。

我没有亲自尝试过Windows Azure 迁移扫描仪,但如果它像宣传的那样工作,这真的会派上用场。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM