ISAPI Internet Server Application Programming Interface 因特網(wǎng)服務(wù)器應(yīng)用編程接口
ISAPI 服務(wù)器擴(kuò)展是可以被 HTTP 服務(wù)器加載和調(diào)用的 DLL。Internet 服務(wù)器擴(kuò)展也稱為 Internet 服務(wù)器應(yīng)用程序 (ISA),用于增強(qiáng)符合 Internet 服務(wù)器 API (ISAPI) 的服務(wù)器的功能。ISA 通過瀏覽器應(yīng)用程序調(diào)用,并且將相似的功能提供給通用網(wǎng)關(guān)接口 (CGI) 應(yīng)用程序。
ISAPI 服務(wù)器擴(kuò)展的優(yōu)點(diǎn)
用戶可以填寫窗體,然后單擊提交按鈕將數(shù)據(jù)發(fā)送到 Web 服務(wù)器并調(diào)用 ISA,ISA 可以處理這些信息以提供自定義內(nèi)容或?qū)⑦@些信息存儲(chǔ)在數(shù)據(jù)庫中。Web 服務(wù)器擴(kuò)展可以使用數(shù)據(jù)庫中的信息動(dòng)態(tài)生成 Web 頁,然后將其發(fā)送到客戶計(jì)算機(jī)進(jìn)行顯示。應(yīng)用程序可以使用 HTTP 和 HTML 添加其他自定義功能并將數(shù)據(jù)提供給客戶端。
服務(wù)器擴(kuò)展和篩選器均在 Web 服務(wù)器的進(jìn)程空間中運(yùn)行,這樣就為擴(kuò)展服務(wù)器的功能提供了有效的手段。
ISAPI 與 CGI 有哪些相同和不同之處?
ISAPI 服務(wù)器擴(kuò)展為使用 Internet 服務(wù)器的通用網(wǎng)關(guān)接口 (CGI) 應(yīng)用程序提供了另一種選擇。與 CGI 應(yīng)用程序不同,ISA 在 HTTP 服務(wù)器所在的同一地址空間運(yùn)行,并且可以訪問可由 HTTP 服務(wù)器使用的所有資源。ISA 的系統(tǒng)開銷比 CGI 應(yīng)用程序低,因?yàn)樗鼈儾灰髣?chuàng)建其他進(jìn)程,也不執(zhí)行需要越過進(jìn)程邊界的通信,而這種通信非常耗時(shí)。如果內(nèi)存被其他進(jìn)程所需要,擴(kuò)展和篩選器 DLL 都可能被卸載。
Internet 客戶端通過 HTTP 服務(wù)器調(diào)用 ISA 的方法與調(diào)用 CGI 應(yīng)用程序的方法一樣。例如,客戶端可以這樣調(diào)用一個(gè) CGI 應(yīng)用程序:
http://sample/example.exe?Param1&Param2
它可以這樣調(diào)用一個(gè)執(zhí)行相同功能的 ISA:
http://sample/example.dll?Param1&Param2
ISAPI 允許在一個(gè) DLL 中有多個(gè)命令,這些命令作為 DLL 中 CHttpServer 對(duì)象的成員函數(shù)來實(shí)現(xiàn)。CGI 要求每個(gè)任務(wù)有一個(gè)單獨(dú)的名稱和一個(gè)到單獨(dú)的可執(zhí)行文件的 URL 映射。每個(gè)新的 CGI 請(qǐng)求啟動(dòng)一個(gè)新進(jìn)程,而每個(gè)不同的請(qǐng)求包含在各自的可執(zhí)行文件中,這些文件根據(jù)每個(gè)請(qǐng)求加載和卸載,因此系統(tǒng)開銷高于 ISA。
ISAPI 篩選器沒有等效的 CGI 篩選器。篩選器提供預(yù)處理和后處理在客戶端和服務(wù)器之間發(fā)送的所有數(shù)據(jù)的能力。
ISAPI 篩選器是什么?
ISAPI 篩選器是在啟用 ISAPI 的 HTTP 服務(wù)器上運(yùn)行的 DLL,用以篩選與服務(wù)器之間來回傳送的數(shù)據(jù)。該篩選器注冊(cè)事件的通知,例如登錄或 URL 映射。當(dāng)發(fā)生選定事件時(shí),篩選器被調(diào)用,并且您可以監(jiān)視及更改數(shù)據(jù)(在數(shù)據(jù)從服務(wù)器傳輸?shù)娇蛻舳嘶蛳喾吹倪^程中)?梢允褂 ISAPI 篩選器提供增強(qiáng)的 HTTP 請(qǐng)求記錄(例如,跟蹤登錄到服務(wù)器的用戶)、自定義加密、自定義壓縮或其他身份驗(yàn)證方法。
需要什么樣的 HTTP 服務(wù)器來運(yùn)行 ISAPI?
若要承載 Web 站點(diǎn),必須具有支持超文本傳輸協(xié)議 (HTTP) 的 Internet 服務(wù)器。如果選擇了符合 ISAPI 的 Web 服務(wù)器(如 IIS,Microsoft Internet 信息服務(wù)),就可以利用服務(wù)器擴(kuò)展 DLL 創(chuàng)建小型、快速的 Internet 服務(wù)器應(yīng)用程序。