大湖之子 发表于 2017-2-13 08:35:42

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程序就可以执行了。
页: [1]
查看完整版本: Web开发学习笔记之一:如何配置IIS使其能运行ISAPI动态链接库程序?