Azure开发者任务之三:理解Azure应用程序(上)
作为Windows Azure的托管服务被设计和开发的应用程序由这两部分组成:
1,托管代码
2,XML配置文件
托管代码对应不同的角色
XML文件对应不同的配置设置
我们可以看一下下面这张图,它详细说明了在Windows Azure应用程序中主要包含哪些组件:
注意:这是Windows Azure SDK中的一张图。
接下来,我们会一个一个地仔细分析上面这张图中提到的每一个组件。
首先是角色
有三种类型的角色
1,Web角色
2,Worker角色
3,VM角色
Web角色
1,这是一个为IIS定制的角色。
2,如果我们选择了这种类型的角色,IIS会被自动地配置好。
3,这个角色主要用于获取输入。
4,这个角色已经针对HTTP请求做好相应的配置了。
5,它包含被IIS支持的Web站点或其他的代码。
6,它会包含一些ASPX页面,或者,它也可能会包含一些WCF服务。被IIS支持的任何应用程序都可以作为Web角色来使用。
7,任何一个应用程序都可以作为Web角色来使用,只要它支持HTTP协议就可以了。
8,当我们在Windows Azure中把WCF服务作为Web角色来使用的时候,我们需要确保在WCF服务中使用的绑定是“basicHttpBinding”。把WCF服务作为Web角色来使用,我们不能 使用其他的绑定。
Windows Azure SDK 1.3中Web角色的改进
1,支持IIS的全部功能。
2,Web应用程序和站点完全运行在IIS之下。
3,Web角色用和IIS完全一样的方式来使用应用程序域。
最大的改进是现在我们可以让把多个站点或应用程序看成一个Web角色了。
在创建Azure项目的时候,我们可以选择我们想为这个应用程序添加的Web角色的类型。已经安装的模板包括:
1,ASP.Net Web Role
2,ASP.Net MVC Web Role
3,WCF Service Web Role
4,CGI Web Role
在刚刚创建好的Windows Azure项目中,你可以看到,向导会为你自动地创建两种类型的配置文件。
在ServiceConfiguration.cscfg文件中,我们可以指定Web角色的实例数:
Worker角色
它主要用于后台任务。值得注意的是,Worker角色不支持IIS。所以,它可以处理任何类型的应用程序,包括非托管代码。Worker角色不用直接和用户进行交互,所以,当遇到那些异步的,需要很长时间才能完成的处理任务的时候,它就可以大显身手了。
Worker角色的主要用途
1,用于那些无需用户进行等候的任务。
2,用于那些异步的任务。
3,用于运行非HTTP服务(例如:TCP服务)。
4,托管不需要用户进行输入的应用程序。
Worker角色和Web角色之间的区别
让我们理解一下Web角色和Worker角色之间的区别:
1,Web角色是一个Web应用程序,它可以获取来自于用户的HTTP输入,它被IIS支持。Worker角色不支持IIS。这是Web角色和Worker角色之间的主要区别。
2,Web角色面向用户界面,而Worker角色获取来自于Web角色的输入,主要用于异步执行批量的操作。
3,在Web角色中,线程是通过IIS来管理的,而在Worker角色中,线程是开发者或者我们自己来管理的。
4,在Worker角色中,我们必须提供Run方法来启动这个进程。
5,Web角色和Worker角色的安全参数并不相同。
6,对于IIS和网络服务来说,默认是支持基于证书的ACL(Access Control List)的,而在Worker角色中,必须由开发者自己来管理。
在csdef文件中,Worker角色的定义如下,在下面这个配置文件中,这个Worker角色的名字是“WokerRole1”:
<WorkerRole name="WorkerRole11">
<Imports>
<import modulename="Diagnostics" />
</Imports>
</WorkerRole>
Worker角色类主要包含两个方法:
VM角色
第三种类型的角色是VM角色。这是非常特殊的一种角色,它主要用于虚拟机中的操作系统升级。
Web角色和Worker角色运行在一个虚拟机上,而VM角色是一个虚拟机,它可以全面控制虚拟机上的各种操作。
我们可以使用VM角色来控制虚拟机中的操作系统和升级,而操作系统是VM角色的实例。这个角色最适合用来迁移要作为托管服务在Windows Azure中运行的应用程序。
一个VM角色的定义如下所示:
<VirtualMachineRole name="MachineRole" vmsize="Medium">
<Imports>
<Import moduleName="RemoteAccess" />
<Import moduleName="RemoteForwarder" />
</Imports>
</VirtualMachineRole>
原文名:Windows Azure for Developers Task 3: Understanding Windows Azure Application 作者:Dhananjay Kumar
最新文章
- Linux用户体系和文件权限总结
- MAC上向GitHub上上传自己的项目
- Rethrowing exceptions and preserving the full call stack trace
- nyoj 1022 合纵连横【并查集节点的删除】
- openNebula 运维系列虚拟机virtual machines operations
- [原译]在mongoose中对Array Schema进行增删改
- Redis基础学习(四)&mdash;Redis的持久化
- how to install Web logic Server (WLS)
- ssm学习(五)--加入分页插件
- Layer弹出层销毁问题
- C语言 实现逆置功能
- asp.net mvc session锁问题
- Android学习之基础知识九 — 数据存储(持久化技术)之SQLite数据库存储
- ElasticSearch性能优化策略【转】
- 【Oracle】【6】去掉字符串最后一个特殊字符
- nodejs利用sequelize-auto 根据数据库的table 生成model
- vue实现未登录跳转到登录页面
- vue element-ui怎样提炼一个自己写的js当作公共js
- 转:log4net使用详解
- IE8 MIME type application/json not found
热门文章
- js中“==”与";===";的区别
- android之AlertDialog 点击其它区域自己主动消失
- CSS3学习笔记--transform中的Matrix(矩阵)
- 我的常用mixin 之 px
- 【网络——Linux】——IPMI详细介绍【转】
- JS - Cookie: getCookie, setCookie
- Dennis与Ken爷爷的UNIX/C世界
- QT编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)
- HBase Snapshot功能介绍
- 编译安装 LLVM