18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 信息时代 > 公共网关接口(数据库)

公共网关接口(数据库)

时间:2022-12-25 00:30:01 | 来源:信息时代

时间:2022-12-25 00:30:01 来源:信息时代

    公共网关接口 : HTTP Web服务器和CGI应用程序交互的标准接口协议,规定了Web服务器调用外部可执行程序的一种方法,主要用来规定Web服务器和CGI应用程序间的数据传递方法。通过公共网关接口Web客户端能够获得较新的动态结果。通常情况下Web服务器检索到的HTML文档是静态的,内容不会改变。而CGI程序可以实时执行,它输出动态信息,结果能随输入而变化。例如,某个数据库接入万维网,允许任何用户查询数据库信息,Web服务器执行CGI程序并将请求发送到数据库引擎,然后将最新结果显示给客户端。
1993年,CGI首次出现在Rob McCool、John Franks、Ari Luotonen、George Phillips和Tony Sanders等人在www-talk的邮件列表上。当时Rob McCool在美国国家超级计算应用中心(NCSA)工作,他给出CGI规格草案并在NCSA的HTTP Web服务器上做了参考实现。参考实现中用环境变量存储Web服务器执行环境传入的参数,然后为CGI程序生成独立的进程。基于CGI协议,HTTP服务器可以访问某些早期的信息系统网关。CGI最初作为HTTP服务器和程序间集成网关脚本的协议。CGI当前版本是1.1。目前有国际组织在试验基于OMG IDL的面向对象版本。
1. CGI应用的基本结构
作为Web服务器执行CGI程序的接口协议,基于CGI的应用包括Web客户端、Web服务器、CGI接口和CGI应用程序(见图1)。Web客户端可以是各种浏览器。支持CGI的Web服务器目前主要指HTTP服务器。


图1 CGI应用基本架构


CGI接口以平台无关的方式完成Web服务器和应用程序间HTTP请求发送和结果消息数据的返回。CGI规范比较简单,主要规定了Web服务器和CGI程序间四种数据传递方法,包括: 环境变量、命令行、标准输入和标准输出。CGI规定一组传递消息的基本环境变量,如AUTH_TYPE、CONTENT_LENGTH、CONTENT_TYPE等。命令行参数方式在支持串数组的操作系统上有效,保存在程序的数组参数argv中。当客户端请求有附加数据时,也可以使用“标准输入”文件描述字来传递参数。最后一种是指CGI程序通过“标准输出”文件描述字向服务器发送结果数据。结果数据分无解析头输出和有解析头输出,差别由实现者定义。
CGI程序运行在Web服务器所在的主机,可以用脚本语言或可编译程序语言完成,如C/C++、FORTRAN、PERL、TCL、Unix Shell、VB、Applescript等语言。CGI程序运行需要设定服务所在位置,运行在特定目录下(如/cgi-bin),并且要注册到系统中受Web系统管理员的控制以保证系统安全。CGI程序一般用来完成网页中表单数据的处理、数据库查询和应用系统集成等工作,而且大多数CGI应用是处理HTML文档中的〈FORM〉和〈ISINDEX〉命令。
2. 工作流程
基于CGI规范,客户端提交请求并获得结果的主要处理流程为:
(1) Web服务器接受CGI形式的URL请求,解析并准备数据。
(2) Web服务器启动CGI应用程序,将客户端发送的所有数据按CGI规范输入该程序。
(3) CGI程序处理客户请求,将执行结果以MIME消息的格式返回给服务器。
(4) Web服务器收集CGI程序的输出,补充必要的各种头信息后发送回客户端。
Web服务器和CGI应用程序进行数据传送时,URL请求中问号后面的部分都是CGI程序的输入,通过约定的环境变量传递,返回结果一般是即时生成的HTML文件。例如,向www.example.edu.cn的主页上提交检查用户id的请求,URL是“http://www.example.edu.cn/idcheck?id=ab3j10&tout=10&d omain=2”。问号后面的串(“id=ab3j10&tout=10&domain=2”)作为CGI程序的输入表示“在序号为2的域中检查是否存在id为ab3j10的用户,超时限制为10秒。”而输入中的参数值可以用上述任何一种方式传递给CGI程序。
3. CGI特点
CGI具有开放性,避免了HTTP协议为支持动态页面而进行太多扩展。因为扩展HTTP协议要级联改变浏览器和Web服务器间的传输协议。通过CGI可以访问各种数据源,数据库仅是其中之一。
CGI存在的主要问题有:
(1)不支持数据和通信资源共享。程序需要访问外部资源就必须打开和关闭资源。
(2)难以建立事务性交互操作。
(3)易产生性能瓶颈。
CGI一般为每个请求生成一个进程来独立执行,因此工作负载很容易超出Web服务器的负荷。对于不同的CGI程序语言,可以考虑不同的优化策略。对于脚本语言,一种方法是将解释器嵌入到Web服务器中,消除重复加载、初始化解释器的开销。也可以使用编程加速器,Web脚本只在首次调用时编译,缓存编译码。再次调用相同脚本时,直接使用编译码。如果脚本发生修改,缓存会被清空,新的脚本替代旧的。
还有一种方法就是使用C语言或类似的可编译语言实现CGI程序,它们可以快速启动和终止,降低系统负载。同时具有执行速度快、安全性高等特点。

74
73
25
news

版权所有© 亿企邦 1997-2022 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭