一、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值。
相关专题
- C/C++技术专题 (1640篇文章)
- Wlan组网----家庭专题 (4217篇文章)
- C/C++进阶技术文档 (821篇文章)
- C/C++应用实例 (104篇文章)
- C/C++相关文章 (130篇文章)
- 数字小键盘指法练习 (5501次浏览)
- 用WinSock控件编写网络聊天器 (2638次浏览)
- C++Builder注册表编程实例详解 (1568次浏览)
- C++ Builder VCL库函数简介 (1348次浏览)
- 在 C++ Builder中利用串行通信控件编程 (1213次浏览)
- C++ Builder中消息处理过程及应用 (1038次浏览)
- 将指定目录的结构装入TreeView中 (990次浏览)
- 用C++ Builder3 制作记事本 (818次浏览)
- Windows多线程间同步事件的控制方法 (787次浏览)
- C++Builder开发Web应用程序 (746次浏览)



