技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
服务器技术
操作系统
网站运营

分类目录

赞助商

最新文章

搜索

IIS里ISAPI和CGI比较:几种执行方式的不同

作者:admin    时间:2017-4-7 10:17:7    浏览:

在IIS设置里,有一项是: ISAPI 和 CGI 限制。我由此想到的是 ISAPI 和 CGI 的区别在哪?它们的执行方式又有何不同?

在比较两者之前,我们需先了解下它们的含义。对于 ISAPI,我们可以从上一篇文章中描述到的 ISAPI 概述中得以了解。CGI,是 Common Gateway Interface 的简称,是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。绝大多数的CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使网页具有交互功能。

 ISAPI和CGI比较

ISAPI和CGI比较

ISAPI 和 CGI 比较

ISAPI(Internet 服务器应用程序编程接口)模型被发展成为CGI(通用网关接口)更快地替代方案。ISAPI提供比CGI更多优越性,包括低开销、更快加载时间和更好的可伸缩性。CGI和ISAPI编程模型主要区别是实现方法不同。

传统CGI,系统对于每个请求,将创建唯一进程。当http server每次收到一个请求时,都将启动一个新进程。对于cgi请求大量资源,操作系统必须保持这些进程。因固有限制,很难开发出灵活高效的互联网应用。

使用ISAPI,不需要单独进程。使用线程隔离和同步工作项目。

ISAPI 与 CGI 几种执行方式的不同

ISAPI 扩展执行以下操作:

1)接收数据放入 EXTENSION_CONTROL_BLOCK 结构成员lpbData中,而不是通过标准输入(stdin)进程令牌读取数据

2)使用 WriteClient 函数将数据发送回客户端,而不是通过标准输出(stdout)进程令牌发送数据。

3)通过 EXTENSION_CONTROL_BLOCK 结构访问常见cgi变量。对于其它变量,扩展调用GetServerVariable函数。cgi可执行文件中通过getenv环境变量表检索。

4)使用 WriteClient 函数直接发送标题或http状态码,或者调用HSE_REQ_SEND_RESPONSE_HEADER_EX ServerSupportFunction,替代 STDOUT 发送标题

5)位置/URL/标题 重定向。本地url,扩展使用HSE_REQ_SEND_URL结构,而不是写标头至STDOUT。若url是远程或未识别的,扩展使用 ServerSupportFunction 回调函数 HSE_REQ_SEND_URL_REDIRECT_RESP。当iis传入请求为一个特定扩展时,iis加载dll到内存中,为dll其它传入请求服务。iis卸载扩展时,若存在TerminateExtension函数调用,使用TerminateExtension可以释放(锁定或初始加载期间、Keep-Alive连接)的任何资源。

ISAPI 与 CGI 有哪些相同和不同之处?

ISAPI 服务器扩展为使用 Internet 服务器的通用网关接口 (CGI) 应用程序提供了另一种选择。与 CGI 应用程序不同,ISA 在 HTTP 服务器所在的同一地址空间运行,并且可以访问可由 HTTP 服务器使用的所有资源。ISA 的系统开销比 CGI 应用程序低,因为它们不要求创建其他进程,也不执行需要越过进程边界的通信,而这种通信非常耗时。如果内存被其他进程所需要,扩展和筛选器 DLL 都可能被卸载。

Internet 客户端通过 HTTP 服务器调用 ISA 的方法与调用 CGI 应用程序的方法一样。例如,客户端可以这样调用一个 CGI 应用程序:

http://sample/example.exe?Param1

它可以这样调用一个执行相同功能的 ISA:

http://sample/example.dll?Param1

ISAPI 允许在一个 DLL 中有多个命令,这些命令作为 DLL 中 CHttpServer 对象的成员函数来实现。CGI 要求每个任务有一个单独的名称和一个到单独的可执行文件的 URL 映射。每个新的 CGI 请求启动一个新进程,而每个不同的请求包含在各自的可执行文件中,这些文件根据每个请求加载和卸载,因此系统开销高于 ISA。

ISAPI 筛选器没有等效的 CGI 筛选器。筛选器提供预处理和后处理在客户端和服务器之间发送的所有数据的能力。

标签: IIS  
  • 站长推荐
  • IT热文