Internet Server Application Programming Interface (ISAPI)是IIS的多层API。是可被微软IIS加载和调用的DLL。用于扩展HTTP服务器的功能。
ISAPI 也能够由Apache的mod_isapi模块实现,这样在微软的IIS运行的服务器端WEB应用程序也能在Apache上使用,其他第三方的服务器例如Zeus Web Server也提供ISAPI接口。
微软的WEB服务器是Internet Information Services,他是由许多子应用程序组成,非常的可配置化。ASP.NET就是IIS中的一个子应用程序。ISAPI是一个很低级的编程系统,所以提供了更好的性能。
ISAPI由2部分组成,ISAPI扩展和ISAPI过滤。只有两种类型的应用程序可以用ISAPI开发。过滤和扩展必须被编译成DLL,然后注册到IIS才能运行。
ISAPI应用程序可以由任何语言编写,有很多的库可以帮助简化ISAPI的开发,另外,有一种叫ATL Server的技术专门开发ISAPI程序。( ATL Server 是一个用来创建 ISAPI DLL 的 C++ 模板库。)
ISAPI扩展
ISAPI扩展是真实的运行在IIS上的应用程序,他们可以利用IIS提供的所有功能。ISAPI扩展以DLL的方式实现,他们被加载到由IIS控制的进程中,客户端可以用访问静态html的方法和访问ISAPI扩展的方法一致。某种文件扩展名或者文件夹或者站点都可以被映射,由ISAPI扩展去处理。
以下是常用的作为实现ISAPI扩展的ISAPI应用程序。Active Server Page(ASP).标准安装
ASP.NET.IIS6.0前面版本,标准安装
ColdFusion,后期版本的ColdFusion可以装在IIS上
Perl
PHP
ISAPI过滤
ISAPI过滤用来修改或者提升IIS的功能。他们总是运行在IIS上,过滤每一个请求直到他们找到需要处理的请求。ISAPI过滤可以通过编程来检查和修改发送进来的数据和发送出去的数据。内部编程和外部配置决定了过滤调用的顺序。类似于Windows中的钩子,ISAPI过滤器将在发生某些特定事件的时候被调用(例如客户请求网页),可监视、拦截或修改客户端与服务器直接的传输数据。常用作数据库防下载、加密和压缩数据、统计访问人数等。
过滤以DLL的方式实现,可以以站点级别或者全局级别被注册到IIS服务器,比如,他们可以被应用到IIS服务器上的所有站点。过滤器,当工作进程开始运行,过滤器就会被初始化,并且开始监听所有的请求。
ISAPI过滤器实现的通常的任务
包括:
改变客户端发送来的请求数据(url和标头)。
控制物理文件和URL之间的映射。
控制你们用户的用户名和密码或者基本的认证。
修改或者分析认证完成后的请求。
修改要发送给客户的Response。
运行“access denied”响应。
当请求完成后运行处理。
当客户端关闭是运行处理。
执行专用日志和流量分析。
执行客户授权。
处理压缩和解压缩。
本文转自cnn23711151CTO博客,原文链接:http://blog.51cto.com/cnn237111/591258 ,如需转载请自行联系原作者