基于Hosted WebCore 方式部署Web Role

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

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

<?xml version="1.0" encoding="utf-8"?>

<ServiceDefinition name="FullIisDemo"xmlns="http://schemas.microsoft.com

/ServiceHosting/2008/10/ServiceDefinition">

<WebRole name="WebRole1">

<Endpoints>

<InputEndpoint name="Endpoint1"protocol="http" port="80" />

</Endpoints>

<Imports>

<Import moduleName="Diagnostics" />

<Import moduleName="RemoteAccess" />

<Import moduleName="RemoteForwarder" />

</Imports>

</WebRole>

</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 又是什么呢?

这个例子中的WindowsAzure 项目,它的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,包括多站点部署、虚拟目录、虚拟应用程序以及WAS(Windows Activation Service)。这就是为什么开发人员在WindowsAzure SDK 1.3之前无法在一个Hosted Service 中实现多个Web Role 部署。

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

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

本书详细信息:http://blog.csdn.net/broadview2006/article/details/6859004

基于Hosted WebCore 方式部署Web Role相关推荐

  1. tomcat如何通过配置的方式部署web工程

    Workspaces 下有很多工程文件,这个 Workspaces 是 Myeclipse 自动生成的,我们通过 Myeclipse 写的工程都在这个 Workspaces 文件夹下. 我们部署工程到 ...

  2. 在Linux安装配置Tomcat 并部署web应用 ( 三种方式 )

    系统版本:centos6.5版本 java版本:1.7 一.准备工作 1.java -version 检查是否有java环境,没有则需要去安装并配置到环境变量中. 2.下载tomcat包,下载地址:h ...

  3. 如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用?

    2019独角兽企业重金招聘Python工程师标准>>> 本文作者 Jacek Laskowski 拥有近20年的应用程序开发经验,现 CodiLime 的软件开发团队 Leader, ...

  4. 关于 WSGI、uwsgi和uWSGI的区别及基于 uWSGI和gunicorn 部署python web 简述

    关于 WSGI.uwsgi和uWSGI的区别及基于 uWSGI和gunicorn 部署python web 简述 引言 最近基于 Flask Web框架在开发一个后端项目,在Web Server和 F ...

  5. CentOS7中基于rpm包方式安装部署apm(php module模块)+ xcache

    CentOS 7, 基于rpm包方式安装部署apm(php module) : 要点: 一个虚拟主机提供phpMyAdmin,另一个虚拟主机提供wordpress: 1.配置环境: (1)关闭防火墙 ...

  6. java部署web service的方式

    部署web service的方式一般有两种: 1. 编写java源文件,将文件的java后缀改为jws,然后部署到webapps/axis目录下,axia引擎可以直接执行源文件中定义的java方法为w ...

  7. 基于JAVA校园外卖系统Web端计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA校园外卖系统Web端计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA校园外卖系统Web端计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 ...

  8. Tomcat部署Web项目的3种方式

    一.将war包丢进webapps 这是最简单粗暴的方式:将web工程打成war,丢进tomcat/webapps目录即可,tomcat会自动解压.无需修改任何配置文件即可完成部署. 这里我准备了tom ...

  9. 基于已有集群动态发现方式部署 Etcd 集群

    https://www.hi-linux.com/posts/19457.html etcd提供了多种部署集群的方式,在「通过静态发现方式部署etcd集群」 一文中我们介绍了如何通过静态发现方式部署集 ...

  10. Web services 安全实践: 基于 HTTP Basic Authentication 为 Web services 配置传输层安全机制...

    转载:http://www.ibm.com/developerworks/cn/webservices/1106_webservicessecurity/ 简介 正如"HTTP Basic ...

最新文章

  1. 深入浅出理解c++虚函数
  2. word中怎样单独删除某一页的页码
  3. Spring Boot基础学习笔记14:实现文件上传功能
  4. nms python代码_?标检测中的?极?值抑制算法(nms):python代码解析
  5. Android Activity 生命周期
  6. int n引发的中断应用——编写中断7CH的中断例程
  7. Asp.net-MyFirstMVCProject详细解释
  8. win10下Linux子系统开启ssh服务
  9. subplot()函数--Matplotlib
  10. python treeview控件使用详解_winform Treeview控件使用
  11. 计算机三级网络技术(精简)
  12. 从五个方面入手保障应用安全
  13. 一首好听的英文歌lemon tree(柠檬树)的中文歌词
  14. python工具——pypinyin 汉字转换拼音
  15. 嵌入式--轮询调度模块
  16. 标签系统mysql设计_关于tag标签系统的实现
  17. EasyNVR纯H5摄像机直播解决方案前端解析之:RTSP安防监控实时直播的四分屏的前端展示方案
  18. MySQL数据库基础详细教程
  19. 即将上演的5G测量仪器大战
  20. 交叉编译知识解析(一) —— 交叉编译和交叉工具链

热门文章

  1. ElasticStack系列之九 master、data 和 client 节点
  2. HDU2222【AC自动机(基础·模板)】
  3. rabbitmq 消息持久化
  4. 利用partial关键字声明分部类和分部方法
  5. 浅复制和深复制的区别?//浅拷贝和深拷贝
  6. nginx编译包含perl模块
  7. jQuery中浏览器版本判断的一个BUG,此BUG已影响到jqModal,thickbox等多个jQuery插件的应用...
  8. [转]一个软件设计的全过程(基于UML)
  9. Linux操作系统中的IP配置
  10. (转)通过 Javacore 诊断线程挂起等性能问题