用C++Builder开发ISAPI扩展应用程序
一、ISAPI概述 Microsoft的WEB服务器提供了不同的ISAPI,应用ISAPI能够开发出高性能的应用程序。 ISAPI具有两类组件:ISAPI扩展和ISAPI过滤器,本文着重介绍ISAPI扩展的应用和开发。 ISAPI应用程序通过DLL实现,DLL的特性使它能够作为WEB服务器自身的扩充来装载。在WEB服务器的地址空间运行, 而且只在第一次请求时装载一次,以后每一个后续请求通过创建一个线程(仅用一个简单的函数调用) 来完成,这比CGI创建一个进程要节约大量 的时间和空间等资源。 ISAPI扩展通常代替传统Web应用程序中CGI脚本的位置,由客户触发,为其特殊请求服务。 ------清单1-------------- 1.<html> 2. <img src="myGetGrp.dll"> 3.</html> 如清单1所示代码,服务器将调用myGetGrp.dll中提供的函数得到一GIF图像文件数据发 送给客户浏览器,在这里,myGetGrp.dll就是一个ISAPI扩展。 如果服务器确定将执行一个ISAPI扩展, 他首先检查此扩展是否已经装入高速缓存,若没有,则指定的DLL被装载;装入DLL后,服务器就调用DLL中的HttpExtensionProc()函 数对请求提供服务, 这里是ISAPI程序员放置具体功能操作的位置,服务器将所有必要 的信息通过一结构类型参数传递给这个函数,包括请求本身的内容和程序员将用到的回 调函数等,用回调函数,可以将数据传递给用户以及执行其他的操作。 注意:必须牢记服务器是启动多线程来处理同时接收到的多个请求的,所以必须正确处理线程间的同步,否则将会导致数据破坏甚至系统崩溃。 二、用C++ Builder开发ISAPI扩展应用程序 C++ Builder是Inprise公司继Delphi之后开发的又一个通用的客户/服务器结构的 开发工具。 它使用了C++语言,可以产生更快速和更高效的代码。目前已成为继Visual Basic、Delphi之后,在32位Windows环境下最具有吸引力的开发工具之一。 启动C++ Builder后,用File→New菜单项打开New Items对话框,在New页面下选中 Web Server Application选项,单击<OK>按纽,弹出一New Web Server Application对 话框,选中ISAPI/NSAPI Dynamic将生成一ISAPI扩展应用程序框架,其主模块缺省名为 Project.cpp,其中主要实现了DLL的三个输出函数,说明如下: 1.1 GetExtensionVersion()函数 这是一个非常简单的函数,它唯一的目的是指定ISAPI版本,并给出扩展的描述。 当DLL第一次被装载时,由服务器调用。这发生在HttpExtensionProc()函数第一次调用 前, 在此函数中, 你所需做的全部就是用常量HSE_VERSION_MAJOR和HSE_VERSION_ MINOR(在Isapi2.hpp中定义)设置扩展版本域。并且返回一true值。 GetExtensionVersion()函数实现实例见清单2。 ---------清单2-----------------
在此函数中,程序员还可以加入初始化代码,如全局变量的初始化等。 1.2 HttpExtensionProc()函数 HttpExtensionProc() 函数是扩展的功能实现部分,每次产生对扩展的请求,服务器就调用这个函数,同时传递一类型为TEXTENSION_CONTROL_BLOCK结构的参数(ECB) , 这个结构在Isapi2.hpp中定义:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |