首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将网站部署到azure和传统IIS

将网站部署到azure和传统IIS
EN

Stack Overflow用户
提问于 2011-05-26 00:39:22
回答 3查看 4.9K关注 0票数 5

我目前使用的是一个遗留的asp.net web应用程序,未来的需求之一是它可以部署到windows。

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

Azure似乎需要一个特定的自定义版本的web应用程序项目,可以部署自定义的web应用程序到一个标准的IIS实例,一旦它被转换。

编辑:

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

更新:

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

谢谢你给出的好答案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-26 02:01:17

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

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

如果您需要将数据存储在数据库以外的地方,那么最好使用Azure的存储解决方案,该解决方案具有一个API和客户端库,用于存储二进制数据、键/值数据(他们称之为表,但实际上不是表)和队列。他们也有一个透明的blob文件系统选项,以实现兼容性。如果您想在您的应用程序中使用这些服务,也可以在Azure之外使用,那么您需要在代码和Azure客户端库之间编写一个额外的层,该库支持Azure服务和标准本地服务。Azure确实包含用于Azure服务的模拟器,但它们绝对不是用于生产用途的。

至于专为Azure而设计的工程,那其实并不难.是的,您需要在解决方案中创建一个特定于Azure的项目,该项目定义Web角色和部署内容,但它将引用现有的Web应用程序,而不是反过来。您可以将Azure Web角色部署到Azure,也可以继续正常和并发地将现有应用程序部署到IIS。

Web站点、Web应用程序、MVC确实没有多大区别。实际上,也不必是.NET。可以是PHP或Java,也可以是您想要安装在VM上的任何东西。就Azure而言,一切都是一样的。

女士们喜欢把Azure作为一种平台即服务(Paas)解决方案,在这种解决方案中,他们提供了大量的服务,而你则在他们的标准平台上运行应用程序,并与亚马逊AWS (他们称之为基础设施即服务(Iaas) )形成对比,后者“只是”一台虚拟机。然而,MS实际上和AWS一样是一个IaaS解决方案,甚至可能更多。AWS和Azure之间唯一的区别是AWS允许您选择在VM上安装什么,使用Azure,您必须使用Windows 2008 R2作为VM的基础(但是您可以自定义VM映像,以便在windows之上安装自定义软件)。使用Azure和AWS,主机提供额外的PaaS服务,您可以利用这些服务进行数据存储和消息路由。AWS还提供大量额外服务,如视频流。

还请注意,使用Azure (和AWS,我认为)您可以使用他们提供的服务,即使是在一个非托管的应用程序。如果您想从非Azure应用程序中使用Azure的数据存储,您可以这样做,这只是HTTP调用来获取/放置数据。数据中心和非数据中心托管的应用程序之间唯一的不同之处是数据中心和非数据中心托管的应用程序,如果应用程序也在数据中心内,这将是免费的(只有数据输入/输出是免费的数据中心,您仍然有存储和交易费用)。

票数 8
EN

Stack Overflow用户

发布于 2011-05-26 02:30:50

有几件事:

  • 塞缪尔·内夫的回答提到了在一个blob (一个云驱动器)中安装一个文件系统。只有一个实例可以锁定此云驱动器进行写入,因此它的行为不像网络文件共享。你得为此做好计划。
  • 您需要与Windows诊断子系统集成,以获得应用程序运行状态的可视性(例如性能计数器、跟踪日志等)。
  • 如果您的web应用程序依赖于第三方应用程序,则需要安装这些应用程序。它们实际上是作为角色实例的引导过程的一部分安装的,可以通过OnStart()事件处理程序,也可以作为启动任务安装。后者允许管理级安装(包括注册表更改、COM组件安装等)。您需要仔细管理这些安装,因为它们会影响实例的启动时间。
  • 对于asp.net应用程序,您需要考虑会话状态。proc会话状态不能工作,因为每个实例在内存中都有自己的状态存储。state会话状态提供程序没有后台清理代理,因此需要将其构建到web或工作者角色实例中(有关实现,请参见state团队的这篇博客文章 )。最好的选择是使用AppFabric缓存,这是一种刚刚投入生产的新服务。此服务缓存还为asp.net提供自定义会话状态提供程序。注意:到目前为止,AppFabric缓存服务只能通过.NET接口访问;它没有REST接口(所有其他存储服务--表、blobs、队列--都有一个REST接口)。.NET、JavaPHP都有存储客户端库。Ruby有一个来自开源社区。
  • 当需要时,您必须管理扩展到多个实例。这不是一个内置的服务,但有第三方服务,如ParaLeap的AzureWatch。还有微软的系统中心操作管理器,它现在有Windows监控支持。您还需要处理回缩情况,减少服务器实例的数量。

对于一个类似的StackOverflow问题,这里,我有一些更多的细节。

票数 4
EN

Stack Overflow用户

发布于 2011-05-26 08:48:38

我还没有亲自尝试过Windows迁移扫描器,但是如果它能像广告中所说的那样起作用,这将是非常有用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6132567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档