服务器端状态保持机制的软件系统设计与实现.doc

上传人:仙人指路1688 文档编号:3030192 上传时间:2023-03-09 格式:DOC 页数:69 大小:1.26MB
返回 下载 相关 举报
服务器端状态保持机制的软件系统设计与实现.doc_第1页
第1页 / 共69页
服务器端状态保持机制的软件系统设计与实现.doc_第2页
第2页 / 共69页
服务器端状态保持机制的软件系统设计与实现.doc_第3页
第3页 / 共69页
服务器端状态保持机制的软件系统设计与实现.doc_第4页
第4页 / 共69页
服务器端状态保持机制的软件系统设计与实现.doc_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《服务器端状态保持机制的软件系统设计与实现.doc》由会员分享,可在线阅读,更多相关《服务器端状态保持机制的软件系统设计与实现.doc(69页珍藏版)》请在三一办公上搜索。

1、工程硕士学位论文ENGINEERING MASTER DISSERTATION论文题目 服务器端状态保持机制的软件系统设计与实现针对遂宁艺龙旅行网的改进工程领域 软 件 工 程指导教师 作者姓名 学 号 摘 要随着Web时代的到来,在无状态的HTTP世界中保持服务器端的状态成为Web开发者的一个大问题。Web服务器状态保持领域最近出现了几种存储和检索数据的不同技术。本文先介绍了服务器状态保持的现状,并介绍了CGI的基本概念及提出了基于CGI实现的服务器状态保持的目标。后来又介绍了常见的WEB服务器平台的架构,并着重分析了ASP.NET怎样维护或传递服务器端状态。最后介绍了LAPC/F架构并针对

2、该架构,采用CGI脚本运用SESSION机制对服务器状态保持进行了系统实现。艺龙旅行网 (NASDAQ: LONG)是中国领先的在线旅行服务提供商之一,为消费者提供酒店、机票和度假等全方位的旅行产品预订服务,遂宁艺龙旅行网是艺龙旅行网的重要分站之一。由于遂宁市旅游资源丰富,促使了遂宁旅游业高速发展,因此服务于旅游业的相关行业也飞速的发展着。遂宁艺龙旅行网是遂宁市最大的旅游相关资源定购的服务平台,为到遂宁旅游的广大人士提供机票预定、酒店预定等相关业务。因此遂宁艺龙旅行网的同时在线访问量较大,由此就造成了服务器经常发生异常而导致服务器状态丢失,从而导致遂宁艺龙在用户心里的满意度一再下降。本课题所研

3、究的方向是借助于Visual C+开发平台,运用CGI脚本技术,针对SESSION这一种服务器状态保持机制特点,设计了一种比现有的服务器状态保持机制更优的一种SESSION状态保持机制。该机制的成功设计,解决了遂宁市艺龙旅行网经常由于访问量过大而导致的服务器状态丢失的问题,为遂宁艺龙旅行网提高客户满意度方面做出了巨大的贡献。关键词: 服务器状态,CGI, 会话状态,C语言,艺龙AbstractWith the Web era, in the world of stateless HTTP to maintain the status of a server-side Web developer

4、s a big problem. Web server status remain several areas of recent store and retrieve data of different technologies. This article first describes the state of the server to maintain the status quo, and introduces the basic concepts of CGI and CGI-based implementation is proposed to maintain the targ

5、et server status. Later introduced a common framework for WEB server platform, and analyzed how the ASP.NET server-side state maintenance or delivery. Finally, the LAPC / F structure and for the framework, the use of CGI scripts on the server status using SESSION mechanism to maintain a systematic i

6、mplementation.ELong (NASDAQ: LONG) is a leading online travel service providers to provide consumers with hotels, air tickets and a full range of travel products and vacation booking service, Suining, eLong is eLongs One of the important sub-station. As rich in tourism resources in Suining, Suining

7、prompted the rapid development of tourism, so tourism-related service industries in the rapid development of the. ELong Suining, Suining City is the largest tourism resources ordered service platform, to provide the majority of Suining travel ticket booking, hotel reservations and other related busi

8、nesses. Therefore Suining eLong large amount of online access while, which has caused the servers are often caused by abnormal loss of server status, resulting in Suining eLong satisfaction of the user heart dropped again.The subject of the research direction is by means of Visual C + + development

9、platform, the use of CGI scripting technology for the state to maintain SESSION mechanism that features a server, designed a state to maintain than the existing server as a better mechanism to maintain state SESSION Mechanism. Successful design of the mechanism to solve the Suining City eLong often

10、as a result of excessive access to the missing server status issues for Suining eLong increased customer satisfaction has made a great contribution.Keywords: Server status, CGI, session state, C language, eLong目 录第一章 绪论11.1服务器状态保持机制的选题依据11.2 国内外研究现状31.3 课题研究内容41.3.1 研究内容41.3.2 研究目标4第二章 系统的理论基础52.1 C

11、语言简介52.1.1 C语言的定义52.1.2 C语言的发展历史52.1.3 C语言的优点62.2 VC+ 介绍62.2.1 VC+6.0简介62.2.2 MFC简介72.3 CGI简介82.3.1 CGI的提出82.3.2 CGI的工作原理92.3.3 CGI与其他WEB技术的关系102.4 七种常见WEB服务器简介102.4.1 Microsoft IIS112.4.2 IBM WebSphere122.4.3 BEA WebLogic132.4.4 IPlanet Application Server142.4.5 Oracle IAS142.4.6 Apache152.4.7 Tomc

12、at162.5 SESSION技术简介172.5.1 SESSION技术介绍172.5.2 SESSION的功能缺陷18第三章 服务器状态保持机制分析193.1 ASP.NET服务器状态保持机制193.1.1 ASP.NET应用程序状态193.1.2 ASP.NET会话状态203.1.3 配置文件属性223.1.4 数据库支持233.2 WebLogic中服务器状态保持方法233.3 Lapc/F架构分析24第四章 服务器状态保持机制的设计264.1 系统架构设计264.2 URI编码方式的设计264.3环境变量处理274.4 COOKIE机制设计284.4.1 COOKIE的结构284.4.

13、2 COOKIE的限制294.5 SESSION机制设计304.6 系统详细设计314.6.1 Connector组件设计314.6.2 Container组件设计334.6.3 HOST设计364.7 系统组件间接口设计374.7.1 Service接口设计374.7.2 StandardService接口设计38第五章 服务器状态保持机制的实现405.1 CGI配置文件的实现405.2 服务器状态监控设置窗口的实现415.2.1 服务器监控设置界面的实现415.2.2 服务器监控设置界面的代码实现425.3 服务器状态保持功能的实现435.3.1 服务器状态保持实现步骤435.3.2 代码

14、实现445.4服务器状态加载功能的实现535.4.1 服务器状态加载功能实现方法535.4.2 实现代码545.5 系统监控日志功能的实现555.5.1 系统监控日志功能的实现方法555.5.2 系统监控日志实现代码56第六章 总结与展望58参考文献59致 谢61第一章 绪论1.1服务器状态保持机制的选题依据Web应用程序是无状态的。 每次从服务器请求页时,都会创建网页类的一个新实例。 这通常意味着在每次往返过程中会丢失该页及其控件中的所有信息。这意味着它们不自动指示序列中的请求是否全部来自相同的客户端,或者单个浏览器实例是否一直在查看页或站点。 此外,到服务器的每一往返过程都将销毁并重新创建

15、页;因此,如果超出了单个页的生命周期,页面信息将不存在。页面运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤。 这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及进行呈现。了解页生命周期非常重要,因为这样做就能在生命周期的合适阶段编写代码,以达到预期效果。 为了克服 Web 编程的这一固有的局限性,Web页框架包含几种状态管理功能,可以在往返过程之间将页和控件值保存到 Web 服务器。状态保持是对同一页或不同页的多个请求维护状态和页信息的过程。CGI的中文名称是通用网关接口(Common Gateway Interface,CGI)的简称。它是一种基于WE

16、B服务器与其它外部程序进行通讯的一个接口标准。通过它外部程序不仅仅可以在服务器上生成文字等静态内容,还可以生成表格、图像、声音等一些生动的动态内容。CGI是工作在服务器上的,它的主要工作原理是:客户端通过传递一些信息给服务器,服务器获取到这些信息后去启动CGI的相关程序来完成的1。CGI是架在服务器上的连接客户端与外部执行程序的一道桥梁,它通过系统变量或者文件将处理后的结果返回给服务器,服务器读取这些内容后再回显给客户端程序,由此完成一个客户端到服务器端、接着由服务器端到外部执行程序、然后再由外部执行程序返回结果给服务器、最后由服务器回显结果给客户端的一个完整的交互过程2。由于CGI是工作在服

17、务器上的,所以借助于它的服务器程序就可以读取SQL数据库文件,从而使服务器程序具有数据存储与处理的能力。CGI(Common Gateway Interface: 公用网关接口)规定了Web服务器调用其他可执行程序(CGI程序)的接口协议标准3。Web服务器通过调用CGI程序实现和Web浏览器的交互,也就是CGI程序接受Web浏览器发送给Web服务器的信息,进行处理,将响应结果再回送给Web服务器及Web浏览器4。CGI程序一般完成Web网页中表单(Form)数据的处理、数据库查询和实现与传统应用系统的集成等工作。CGI程序可以用任何程序设计语言编写,如Shell脚本语言、Perl、Fortr

18、an、Pascal、C语言、PHP、ASP、JSP等,自CGI产生以来,C语言以其高效性、灵活性和通用性一直是开发交互式WEB应用的最有吸引力的选择5。虽然用C语言编写的CGI程序具有执行速度快、安全性高(因为C语言程序是编译执行且不可被修改)等特点,但近年来,能直接内嵌于HTML文档中间的各种脚本工具,如PHP、ASP、JSP等,以其简便性、易用性使一部分用户开始放弃了直接用C语言来开发CGI脚本6。但还有两类用户没有放弃用C语言来开发它们的应用:一是对性能追求较高的高端开发者;二是嵌入式设备的开发人员7。前者选择C语言来开发它们的WEB应用,是因为C高效性、灵活性和通用性是各种脚本工具无法

19、取代的。后者选择C语言,是因嵌入式设备的特点(内存、CPU等资源有限等,不可在设备上运行如ASP,PHP,PERL等的脚本的运行环境)决定的(另外,目前嵌入式设备主要以C语言开发为主)8。自CGI出现以来,就有人开发方便C语言开发的开发库cgilib,从目前的情况看cgilib并没有得到广泛的应用;而诸如PHP、ASP、JSP等各种脚本开发工具,它们则受到WEB开发者的直接异常青睐9。对比后不难发现,相对于PHP、ASP、JSP等脚本工具来说,C语言缺乏强有力的字符串处理能力,同时基于C语言的cgilib对越来越多的交互式WEB应用需求支持不够,如页面模板支持、SESSION功能等,让使用者输

20、出HTML文档时非常烦琐,源代码可读性较差,维护困难,导致开发速度慢,因此在实际应用中应用C语言做为CGI开发工具的越来越少。由于电子商务的运作,客户端状态保持机制Cookie、服务器端状态保持机制Session应运而生,被PHP、ASP、JSP等各种语言应用在用户认证、安全机制、购物车等功能上面,而目前各种C语言的CGILIB仅仅支持客户端状态保持机制Cookie,而在服务器端状态保持机制Session方面还难以见到相关文献和相关的CGILIB10。本课题将在CGI的服务器端状态保持机制Session方面进行探索,扩展C语言的CGILIB在电子商务上的应用。艺龙旅行网 (NASDAQ: LO

21、NG)是中国领先的在线旅行服务提供商之一,为消费者提供酒店、机票和度假等全方位的旅行产品预订服务,遂宁艺龙旅行网是艺龙旅行网的重要分站之一。由于遂宁市旅游资源丰富,促使了遂宁旅游业高速发展,因此服务于旅游业的相关行业也飞速的发展着。遂宁艺龙旅行网是遂宁市最大的旅游相关资源定购的服务平台,为到遂宁旅游的广大人士提供机票预定、酒店预定等相关业务。因此遂宁艺龙旅行网的同时在线访问量较大,由此就造成了服务器经常发生异常而导致服务器状态丢失,从而导致遂宁艺龙在用户心里的满意度一再下降。为了解决遂宁市艺龙旅游网同时在线用户数较多时,而出现的服务器状态丢失的问题正是本课课题的研究目标。1.2 国内外研究现状

22、CGI 函数库的严重缺乏是导致用CGI开发web应用大量减少重要原因,目前网上流行的CGI函数库主要是国外的cgilib和libcgic,但同出开源的两者都只拥有少的可怜的参考资料和说明文档,参考资料更是寥寥无几,相比之下asp、jsp等 web开发语言却拥有大量丰富的类库和开发资料。因此LAPC/F架构组花费数月时间研究了CGI规范和 cgilib、libcgic函数库,开发出集大成者iCGI函数库,拥有使用简单、功能强大、方案完整等诸多特点,还包含独创的HTML模板技术,使得 CGI(c)开发变得快捷和高效 。iCGI函数库(http:/icgi.calvinwilliams.name/i

23、ndex/index.html)主要包含表单处理函数子库CGIForm、网址解析函数子库CGIQuery、浏览器会话函数子库CGICookie三大子库以及其它子库11。表单处理CGIForm函数子库主要处理浏览器端表单数据(包含上传文件数据)的读取和分析,实现服务端应用获取浏览器端表单数据完整解决方案。网址解析CGIQuery函数子库主要处理浏览器访问网址的读取和分析,实现服务端应用获取用户访问网址数据处理完整解决方案。浏览器会话CGICookie 函数子库主要处理浏览器与服务器交互会话时使用的cookie数据的读写,实现服务端应用读写cookie数据完整解决方案。CGI笼统函数子库 CGIG

24、eneral封装了对CGI环境访问。HTML模板子库CGIHtml完整的实现了Html模板功能。CGI流编码库CGIMime提供了两种主流编码的编码解码功能。URL解析函数子库CGIUrl提供了原始的url编码解码功能。国外CGILIB库主要有Thomas Boutell 开发的CGIC 开发包,当前最新版本是2.05,cgic是用来生成基于CGI的WEB应用程序的C语言函数库,它有以下功能: 对数据进行语法分析;接收以GET和PSOT两种方式发送的数据;把FORM中的不同域连接成连续的串;为检索FORM数据而提供字符串,整数,浮点以及单项和多项选择功能;为数字字段提供边界检测 ;把CGI环境

25、变量加载到非空的C串中;为调试而捕捉CGI状态 ;提供相对安全的系统调用功能12。国内CGILIB库主要有开发的SKY CGI LIB ,能够在 FastCGI 模式,或者非 FastCGI 模式下,在 Apache 或者 IIS 等服务器上稳定地开发和运行13。Sky CGI Lib 的函数有六类:内存管理、输入、处理、保存、输出、前五类函数的支持函数,完成 cookie、表单、文件等 CGI 数据的解析、保存、发送等功能。国内、国外的较知名的C语言CGILIB都没有对服务器端状态保持机制Session功能支持,因此本课题对服务器端状态保持机制Session功能的支持必然可以扩大C语言的CG

26、ILIB在电子商务上的应用。1.3 课题研究内容1.3.1 研究内容本课题通过分析不同脚本语言对服务器端状态保持机制Session技术的差别,基于C语言开发代码的灵活性,实现C语言CGILIB的服务器端状态保持机制Session技术,并与PHP、JSP等脚本语言实现Session共享,利用服务器端Session状态保持技术,结合客户端状态保持机制Cookie技术,极大地提升CGILIB类库在电子商务应用的便捷性与安全性。1.3.2 研究目标通过对不同脚本语言在服务器端状态保持机制Session技术的特点进行分析,并分析得出各种服务器状态保持机制的共有性特点, 结合分析结果编写出基于VC+语言的

27、服务器状态监控器,运用CGI脚本与服务器进行交互,针对服务器 Session机制进行优化并加强,从而确保服务器端状态保持机制的完善并保证其稳定的运行。第二章 系统的理论基础2.1 C语言简介2.1.1 C语言的定义 C语言是Combined Language(组合语言)的中英混合简称。是一种林立于当今各种计算机语言之林的一种程序设计语言14。C语言是一种完善的程序设计语言,它即包含汇编语言的初级特性,以兼有高级语言的很多特性。C语言可以做为底层语言,编写基于特定操作系统的或硬件的特定的程序;还可以作为应用程序设计语言,编写不依赖计算机硬件的通用应用程序。C语言所具这些特性,使得它的应用领域相当

28、的广泛,不仅仅是在软件开发过程使我们经常见到它的身影,就连各类科研领域中它的身影也是屡见不鲜。2.1.2 C语言的发展历史C语言也称为A语言,它的原型ALGOL 60语言。1972 年,美国贝尔实验室的 Dennis Ritchie在B语言的基础上创造了C语言。B语言是美国贝尔实验室的Ken Thompson于 1970年,以BCPL(Basic Combined Programming Language,基本组合编程语言)为基础设计出来的15。C语言从1963年其前身ALGOL 60一直到1994年的ISO标准制定的过程中经历了30多年的发展,其中主要的历程如下:1963年,剑桥大学将ALG

29、OL 60语言发展成为CPL(Combined Programming Language)语言,标志着C语言时代的开始。1972年,经美国贝尔实验室的D.M.Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。1978年,这一年标志着C语言的名称正式形成。美国电话电报公司(AT&T)贝尔实验室正式发表了语言。1983年,美国国家标准化协会(American National Standards Institute)在贝尔实验室发布的C语言的基础上制定了一个完整的C语言标准。通常称之为ANSI C。这也是C语言发展史上最重要的一年,

30、是C语言标准化值得纪念的一年。1994年,ISO修订了C语言的标准。2.1.3 C语言的优点1. 简洁紧凑、灵活方便C语言程序在编写过程中没有太多的语法规则限制可以灵活的书写,且C语言的系统关键只有32个,控制语句也只有9个,程序整体上没有多大的复杂度。2. 运算符丰富在C语言中不经过重载的运算符总数达到34个,可以提供灵活丰富的表达式。3. 数据结构丰富在C语言中数据类型是很丰富的,除了包括整形、浮点型、字符型、数组类型、枚举类型、指针类型等基本类型外,还包括结构体类型以及共用体类型等自定义类型。4. C是结构式语言C语言是一种结构式语言,它的显著特点是将程序结构与数据进行分离,使程序在运行

31、过程中按照代码的结构一步一步的执行。5. C语法限制不太严格,程序设计自由度大C语言在程序设计过程中由于语法灵活,开发者可以根据自己的思维进行灵活设计,具有很强的自由性。6. C语言允许直接访问物理地址,可以直接对硬件进行操作C语言的指针类型允许开发人员直接操作内存,具有很高的性能与灵活性。7. C语言程序生成代码质量高,程序执行效率高由于C语言也是一种底层语言生成的中间代码较少,因而在执行过程中相对于对硬件直接操作的汇编性能仅仅低20%左右。8. C语言适用范围大,可移植性好2.2 VC+ 介绍2.2.1 VC+6.0简介Visual C+6.0是微软公司推出的一款具有面向对象的可视化设计的

32、集成开发工具,它主要开发(Windows 95/ 98/2000/ XP/ NT)等操作系统平台下的Win32应用程序。它的最大优点就是提供了功能强大的MFC类库,MFC是一个很大的C+类层次结构,其中封装了大量的类及其函数,很多Windows程序所共有的标准内容可以由MFC的类来提供,MFC类为这些内容提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓,这将简化编程工作,大大的减少程序员编写的代码数量,使编程工作变得更加轻松容易16。2.2.2 MFC简介MFC的全称是微软基础类(Microsoft Foundation Classes),它

33、实际上是微软提供的一个应用程序框架,主要用于方便开发人员在C+环境下编写应用程序。VC+是WinOS下开发人员使用的专业C+ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包,MFC作为与VC+血肉相连的部分(注意C+和VC+的区别:C+是一种程序设计语言,是一种大家都承认的软件编制的通用规范,而VC+只是一个编译器,或者说是一种编译器+源程序编辑器的集成开发环境,WS,PlatForm,这跟Pascal和Dephi的关系一个道理,Pascal是Dephi的语言基础,Dephi使用Pascal规范来进行Wi

34、n下应用程序的开发和编译,却不同于Basic语言和VB的关系,Basic语言在VB开发出来被应用的年代已经成了Basic语言的新规范,VB新加的Basic语言要素,如面向对象程序设计的要素,是一种性质上的飞跃,使VB既是一个IDE,又成长成一个新的程序设计语言),MFC同BC+集成的VCL一样是一个非外挂式的软件包,类库,只不过MFC类是微软为VC+专配的17。MFC是Win API与C+的结合,API,即微软提供的WinOS下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方(如我是一方,微软是一方,Borland就是第三方)的编程语言

35、来进行对Win OS下应用程序的开发,使这些被开发出来的应用程序能在WinOS下运行,比如VB,VC+,Java,Dehpi编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能工作在WinOS的消息机制和绘图里,遵守WinOS作为一个操作系统的内部实现,这其实也是一种必要,微软如果不提供API,这个世上对Win编程的工作就不会存在,微软的产品就会迅速从时尚变成垃圾,上面说到MFC是微软对API函数的专用C+封装,这种结合一方面让用户使用微软的专业C+ SDK来进行Win下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多程序开发人员在Win下用C+

36、 & MFC编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图,这种结合是以方便为目的的,必定要付出一定代价(这是微软的一向作风),因此就造成了MFC对类封装中的一定程度的的冗余和迂回,但这是可以接受18。2.3 CGI简介2.3.1 CGI的提出WEB服务器是互联网上最主要的信息管理和组织手段,它集信息展现生动丰富、信息共享方便、信息组织容易等优势于一身,具有很强的应用价值19。WEB服务器是由HTTP(Hyper-Text Transfer Protocol,简单文本传输协议)、HTML(Hyper-Text Markup Language,简单文本标记语言)、URL(Unit

37、Resource Location,统一资源定位)、CGI(Common Gateway Interface: 公用网关接口)等一系列的技术组成。WEB服务器为了完成客户端的请求以及信息的显示与处理等要求,提供一系列标准的的功能,但随着用户对服务器应用领域以及应用功能的不同,要求WEB服务器提供一些自定义的功能, WEB服务器受到本身提供功能的限制将不能很好的满足用户的需求,此时就要求WEB服务器具有一种扩展手段,以便用户根据需求自定义服务器处理逻辑,编写用户自定义扩展程序来扩展服务器功能。CGI就是在这种应用需求的一个解决方案。CGI是一个连接外部应用程序到信息服务器(比如HTTP或者网络服

38、务器)的标准。一个简单的HTML文档是无交互后台程序,它是静态的,也就是说它处于一个不可变的状态,即文本文件不可以变化。相反地,CGI程序是可以实时执行地,它可以输出动态的信息20。举个例子吧,如果你想把Unix数据库“挂到”万维网上,并允许世界各地的人可以访问它。基本上,就需要创建一个CGI程序,它的执行将传递信息给数据库引擎,并且把解雇返回给用户显示出来。这是一个网关的例子。 数据库例子是一个简单的思想,在实际应用过程中更为复杂。实际上没有什么不能挂到网络上面的。但是只有一件事情你必须记住:不管你的CGI程序是怎样,一定不能花太多的时间来处理。既然CGI程序是可执行的,那基本上就等价于世界

39、任何地方的人可以在你的系统中运行CGI程序,所以这是一种不安全的事情。因此在使用CGI程序的时候,需要一些安全的预防措施。可能,一种有效的方法是将CGI程序放置在一个特殊的目录中,这样网络服务器件只是执行CGI程序而不是将它显示到浏览器中。这个特殊的目录通常处在网络管理员直接控制的目录,这样就可以阻止普通用户创建CGI程序21。仍然有其它几种方法可以允许用户访问CGI脚本,但是这需要网络管理员为他进行一些设置。在这一点上,你可能有与网络管理员联系以获得访问CGI权限的冲动。 如果你有一个NCSA HTTP服务器分布的版本,你将看到一个目录/cgi-bin。这个目录就是上面所提的特殊目录,它就是

40、放置CGI程序的地方。CGI程序可以用任何的语言来编写,并且可以在以下的系统中执行: C/C+、Fortran、PERL、TCL 任何的Unix shell、Visual Basic、AppleScript 采取什么的语言依靠你的系统支持什么语言而定的。如果你使用过一个编程语言如C或者Fortran,你就会知道在运行程序之前必须对程序进行编译。如果你进入这个目录,你就会发现一些CGI程序的源代码。但是如果你使用其中一种脚本语言,比如PERL、TCL或者Unix shell,脚本就只需要放置在/cgi-bin目录中,因为没有相关的源代码。许多设计人员喜欢使用CGI脚本而不使用编程语言,因为脚本比

41、需要编译的程序语言更容易调试、修改和维护。2.3.2 CGI的工作原理客户端的Web浏览器浏览到某个主页后,利用一定的方式提交数据,并通过HTTP协议向Web服务器发出请求,服务器端的HTTP Daemon(守护进程)将描述的主页信息通过标准输入stdin和环境变量(environment variable)传递给主页指定的CGI程序,并启动此应用程序进行处理(包括对数据库的处理),处理结果通过标准输出stdout返回给HTTP Daemon守护进程,再由HTTP Daemon进程通过HTTP协议返回给客户端的浏览器,由浏览器负责解释执行,将最终的结果显示给用户22。当WEB客户端通过浏览器将

42、URL参数传递到WEB服务器后,调用WEB服务器触发CGI程序时,WEB服务器首先根据调用的参数类型调用合适的CGI处理程序,同时动态生成几个文件存放于临时目录下,这些文件分为.ini(CGI初始配置文件)、.inp(CGI处理输入文件)、.out(CGI处理输出文件)等文件。在WEB服务器生成CGI程序的进程的同时,通过命令行参数将.ini配置文件的绝对路径传给CGI进程。此时CGI处理进程通过读取指定路径下的.ini文件中所包含的.inp、.out等文件路径信息。经过这些步骤后CGI程序所需要的初始参数已经收集完成。之后,CGI程序可读取.ini和.inp文件所提供的信息,读取所有来自WE

43、B服务器端和与WEB客户端端的数据。然后,CGI程序可以根据客户端传递参数的实际需要调用外部程序,并将要传给客户端的信息以HTML文本的形式写在.out文件上。最后,WEB服务器取.out文件的HTML文本,将信息传送给WEB客户端,并删除临时目录下的所有文件。到此一个完整的客户端与CGI程序进行通信的完整流程已经完成了。2.3.3 CGI与其他WEB技术的关系CGI作为WEB服务器自定义功能扩展接口技术,它需要钳合多种服务器技术,因此它与多种服务器技术都有密切的关系,下面主要对CGI与HTTP、CGI与HTML等技术的相到关系进行研究说明。1CGI与HTTP协议之间的联系 客户端程序通过浏览

44、器将客户请求经过HTTP协议传输到服务器端上,服务器接收到客户请求后,通过解析URL判断是否调用CGI外部扩展程序以及调用CGI的哪一部分功能,在调用CGI程序进行处理结束后,将处理结果通过WEB服务器再通过HTTP协议返回给客户端。CGI返回给客户端的应答是HTTP应答消息,因此服务器自定义功能扩展CGI程序的输出结果就必须是符合HTTP应答消息的语法格式,只有严格地按照HTTP应答消息的语法格式后成的处理结果才能被HTTP识别,这个规则在标准CGI开发过程中是相当重要的。 2CGI与HTML语言之间的联系WEB服务器上的自定义功能的CGI扩展程序经过处理后的输出结果有二种形式。第一种形式是

45、直接生成MIME(Multipurpose Internet Mail Extensions,多用途互联网络电子邮件格式的扩展)类型的文档。最常见的就是直接生成用于在客户端直接显示的HTML文档内容,MIME表示“text/html”;第二种形式不直接生成文档内容,而是生成指向某文档一个链接,通过链接到该文档提供生成结果。以上这两种方式的结果都是基于HTML语言的,因此要求WEB服务器的CGI自定义功能扩展程序的输出结果的数据的组织形式须符合HTML语法格式。 2.4 七种常见WEB服务器简介要设计出良好的服务器状态保持程序,就需要充分了解主流的WEB服务器是如何保持服务器状态的,如今,WEB

46、服务器技术平台种类繁多,采用各种软硬件组合的WEB服务器系统更是数不胜数,各自在其应用领域都有一定的技术优势,并且各自运行在不同的平台上。只有充分了解主流WEB服务器技术的优势,借鉴其良好的设计理念,我们才能设计出符合自身要求的合理的服务器状态保持机制的服务器功能扩展程序,因此下面就来介绍一下这几种常用的WEB服务器的相关架构及特点:2.4.1 Microsoft IIS 微软公司是一家超大型的软件应用软件提供商,它的Web服务器产品为互联网信息服务(Internet Information Services,IIS)。当前最新的版本为IIS 7.0。用户借助于互联网信息服务可以在公共以太网或

47、网特网上发布信息。微软公司的互联网信息服务是目前互联网上最流行的Web服务器产品之一,像MSDN网站、Twriter等很多著名的网站都是建立在互联网信息服务的平台上。在Windows操作系统中互联网信息服务为我们提供了一个图形界面的管理工具来管理系统中已经安装的信息服务,这个工具被称为 Internet服务管理器,在Window XP操作系统中它位于“开始”-“控制面板”-“管理工具”-“Internet服务管理器”,可用于配置和控制Internet服务。通过这个工具为用户进行信息服务的管理提供了方便,降低了发布WEB信息服务的技术门槛,为网络技术开发贡献了力量。互联网信息服务是一种Web服务

48、组件。其中包括用于网页浏览的Web服务器、专门用于文件传输的FTP服务器、专门用于新闻服务的NNTP服务器,以及用于邮件发送服务的SMTP服务器等方面。互联网信息服务的这些组件使得发布信息成了一件很容易的事,从而使网络开发人员只需将工作重心放在开发上,而不需要在发布上花费大量心思。互联网信息服务(IIS)还提供对ISAPI(Intranet Server API)的支持,由此来支持服务器自定义功能扩展。ISAPI作为扩展Web服务器功能的编程接口;同时,互联网信息服务(IIS)还对数据连接器的支持,可以实现对数据库的查询和更新。IIS架构见图2-1所示。图2-1 Microsoft IIS架构2.4.2 I

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号