Web開發學習筆記之一:如何配置IIS使其能運行ISAPI動態連結程式庫程式?

來源:互聯網
上載者:User

典型的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程式就可以執行了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.