将网站部署到天蓝色和传统的IIS

问题描述:

我目前与一个传统的asp.net web应用程序一起工作,其中一个要求是可以部署到windows azure。将网站部署到天蓝色和传统的IIS

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

Azure似乎需要Web应用程序项目的特定定制版本可以将定制的Web应用程序部署到标准IIS实例,只要它已被转换。

编辑:

这是一个ASP.NET Web应用程序,而不是一个网站(编译一切都变成一个DLL)

UPDATE:

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

并感谢你真正的好答案。

您是否可以将应用程序部署到Azure几乎与您的应用程序的工作方式有很大关系。 Azure几乎要求你的应用程序是无状态的。如果它是一个普通的vanilla web应用程序,它仅将数据存储在会话或应用程序高速缓存中,并仅将数据保存到数据库,则可将其部署到Azure。

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

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

就Azure特定项目的机制而言,这实际上并不困难。是的,您需要在您的解决方案中创建一个特定于Azure的项目,该项目定义了Web角色和部署的内容,但它会引用现有的Web应用程序,而不是相反。您可以将Azure Web角色部署到Azure,也可以继续将现有应用程序正常并发地部署到IIS。

网站,Web应用程序,MVC,真的没有太大的区别。其实也不一定是.NET。可以是PHP或Java或任何你想要放在你的VM上的东西。就Azure而言,它的工作方式都是一样的。

MS喜欢将Azure推广为平台即服务(Paas)解决方案,他们提供大量服务,并在其标准平台上运行应用程序,并与他们称之为基础架构的Amazon AWS形成对比-as-a-Service(Iaas),它只是一个虚拟机。但是,MS实际上与AWS一样是一个IaaS解决方案,甚至可能更是如此。AWS和Azure之间的唯一区别是AWS允许您选择在虚拟机上安装什么,使用Azure时必须使用Windows Server 2008 R2作为虚拟机的基础(但您可以自定义VM映像以在上方安装自定义软件的窗户)。使用Azure和AWS,主机可以提供额外的PaaS服务,您可以利用这些服务进行数据存储和消息路由。 AWS还提供大量额外的服务,例如视频流。

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

+0

谢谢我认为这实际上是我的大部分问题。是的,我们确实使用文件系统,所以我们需要一个接口层用于文件系统访问,一旦我了解网络角色的工作原理,看起来就像是最多的工作。 – eaglestorm 2011-05-26 02:10:38

有几件事情:

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

我在一个类似的*问题的答案中有一些额外的细节,here

+0

谢谢,还没有想过发邮件,所以需要将其添加到待办事项列表中。此外,写锁定可能是一个问题,因为我们将有一个Web角色和一个工作人员角色访问相同的天蓝色驱动器 – eaglestorm 2011-05-26 03:48:26

我还没有尝试Windows Azure Migration Scanner个人,但如果它的广告作品,这将真的派上用场。

+0

链接已损坏。 – RichVel 2012-10-17 06:37:42

+0

是的,它已关闭,我找不到任何有关其下落的信息。 – Chandermani 2012-10-17 10:47:03