CGI与ISAPI的异同
ISAPI 服务器扩展为使用 Internet 服务器的通用网关接口 (CGI) 应用程序提供了另一种选择。
1、系统性能开销
与 CGI 应用程序不同,ISAPI 在 HTTP 服务器所在的同一地址空间运行,并且可以访问可由 HTTP 服务器使用的所有资源。
ISA 的系统开销比 CGI 应用程序低,因为它们不要求创建其他进程,也不执行需要越过进程边界的通信,而这种通信非常耗时。如果内存被其他进程所需要,扩展和筛选器 DLL 都可能被卸载。
2、调用方法区
Internet客户端通过HTTP服务器调用ISAPI的方法与调用CGI应用程序的方法一样。
例如,客户端可以这样调用一个 CGI 应用程序:
http://sample、example.exe?Param1&Param2
可以这样调用一个执行相同功能的 ISAPI:
http://sample/example.dll?Param1&Param2
3、执行过程
ISAPI 允许在一个DLL中有多个命令,这些命令作为DLL中CHttpServer 对象的成员函数来实现。
CGI要求每个任务有一个单独的名称和一个到单独的可执行文件的URL映射。
每个新的CGI请求启动一个新进程,而每个不同的请求包含在各自的可执行文件中,这些文件根据每个请求加载和卸载,因此系统开销高于ISA。
筛选器提供预处理和后处理在客户端和服务器之间发送的所有数据的能力。ISAPI 筛选器没有等效的 CGI 筛选器。