一 CGI原理及其性能

1) CGI概念
CGI即通用網(wǎng)關(guān)接口(Common Gateway Interface),它是一段程序,運(yùn)行在服務(wù)器上,提供同客戶端HTML頁面的交互,通俗的講CGI就象是一座橋,把網(wǎng)頁和WEB服務(wù)器中的執(zhí)行程序連接起來,它把HTML接收的指令傳遞給服務(wù)器的執(zhí)行程序,再把服務(wù)器執(zhí)行程序的結(jié)果返還給HTML頁。

2)CGI程序語言
事實(shí)上,任何一種程序語言,只要能在服務(wù)器主機(jī)上利用CGI接口來編寫應(yīng)用程序,都可以叫作CGI程序語言。目前最為流行的CGI程序語言有四種:C,Shell,Perl和VisualBasic,其它一些語言也有許多人在用,如TCL,Fortran及AppleScript等。

3)CGI程序的執(zhí)行
CGI 程序一般是個(gè)可執(zhí)行程序。編譯好的CGI程序一般要集中放在一個(gè)目錄下。具體存放的位置隨操作系統(tǒng)的不同而不同。CGI程序的執(zhí)行一般有兩種調(diào)用方式:第一種是通過URL直接調(diào)用,如:“http://202.114.2.182/cgi-win /cgi.exe”,在瀏覽器的URL欄里直接寫入上述描述就可以調(diào)用該程序;另一種方式,也是主要的方式,是通過交互式主頁里的FORM欄調(diào)用,通常都是用戶在填完一張輸入信息Form后按確認(rèn)按鈕啟動CGI程序。

4)CGI工作的主要流程
CGI工作的主要流程是:1.一個(gè)用戶請求激活一個(gè)CGI應(yīng)用程序;2.CGI應(yīng)用程序?qū)⒔换ブ黜摾镉脩糨斎胄畔⑻崛〕鰜恚?.將用戶輸入的信息傳給服務(wù)器主機(jī)應(yīng)用程序(如數(shù)據(jù)庫查詢〕;4.將服務(wù)器處理結(jié)果通過HTML文件返回給用戶;5.CGI進(jìn)程結(jié)束。

5)CGI的性能評價(jià)
CGI 的跨平臺性能極佳,幾乎可以在任何操作系統(tǒng)上實(shí)現(xiàn),如DOS、WINDOWS、UNIX、OS/2、Macintosh等。實(shí)現(xiàn)CGI的編程語言也有很多選擇。CGI的應(yīng)用程序一般都是一個(gè)獨(dú)立的可執(zhí)行程序,和WWW服務(wù)器各自占據(jù)著不同的進(jìn)程,而且一般一個(gè)CGI程序只能處理一個(gè)用戶請求。這樣,每有一個(gè)用戶請求,都會激活一個(gè)CGI進(jìn)程,當(dāng)用戶請求數(shù)量非常多時(shí),會大量擠占系統(tǒng)的資源如內(nèi)存,CPU時(shí)間等,造成效能低下。


二 ISAPI原理及其性能

1)ISAPI概念
ISAPI即Internet Server Application Program Interface,是微軟提供的一套面向Internet服務(wù)的API接口,它能實(shí)現(xiàn)CGI能提供的全部功能,并在此基礎(chǔ)上進(jìn)行了擴(kuò)展,如提供了過濾器應(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)用程序。

2)ISAPI程序語言
由于開發(fā)ISAPI應(yīng)用要用到微軟的一套API,所以能用來開發(fā)ISAPI應(yīng)用的語言不如CGI那么多。主要有VisualC++4.1以上版本,VisualBasic5.0、BorlandC++5.0也可以。

3)ISAPI原理
ISAPI 的工作原理和CGI大體上是相同的,都是通過交互式主頁取得用戶輸入信息,然后交服務(wù)器后臺處理。但是二者在實(shí)現(xiàn)機(jī)制上大相庭徑。ISAPI與CGI最大的區(qū)別在于:不同于CGI,在ISAPI下建立的應(yīng)用程序是以動態(tài)連接庫的形式存在;而CGI的應(yīng)用程序一般都是可執(zhí)行程序。

4)ISAPI程序的執(zhí)行
ISAPI 應(yīng)用的工作流程與CGI有一些不同。ISAPI應(yīng)用的DLL不僅可以象CGI程序一樣被用戶請求激活,還可以被系統(tǒng)預(yù)先激活來監(jiān)視用戶輸入;對于被用戶激活的DLL,在處理完一個(gè)用戶請求后不會馬上消失,而是繼續(xù)駐留在內(nèi)存中等待處理別的用戶輸入,直到過了一段時(shí)間后一直沒有用戶輸入。

5)5ISAPI性能評價(jià)
一個(gè)ISAPI的DLL,可以在被用戶請求激活后長駐內(nèi)存,等待用戶的另一個(gè)請求,還可以在一個(gè)DLL里設(shè)置多個(gè)用戶請求處理函數(shù),此外,ISAPI的DLL應(yīng)用程序和WWW服務(wù)器處于同一個(gè)進(jìn)程中,效率要顯著高于CGI。不過ISAPI的平臺兼容性較差,目前只能用于微軟自己的Windows95和NT操作系統(tǒng)上,服務(wù)器平臺也僅限于 IIS(InternetInformationServer)和MSpersonalwebserver以及NTworkstation上的 peerwebserver。

6)ISAPI 篩選器是什么?
ISAPI 篩選器是在啟用 ISAPI 的 HTTP 服務(wù)器上運(yùn)行的 DLL,用以篩選與服務(wù)器之間來回傳送的數(shù)據(jù)。該篩選器注冊事件的通知,例如登錄或 URL 映射。當(dāng)發(fā)生選定事件時(shí),篩選器被調(diào)用,并且您可以監(jiān)視及更改數(shù)據(jù)(在數(shù)據(jù)從服務(wù)器傳輸?shù)娇蛻舳嘶蛳喾吹倪^程中)。可以使用 ISAPI 篩選器提供增強(qiáng)的 HTTP 請求記錄(例如,跟蹤登錄到服務(wù)器的用戶)、自定義加密、自定義壓縮或其他身份驗(yàn)證方法。

7)ISAPI 服務(wù)器擴(kuò)展和篩選器之間的區(qū)別是什么?
服務(wù)器擴(kuò)展:在 URL 中引用時(shí)運(yùn)行。被顯式調(diào)用,例如用 http://myserver/myprog.dll?。被用戶第一次調(diào)用時(shí)根據(jù)請求加載。
篩選器:為服務(wù)器處理的每個(gè) URL 調(diào)用。如果發(fā)生已注冊事件,自動為任何發(fā)送到服務(wù)器的 URL 運(yùn)行。服務(wù)因其注冊表項(xiàng)而啟動時(shí)加載。    
    
服務(wù)器擴(kuò)展和篩選器都:* 共享服務(wù)的處理空間。* 必須是線程安全的。* 一經(jīng)加載便保留在內(nèi)存中(直到服務(wù)停止或者內(nèi)存被其他進(jìn)程所需要)。


三 ISAPI與CGI有哪些相同和不同之處?

ISAPI 服務(wù)器擴(kuò)展為使用 Internet 服務(wù)器的通用網(wǎng)關(guān)接口 (CGI) 應(yīng)用程序提供了另一種選擇。與 CGI 應(yīng)用程序不同,ISAPI 在 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)用ISAPI的方法與調(diào)用CGI應(yīng)用程序的方法一樣。例如,客戶端可以這樣調(diào)用一個(gè) CGI 應(yīng)用程序:http://sample、example.exe?Param1&Param2,它可以這樣調(diào)用一個(gè)執(zhí)行相同功能的 ISAPI:http://sample/example.dll?Param1&Param2。ISAPI 允許在一個(gè)DLL中有多個(gè)命令,這些命令作為DLL中CHttpServer 對象的成員函數(shù)來實(shí)現(xiàn)。CGI要求每個(gè)任務(wù)有一個(gè)單獨(dú)的名稱和一個(gè)到單獨(dú)的可執(zhí)行文件的URL映射。每個(gè)新的CGI請求啟動一個(gè)新進(jìn)程,而每個(gè)不同的請求包含在各自的可執(zhí)行文件中,這些文件根據(jù)每個(gè)請求加載和卸載,因此系統(tǒng)開銷高于ISA。

ISAPI 篩選器沒有等效的 CGI 篩選器。篩選器提供預(yù)處理和后處理在客戶端和服務(wù)器之間發(fā)送的所有數(shù)據(jù)的能力。

 

完!

感謝,Thanks!

作者:iTech
出處:http://itech.cnblogs.com/
轉(zhuǎn)載:本文版權(quán)歸作者iTech所有,轉(zhuǎn)載請注明出處,不得用于商業(yè)用途!