Web开发学习笔记之一:如何配置IIS使其能运行ISAPI动态链接库程序?

典型的WebServer如IIS,Apache自身只支持静态网页,也就是纯html网页。为了能动态的给用户返回数据,需要在服务器端进行动态生成html网页的计算。WebServer本身并不支持这种计算,而是调用其他的模块来进行计算,目前有三种方式:

一下以IIS说明:

 

(1)CGI方式,IIS进程会启动另一个进程并执行客户端请求的应用程序A.exe,A.exe通过进程间通讯机制从IIS进程获取相关信息生成HTML,IIS从A.exe进程获取该HTML文件后返回给客户端浏览器。这种方式看似很直接,很模块化,而且A.exe的不稳定不会导致IIS不稳定。但是存在很多问题:首先是IIS和A.exe分属两个进程,进程间交换数据速度慢;再次,IIS每处理一次请求就需要启动一个A.exe进程,但请求很多时,大量进程占用服务器大量资源。

 

目前,这种方式的程序也很多,如PHP的脚本引擎就可以配置成这种方式,工作原理如下:当客户端提交扩展名为.php的请求时,IIS启动PHPEngine.exe(假设PHP引擎程序名)进程,然后把数据交由其处理,处理完毕后生成HTML,IIS获取此HTML文件后返回给客户端。当然,由于PHPEngine.exe要处理所有的.php脚本请求,所以该进程可以常驻内存。

 

(2)ISAPI方式,此方式下动态生成HTML页的程序不再是运行在单独进程中,而是与IIS运行在同一进程,作为单独进程执行。所有多线程相对于多进程的优势都体现出来了,速度有了很大提升,资源节约了不少,但是此线程的稳定性会影响到IIS进程。

 

PHP也可以运行在这种方式下,此时的PHP执行引擎变成了PHPEngine.dll。

 

在IIS下,要想让ISAPI程序正确执行,要做到两点,一是IIS允许ISAPI的执行,也就是全局的可执行; 二是该dll所在目录的可执行,也就是子目录可执行。

首先在IIS管理器中要右键该dll所在目录-->属性-->目录选显卡-->执行权限-->脚本和可执行,完成上述要求的第2点;

再次在IIS管理器中左键Web服务扩展,在右侧面板中选中“允许所有未知ISAPI扩展”。

 

OK,这样你的ISAPI程序就可以执行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值