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