基于Apache源代码的Web应用服务器的体系结构分析 论文(2)

2019-03-22 12:04

沈阳工程学院毕业论文 目 录

4.2 模块的加载 .................................................................................................. 20

4.2.1 静态模块加载 .................................................................................... 20 4.2.2 动态模块加载 .................................................................................... 23 4.2.3 模块卸载 ............................................................................................ 27 4.3 指令表 .......................................................................................................... 28 4.3.1 指令表概述 ........................................................................................ 28

4.3.2 指令处理函数 .................................................................................... 28 4.4 挂钩(HOOK) ............................................................................................... 29

4.4.1 声明挂钩 ............................................................................................ 29 4.4.2 挂钩数组声明 .................................................................................... 31 4.4.3 挂钩结构 ............................................................................................ 31 4.4.4 挂钩函数注册 .................................................................................... 32 4.4.5 使用挂钩 ............................................................................................ 32

总 结 .......................................................................................................................... 35 致 谢 .......................................................................................................................... 36 参考文献 ...................................................................................................................... 37

- IV -

沈阳工程学院毕业论文 第1章 概 述

第1章 概 述

1.1 课题研究的意义

众所皆知,Apache良好的模块化架构设计已经成为经典的服务器架构——易于扩展、易于维护。几乎每一个程序员都可以从Apache的架构中吸取到丰富的营养。虽然Apache的代码非常优美,架构层次非常清晰,但是在缺乏资料的情况下,开发人员想在短时间内读懂Apache架构和内部细节并不是一件容易的事情。在陷入迷茫和一头雾水之后,他们可能就会选择放弃,从而与Apache的优美架构失之交臂。

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机上。 所以越来越多的人使用Apache服务器。因此,对于Apache使用者来说,理解和掌握Apache运行原理及运行体系是很重要的。

本论文通过分析Apache Web 服务器源代码理解和掌握Apache Web服务器源代码体系结构,使读者能够更加方便快捷的阅读掌握Apache Web服务器源代码体系结构,理解Apache Web服务器的机制体系和运行原理。

1.2 Apache功能

1.2.1 Apache虚拟主机

虚拟主机是指一个机器上运行多个Web站点的机制。虚拟主机的实现包括以下三种方式。

(1) Web服务器中配备多个IP地址,并且每一个逻辑Web服务器使用一个IP地址。

(2) Web服务器只有一个IP地址,不同的Web服务器使用不同的端口进行侦听。

(3) Web服务器只有一个IP地址,同多个域名被映射到该IP地址上。

Apache中支持上面三个方式的虚拟主机,而且通过mod_vhost_alias模块,可以使得类似的虚拟主机配置起来非常容易,减轻了管理者的负担。

1.2.2 持续连接

所谓持续连接,就是某个连接再打开后不立即关闭,而是继续使用,后续的数据传输都基于该连接。因此对于某一个Web界面来说,不管其中包含了视频还是图片等,都是基于该连接传送的。为了使用持续连接,客户端和服务器之间会使用“Connection:keep-alive”请求域;默认情况下连接就是持续连接,除非进行了特殊的指定。如果客户端和服务器端的某一方不愿意使用持续连接,它只需要设置“Connection:close”请求域,另一方面一旦接收到“Connection:close”,

- 1 -

沈阳工程学院毕业论文 第1章 概 述

就会在当前请求处理完毕后关闭当前请求。Apache中提供了配置指令,允许限制同一连接上的处理请求的数目,以及处理超时的时间,一旦超过该处理时间,所有的连接都将关闭。

1.2.3 缓存

HTTP通常位于分布式信息系统中,在这些系统中,可以通过采用缓存应答的方式改善系统的性能。HTTP/1.1协议中包含了大量的元素,尽可能地使缓存产生更好的效果。通过缓存,可以加快客户端的响应速度。

HTTP/1.1协议中缓存的设计目标就是在很多情况下见地发送请求的必要性,以及在很多其他情况下降低发送完整应答的必要性。前者就使你少了很多操作所需要的网络回合的数目——它使用过期机制来实现这一目的。后者减少了网络带宽需求——通过验证机制达到这一目的。

1.2.4 访问控制和安全

对于Web站点上存在的一些私有文件,我们必须确保这些文件在绝对的受控范围之内,通过认证、授权和访问控制等一系列的安全措施,可以确保受控资料的安全性。

认证(Authentication)、授权(Authorization)及账户确认(Accounting)三者合起来称为AAA模块。

- 2 -

沈阳工程学院毕业论文 第2章 课题研究相关技术

第2章 课题研究相关技术

Apache的所有源代码都是使用C语言开发的。因此,如果你不熟悉C语言,则最好不要阅读本论文。如果你熟悉C++,则会更好。Apache中的很多设计都借鉴了C++的一些思想,了解C++,会让你更容易理解这些设计。

本论文的Apache代码基于2.2.8版本,读者在阅读之前请登陆Apache 下载网址http://httpd.apache.org下载一份代码。对于阅读和分析代码,笔者推荐使用的工具是SourceInsight。

理解代码的最好方式就是跟踪和调试。因此勤于调试能有助于你对Apache源代码和本书内容的理解。

2.1 HTTP协议及HTTP服务器的工作原理

2.1.1 HTTP协议简介

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。

HTTP协议定义服务器端和客户端之间文件传输的沟通方式。目前HTTP协议的版本是Http1.1。RFC 2616描述了HTTP协议的具体信息。

这个协议已经成为浏览器和Web站点之间的标准。

当访问者点击一个超链接的时候,将会给浏览器提交一个URL地址。通过这个URL地址,浏览器便知道去链接那个网站并去取得具体的页面文件(也可能是一张图片,一个pdf文件)。

HTTP工作的基础就是,连接一个服务器并开始传输文件到浏览器。 最基本的过程是:

(1)客户端连接一个主机 (2)服务器接收连接

(3)客户端请求一个文件 (4)服务器发送一个应答

2.1.2 HTTP服务器

整个Web可以分为俩个重要的组成部分:客户端和服务器端。当客户端需要请求特定的URI时,它将与服务器建立连接,并通过HTTP协议发送请求至Web服务器。Web服务器接收到客户端的请求之后将生成响应内容,同时将该响应内容通过连接返回给客户端。

- 3 -

沈阳工程学院毕业论文 第2章 课题研究相关技术

正常情况下,一个HTTP服务器会等待浏览器发送的请求,并根据HTTP协议进行响应。客户端总是请求某个特定的文档。服务器将检查该请求,同时将客户端请求的文档映射到服务器本地的文件系统中,或者将该请求转发给一个特别的应用程序,并由该应用程序负责对请求进行处理,生成相应内容。一旦处理完毕,服务器将把处理结果返回个客户端。

2.2 MVC三层体系结构以及各个层次之间的依赖关系

2.2.1 MVC三层体系结构

MVC是设计模式应用的一个经典案例。其中的M指数据模型datamodel,V指视图View,C指控制器Controller。 MVC应用程序总是由三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller 改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。

2.2.2 MVC三层体系结构之间的依赖关系

MVC模式是一个复杂的架构模式,其实现也显得非常复杂,但多种设计模式结合在一起,使MVC模式的实现变得相对简单易行。Views可以看作一棵树,显然可以用Composite Pattern来实现。Views和Models之间的关系可用Observer Pattern体现。Controller控制Views的显示,可以用Strategy Pattern实现。

- 4 -


基于Apache源代码的Web应用服务器的体系结构分析 论文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:苏教版语文五年级上册单元要点总结及练习

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: