山东移动通信公司 郭彬
---- 本文通过对CGI和ISAPI的对比以及对ISAPI的工作原理的分析,阐述了使用MFC ISAPI编程的一般方法。
---- 一、ISAPI简介:
---- 目前大多数网站提供信息的方式是由用户通过客户浏览器(如Netscape或Explorer等)与WWW服务器连接,然后用鼠标点按超级连接以浏览相关的主页。在此过程中,基本上是服务器向客户端单方向的信息传递,随着服务需求的不断扩大,这种单纯的单方向传递信息的静态主页已不能满足需求。不论是服务提供方还是客户,都希望在浏览服务器将信息发送到用户同时,用户端也能将信息发送到服务器端,实现服务器与客户的交互。典型的应用如:用户登记表、用户留言板以及用户通过WWW检索服务器端的数据库等等。
---- 要实现一个可与用户交互信息的服务系统,所需增加的有两项:交互式主页和用户输入信息处理程序。交互式主页即有输入信息的编辑框,选择菜单按钮之类的主页,以供用户输入信息;用户输入的信息则交由用户信息处理程序处理。实现该程序可以有多种途径,该
程序可以放在服务器端,也可以放在客户机端,前者如CGI、ISAPI,后者如JAVA Applet、javascript等等。
---- ISAPI(即Internet Server Application Program Interface),是微软提供的一套面向Internet 服务的API接口,它能实现CGI(Common Gateway Interface,公共网关接口)能提供的全部功能,并在此基础上进行了扩展,如提供了过滤器应用
程序接口。
---- 在Web服务器这个竞争激烈的领域里,微软的IIS(Internet Information Server,Internet信息服务器)是当今Windows NT操作平台上执行效率最高的Web服务器之一。IIS提供所有传统的内容传递方式,它对静态网页有着良好的支持。对于更复杂的应用程序,IIS提供了功能更强的应用框架:使用ISAPI能够创造出极高性能的应用
程序。书写良好的ISAPI扩展的性能可能超过类似的CGI一个数量级。此外,ISAPI的灵活性使一些事情变得简单。
---- ISAPI提供了扩展支持WEB服务器的简单而有效的方法。开发人员可以设计生成ISAPI 服务器扩展动态连接库(ISAPI Server Extension DLL),它可以被HTTP服务器调用。例如,客户端用户填写了一个表单,按下"提交"按钮后,输入的数据将被传送至HTTP服务器,激活相应的ISAPI扩展应用程序,该应用
程序可以处理用户的输入信息,进行相应的操作。或者,按照用户的要求访问数据库,读取用户指定的数据,动态生成HTML文件,再传回客户端。
---- CGI很早就作为交互式的Web应用程序的一个标准广泛应用在Internet之中。CGI脚本允许人们用多种编程语言如Basic、C、Perl、Shell 等等来编写简单的应用程序。这些脚本运行在Web服务器上,而在客户的Web浏览器上输出运行结果。客户的输入通过环境变量或者标准输入设备来进行传递,然后CGI程序根据需要完成特定的功能,并通过标准输出设备送回HTML格式的结果显示在客户的浏览器中。CGI的这一特性―设计简单,再加上它支持多种编程语言,使得开发CGI应用程序非常简单。尽管如此,人们在使用中还是发现了CGI应用程序的一个很大的缺点:性能不高。 虽然有不少办法来使CGI应用程序运行得更快一些(如把它们变成编译好的二进制代码,而不用Perl脚本),但执行速度仍然是一个
问题。每当通过Web访问一个CGI
程序时,CGI执行文件(或者脚本的解释器)都要为每一个请求创建一个新的进程。对于一个信息量比较大的站点来说,这无疑给服务器增加了一个沉重的负担。
---- 二、ISAPI的工作原理:
---- ISAPI的工作原理和CGI大体上是相同的,都是通过交互式主页取得用户输入信息,然后交服务器后台处理。但是二者在实现机制上大相庭径。ISAPI与CGI最大的区别在于:在ISAPI下建立的