开发者社区


Web服务 | ASP/ASP.Net | JSP | PHP/Perl | 网站设计
首页 - WEB技术
Web技术
全文搜索:   

超越CGI: 使用API
作者: James C. Collins
2000-05-11 13:54:32



<编者按:CGI 并不是实现网页交互式功能的唯一途径,你可以换种方法>

如果仅仅是为了描述指定的页面,HTML就足够了,但当你需要有象留言簿,计数器和在线订购这样的功能时候,HTML就帮不了你多少忙了,这些功能需要在服务器内部实现,最常见的方法是通过CGI (公共网关接口), 但大部分服务器为了可以同浏览器交互,提供了扩展HTML功能的接口。

CGI脚本是在服务器上执行的,以便响应用户的请求。CGI可让网管们添加些常见功能,如计数器和日期/时间的显示, 在线订购表单, 聊天页面和搜索引擎。

CGI的流行基于多种原因:许多事先写好的脚本可以免费得到,其中的大部分来自不同的平台,并可在常见的web服务器上运行。但是,CGI还是存在几个缺点:每当一个CGI脚本被调用时,它就会在服务器机器上创建一个新的进程,使得服务器的响应时间变长;同时,如果CGI脚本设置得不正确的话,服务器上将会出现安全漏洞,使得网站变得脆弱,易受黑客攻击;另外一个问题是保存状态较困难,即如何保存客户对不同的HTTP请求的信息。

用于扩展和补充服务器功能的另一个可行的方法就是应用编程接口(API)。API可以让开发者修改服务器的预定行为,并赋予其新功能。当服务器的预定功能被修改时,(例如,在事务处理时,服务器使用API模块里的代码,而不采用其原来的代码。当服务器的功能扩充时,比如说,添加了数据库存取功能--API就起着服务器和应用软件之间的接口的作用。

象这样,不管是修改还是扩充服务器的功能,开发者不需要改变服务器的原来的代码,也不必重新编译和链接服务器代码。相反,新代码是放在DLL(动态链接库)中,服务器在运行的时候动态链接它。(Apache Web 服务器却是个例外,你必须把添加的新代码重新编译,并同服务器代码一起重新链接。)

除了克服了CGI的某些缺点外,API还具有其它特色和优点,例如可以和服务器共享数据和通信资源,可以共享函数库,以及在鉴定和出错处理方面具有独特的功能。API另外一个优点是能够记忆状态,因为API应用程序在客户发来请求时驻留在内存,当该客户进行另外一次请求时,客户的信息已经被保存下来,可以被再次使用。

尽管如此,API方法仍存在缺点。同CGI不同的是,API的功能是同特定的服务器相关的,每种服务器的API都各自不同。有缺陷的API代码可以使得服务器瘫痪。开发代码时的复杂度也有所增加,需要管理多个进程,运行结束后,还要释放内存。

本文将主要讨论两种服务器产品的API,即Netscape的服务器和微软的Internet Information Server。我们不打算对每种服务器的API功能的规格进行详细讨论。

  下一页
  Netscape服务器的API

【下一页】
声明:
Builder.com.cn(原ZDNet China应用开发频道)原创文章版权所有,未经许可严禁转载,且不构成投资建议。
实用技术文档
J2me XML
C/C++ C#
Java Oracle
Mysql .Net
VB.NET CSS
SQL Server 数据库
SQL UNIX
Linux Jsp
PHP Perl
Javascript IIS
XHTML ColdFusion
ASP/ASP.NET Apache
AJAX
订阅技术邮件
订阅"技术圈"杂志!请在下面选择您感兴趣的专题,填写e-mail地址,然后按订阅按钮:
应用开发管理
VS.NET 周刊
Database 周刊
WEB Service周刊
JAVA 周刊
IT 认证
Windows服务器周刊
互联网开发
当Windows Server 2008专家得5000元现金大奖
CNET NETWORKS 中国: 爱卡汽车网 | CNET科技资讯网 | e询网 | CWEEK | 蜂鸟网 | GameSpot China | 个人电脑 | PChome | SPN | 网友世界 | ZDNet China | 中关村在线
CNET NETWORKS 美国: BNET | CNET.com | CNET Download.com | CNET News.com | CNET Reviews | CNET Shopper.com | GameSpot | MP3.com | mySimon | Release 1.0 | Search.com | TechRepublic | TV.com | Webshots | ZDNet
Copyright (c) 2006 CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
ZDNet 公司标识是 CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号