Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1492388
  • 博文数量: 465
  • 博客积分: 8915
  • 博客等级: 中将
  • 技术积分: 6365
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-30 15:05
文章分类

全部博文(465)

文章存档

2017年(33)

2016年(2)

2015年(4)

2014年(29)

2013年(71)

2012年(148)

2011年(178)

分类: 系统运维

2011-10-26 16:18:47

基于Hosted Web Core 方式部署Web Role

在介绍Windows Azure 平台部署Web Role 的原理之前,首先来看一个Windows Azure 项目,它只有一个ASP.NET Web Role

打开ServiceDefinition.csdef 文件,如下所示。

/ServiceHosting/2008/10/ServiceDefinition">

和我们之前看到的定义文件不同,这个文件里面没有Site 节点,而是直接定义了一个指向80 端口的HTTP Input Endpoint 作为对外的终结点地址。将这个项目部署到Windows Azure 平台并加入远程桌面支持。

部署完毕后,通过远程桌面连接到这个Role Instance 虚拟机上面。进入IIS 管理界面,如图8-41 所示,在IIS 中只有默认站点而没有这个Web Role 所对应的站点。而且这个默认站点指向的本地文件路径并不是Web Role 的所在位置。那么Web Role 被部署到哪里了?

 

 

打开虚拟机的任务管理器,可以看到有一个名为WaWebHost.exe 的进程,如图8-42 所示。这个Web Role 就被部署在了这个进程之中,而非IIS。那么这个WaWebHost.exe 又是什么呢?

 

 

 

 

这个例子中的Windows Azure 项目,它的ServiceDefinition.csdef 文件格式是基于SDK 1.2版本编写的,在配置文件中不包含Site 节点,所以当我们部署这个Windows Azure 项目的时候,Windows Azure 平台将会使用旧的模式部署Web Role。在这种模式下,Web Role 不会被部署到虚拟机的IIS 中,而是会被部署到一个名为Hosted Web Core 的组件里面,即如图8-42 所示的WaWebHost.exe 进程。

Hosted Web Core 正如其名称一样,是一个可以寄宿Web 站点的组件。通过它,Web 站点可以被部署在IIS 之外的一个进程中。Hosted Web Core 可以完成绝大多数IIS 的功能,所以一般来说,部署在Hosted Web Core 的网站和部署在IIS 中的没有任何区别。但也正是由于Hosted WebCore 只是IIS 的一个功能子集,因此无法完全实现IIS,包括多站点部署、虚拟目录、虚拟应用程序以及WASWindows Activation Service)。这就是为什么开发人员在Windows Azure SDK 1.3之前无法在一个Hosted Service 中实现多个Web Role 部署。

但是Hosted Web Core 部署的方式也会为程序带来一些便利。首先是对于Windows Azure 平台本身,Hosted Web Core 由于更加简单独立所以更便于Controller Fabric 控制。另外,对于WebRole 来说,WebRole.cs 中的代码和网站代码都是运行在同一个应用程序域的下面。也就是说对于RoleEntry OnStartRun OnEnd 等代码都是和网站代码运行在一起的。这样一来,网站代码中和WebRole.cs 的代码相互调用等操作就会非常方便。图8-43 展示了使用Hosted Web Core模式部署Web Role 的状态。

 

 

 

本文节选自《实战Windows Azure:微软云计算平台技术详解 》一书

本书详细信息:http://blog.chinaunix.net/space.php?uid=13164110&do=blog&id=2948608

阅读(628) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~