1.3 利用ISAPI开发CGI程序
ISAPI(Internet Server API)最初是微软为IIS服务器所提供的一种CGI应用开发接口,其主要的目的也是为CGI开发提供好的开发接口,如果不负责的讲ISAPI也可以认为是类似WinCGI的一种开发模式,只不过ISAPI通过映射宏来取得用户表单传送的参数。这一点上和MFC消息映射宏很相似。
当然ISAPI的推出同时还具备了很多其他的特性:
ISAPI以DLL动态连接库的方式实现,所以加载较普通的EXE运行程序快,而且系统不会在使用完后马上清除掉DLL在内存中的空间,所以再次使用时会获得更快的速度。
ISAPI在调用者的内部以线程方式运行,所以和CGI进程相比较需要的运行空间也更小。
在同一个DLL中可以集中多个处理函数,并且通过映射宏来指明不同的函数分别对什么样的请求来进行处理。
由于与IIS的集成,所以可以利用ISAPI开发ISAPI过滤器。通过过滤器可以完成例如用户权限检测,数据加密,压缩,日志等功能,IIS服务器的功能也可以通过ISAPI过滤器来得到增强。
到目前为止,很多非M$的WEB服务器也都添加了对ISAPI的支持。
在同一个DLL中可以集中多个处理函数,所以执行ISAPI的请求和执行普通CGI的请求有一点区别,在URL中需要填写如下形式http://.../cgi-bin/test.dll?function_name&name=xxx&email=yyy,function_name表示的就是功能名称,为了能够正确处理你必须将其映射到DLL中的一个处理函数上。对与未映射的功能都将由一个默认函数处理。
VC4.2以上版本为创建一个ISAPI程序提供了向导程序,在新建工程时选择ISAPI Extension Wizard并在以后的对话框中选择创建服务器扩展和输入相关的信息就可以了。