将网站部署到Azure和传统IIS

13 浏览
0 Comments

将网站部署到Azure和传统IIS

我目前正在使用一个传统的asp.net web应用程序,而且未来的要求之一是它可以部署到Windows Azure上。

我想知道将应用程序部署到Azure和传统的IIS web服务器上会有多困难。

Azure似乎需要一个特定定制版本的web应用程序项目,一旦转换完成,是否可以将定制的web应用程序部署到标准的IIS实例上。

编辑:

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

更新:

最终,由于将应用程序转换为在Azure上运行所需的工作量以及Azure与其他云解决方案相比的成本,决定选择传统的云托管虚拟服务器。

非常感谢你们提供的非常好的答案。

0
0 Comments

根据上述内容,可以得出以下结论:

问题原因:Windows Azure Migration Scanner网站无法访问,无法获取关于其当前位置的信息。

解决方法:目前没有提供解决方法。

根据以上内容,整理成一篇文章如下:

近期有用户反映无法访问Windows Azure Migration Scanner网站,并且找不到关于其当前位置的任何信息。这个网站是一个非常实用的工具,可以用于将网站部署到Azure和传统IIS服务器上。然而,目前尚未找到解决此问题的方法。

希望以上信息对您有所帮助。

0
0 Comments

问题的出现原因:

1. 在Azure中,使用云驱动器(blob)挂载文件系统时,只能有一个实例锁定该云驱动器用于写入,因此它不能像网络文件共享那样工作。

2. 需要与Windows Azure诊断子系统集成,以获得应用程序的运行状态可见性(例如性能计数器、跟踪日志等)。

3. 如果Web应用程序依赖于第三方应用程序,则需要安装这些应用程序。这些应用程序实际上是作为角色实例的引导过程的一部分安装的,可以通过OnStart()事件处理程序或启动任务(startup task)进行安装。后者允许进行管理员级别的安装(包括注册表更改、COM组件安装等)。需要仔细管理这些安装,因为它们会影响实例的引导时间。

4. 对于ASP.NET应用程序,需要考虑会话状态。In-proc会话状态无法工作,因为每个实例都有自己的内存状态存储。SQL Azure会话状态提供程序没有后台清理代理,因此需要将其构建到Web或Worker角色实例中(参见SQL Azure团队的这篇博文的实现)。最好的选择是使用AppFabric Cache,这是一个新的服务,刚刚投入生产。这个缓存作为服务提供了一个自定义的ASP.NET会话状态提供程序。注意:截至今天,AppFabric Cache服务只能通过.NET接口访问,没有REST接口(所有其他存储服务 - 表格、blob、队列 - 都有REST接口)。.NET、Java和PHP都有存储客户端库,Ruby有一个来自开源社区的库。

5. 当需要时,必须管理扩展到多个实例。目前,这不是一个内置的服务,但有第三方服务,如ParaLeap的AzureWatch。还有微软的System Center Operations Manager,现在支持Windows Azure监控。还需要处理缩减服务器实例数量的情况。

问题的解决方法:

1. 解决云驱动器锁定问题,可以通过规划好只有一个实例进行写入操作。

2. 与Windows Azure诊断子系统集成,以获取应用程序的运行状态可见性。

3. 安装第三方应用程序的方法是通过OnStart()事件处理程序或启动任务进行安装。需要注意管理这些安装,以减少实例的引导时间。

4. 解决会话状态问题,可以使用AppFabric Cache作为会话状态提供程序。

5. 扩展到多个实例的方法是使用第三方服务,如ParaLeap的AzureWatch或微软的System Center Operations Manager。还需要处理缩减服务器实例数量的情况。

0
0 Comments

部署网站到Azure和传统的IIS的问题出现的原因是应用程序的工作方式。Azure要求应用程序是无状态的。如果是仅在会话或应用程序缓存中存储数据并仅将数据保存到数据库的普通Web应用程序,则可以将其部署到Azure。

如果应用程序运行有状态服务,如后台线程(这本来就是不好的),或者将数据保存到文件系统(除了临时缓存),则可能会遇到问题。实际上,迁移到Azure的问题与迁移到任何多服务器负载均衡解决方案的问题是相同的。一个例外是永久存储。

如果需要将数据存储在数据库以外的位置,则最好使用Azure的存储解决方案。它具有用于存储二进制数据、键值数据(他们称之为表,但实际上不是表)和队列的API和客户端库。他们还提供了一个透明的将Blob作为文件系统的选项以实现兼容性。如果想在在Azure外部使用这些服务,则需要在代码和支持Azure服务和标准本地服务的Azure客户端库之间编写一个额外的层。Azure SDK包含Azure服务的仿真器,但它们绝对不适用于生产环境使用。

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

无论是Web站点、Web应用程序还是MVC,实际上并没有太大区别。实际上并不一定是.NET。可以是PHP、Java或任何您想在虚拟机上部署的内容。在Azure看来,它们都可以正常工作。

微软喜欢将Azure推销为平台即服务(PaaS)解决方案,在其标准平台上提供了大量服务供您运行应用程序,并将其与亚马逊AWS进行对比,后者被称为基础设施即服务(IaaS),只是一个“虚拟机”。然而,微软实际上与AWS一样是IaaS解决方案,甚至可能更多。AWS与Azure的唯一区别是AWS允许您选择在虚拟机上安装什么,而Azure则要求您使用Windows Server 2008 R2作为虚拟机的基础(但您可以自定义虚拟机映像以在Windows之上安装自定义软件)。Azure和AWS都为您提供了额外的PaaS服务,您可以利用这些服务进行数据存储和消息路由。AWS还提供了大量的额外服务,如视频流。

还要注意的是,使用Azure(以及AWS,我想)即使在非托管应用程序中也可以使用它们提供的服务。如果要从非Azure应用程序使用Azure的数据存储,您可以这样做,只需要进行HTTP REST调用来获取/放置数据。唯一的区别是在数据中心和非数据中心托管的应用程序之间的数据进出费用,如果应用程序也在数据中心内,则是免费的(只有数据进出在数据中心内是免费的,您仍然需要支付存储和事务费用)。

谢谢,我认为这实际上回答了我大部分的问题。是的,我们确实使用文件系统,所以我们需要一个文件系统访问的接口层,一旦我了解了Web角色的工作原理,这似乎是最复杂的部分。

0