嵌入式web服務(wù)器預(yù)研報(bào)告說(shuō)明書(shū)_第1頁(yè)
嵌入式web服務(wù)器預(yù)研報(bào)告說(shuō)明書(shū)_第2頁(yè)
嵌入式web服務(wù)器預(yù)研報(bào)告說(shuō)明書(shū)_第3頁(yè)
嵌入式web服務(wù)器預(yù)研報(bào)告說(shuō)明書(shū)_第4頁(yè)
嵌入式web服務(wù)器預(yù)研報(bào)告說(shuō)明書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

嵌入式web服務(wù)器預(yù)研報(bào)告現(xiàn)在在嵌入式設(shè)備中所使用的web服務(wù)器主要有:boa、thttpd、mini_httpd、shttpd、lighttpd、goaheand、appweb和apache等。服務(wù)器是否開(kāi)源系統(tǒng)平臺(tái)網(wǎng)上流行程度A〉B>C>D內(nèi)存占用Flash占用大小功能安全性支持哪種web語(yǔ)言Boa開(kāi)源HYPERLINK"https://sourceforge.net/softwaremap/trove_list.php?form_cat(yī)=200"allPOSIX(Linux/BSD/UNIX-likeOSes)A1700kB虛擬內(nèi)存60kB左右較強(qiáng)大可以CGIThttpd開(kāi)源Free(cuò)BSD,SunOS,Solaris,BSD,Linux,OSFA1800kB虛擬內(nèi)存60kB左右較強(qiáng)大可以CGIMini_(kāi)httpd開(kāi)源同上B比boa、thttpd小要小于thttpd弱可以CGIShttpd開(kāi)源Windows,QNX,RTEMS,UNIX(*BSD,Solaris,Linux)C不清楚40k較強(qiáng)大可以CGILighttpd開(kāi)源Unix、linux、Solaris、FreeBSDC不清楚不清楚強(qiáng)大較強(qiáng)CGIfastCGI、PHPGoahead開(kāi)源WinCE,WindRiverVxWo(hù)rks,Linux,Lynx,QNX,Windows95/98/NTC60K60K強(qiáng)大可以CGI、javastript、ASPAppWeb1.開(kāi)源2.商用Linux,Windows,MacOSX(jué),SolarisC110KB不清楚強(qiáng)大,被稱(chēng)為mini_apache較強(qiáng)CGI、ESP、Javastript、PHPApache開(kāi)源很多種系統(tǒng)D11,000kB虛擬內(nèi)存277kB(apache1。3。26)超強(qiáng)吧?較強(qiáng)CGI、javastript、ASP、PHPBoa1。介紹Boa誕生于1991年,作者PaulPhilips。是開(kāi)源的,應(yīng)用很廣泛,特別適合于嵌入式設(shè)備,網(wǎng)上流行程度很廣。它的官方網(wǎng)站說(shuō)boa是最受人喜愛(ài)的嵌入式web服務(wù)器。功能較為強(qiáng)大,支持認(rèn)證,cgi等。Boa是一個(gè)單任務(wù)的HTTPSERVER,它不像傳統(tǒng)的web服務(wù)器那樣為每個(gè)訪問(wèn)連接開(kāi)啟一個(gè)進(jìn)程,也不會(huì)為多個(gè)連接開(kāi)啟多個(gè)自身的拷貝。Boa對(duì)所有的活動(dòng)的http連接在內(nèi)部進(jìn)行處理,而且只為每個(gè)CGI連接(獨(dú)立的進(jìn)程)開(kāi)啟新的進(jìn)程。因此,boa在同等硬件條件下顯示出更快的速度。測(cè)試表明boa在Pentium300MHZ下能夠每秒鐘處理幾千次點(diǎn)擊,在20MHz386/SX下能夠每秒鐘處理幾十次點(diǎn)擊訪問(wèn)。Boa和thttpd等,與apache等高性能的web服務(wù)器主要區(qū)別是,它們一般是單進(jìn)程的服務(wù)器,只有在完成一個(gè)用戶(hù)請(qǐng)求后才能響應(yīng)另一個(gè)用戶(hù)的請(qǐng)求,無(wú)法并發(fā)響應(yīng),但這在嵌入式設(shè)備的應(yīng)用場(chǎng)合里已經(jīng)足夠了。Boa設(shè)計(jì)主要出于速度和安全,是指不被惡意用戶(hù)暗中破壞,而不是指它有很好的訪問(wèn)控制和通信加密??梢蕴砑覵SL來(lái)保證數(shù)據(jù)傳輸中的保密和安全。2。操作系統(tǒng)HYPERLINK”https://sourceforge.net/softwaremap/trove_list.php?form_cat=200"AllPOSIX(Linux/BSD/UNIX—likeOSes)3。版本從0。90到現(xiàn)在的最新發(fā)布版本0.94。最新發(fā)布版本0.94:boa-0。94.13.tar大小為120k,解壓后為436k,編譯之后的可執(zhí)行代碼在60k左右。最近開(kāi)發(fā)版本:boa—0.94.14rc214.可執(zhí)行程序的大小、內(nèi)存需求情況Boa有最少的資源需求。非常少的內(nèi)存需求,能耗很小。特別適合于嵌入式市場(chǎng)。含有g(shù)cc2.95。3和GNUlibc2。2。5的boa的二進(jìn)制文件大小為61K(495Kstaticallylinked)。使用庫(kù)uClibc,boa變得更?。ǎ梗睰staticallylinked)。有人曾做過(guò)測(cè)試:所用環(huán)境AMDDuron700,384MBRAM,RealTek8139,SiS900chipset—basedNICs,LinkSys10/100hub,Linux2。4,結(jié)果是:Boa的虛擬內(nèi)存(VmSize)大小是1696kB,85%是庫(kù)文件。虛擬內(nèi)存數(shù)據(jù)(VmDatasize)大小是108kB。Boa每次連個(gè)并發(fā)連接消耗掉20kB的內(nèi)存。參考比較表:ServerStrippedBinarySizeVmSizeExternalLibrariesBoa0.94.1361kB1700kB0Apache1。3。26277kB11,000kB9thttpd2.20c64kB1800kB05.功能、特點(diǎn)支持HTTP/1。0(實(shí)驗(yàn)性的、有條件的支持HTTP/1。1)支持CGI/1.1,編程語(yǔ)言除了C語(yǔ)言外,還支持Python,Perl,PHP,但對(duì)PHP沒(méi)有直接支持,沒(méi)有mod_perl,mod_snake/mod_python等。Boa支持HTTP認(rèn)證,但不支持多用戶(hù)認(rèn)證。它可以配置成SSL/HTTPS和IPv6。支持虛擬主機(jī)功能。Boa服務(wù)器與其它服務(wù)器的不同:為了追求速度和簡(jiǎn)單性,boa服務(wù)器在一些方面不同于一些流行的web服務(wù)器.CGI程序的REMOTE_HOST環(huán)境變量沒(méi)有設(shè)置TheREMOTE_HOSTenvironmentvariableisnotsetforCGIprograms,forreasonsalreadydescribed.ThisiseasilyworkedaroundbecausetheIPaddressisprovidedintheREMOTE_(tái)ADDRvariable,so(iftheCGIprogramactuallycares)gethostbyaddroravariantcanbeused.Boa不具有ssi(serversideincludes)。Wedon'tlikethem,andtheyaretooslowtoparse。Wewillconsidermoreefficientalternatives。Boa不具有訪問(wèn)控制.Boawillfollowsymboliclinks,andserveanyfilethatitcanread.TheexpectationisthatyouwillconfigureBoat(yī)orunasuser”nobody",andonlyfilesconfiguredworldreadablewillcomeout。沒(méi)有chroot選項(xiàng)。Thereisnooptiontorunchrooted.Ifanybodywantsthis,andiswillingtotryoutexperimentalcode,contactthemaintainers.官方網(wǎng)站:HYPERLINK”http://www.boa.org"www.boa.orgThttpd1。介紹Thttpd是ACME公司設(shè)計(jì)的一款比較精巧的開(kāi)源Web服務(wù)器.它的初衷是提供一款簡(jiǎn)單、小巧、易移植、快速和安全的HTTP服務(wù)器,而事實(shí)上,Thttpd也正是這樣一款服務(wù)器。它在Unix系統(tǒng)上運(yùn)行的二進(jìn)制代碼程序,僅僅400k左右,在同類(lèi)Web服務(wù)器中應(yīng)該是相當(dāng)精巧的。在可移植性方面,它能夠在幾乎所有的Unix系統(tǒng)上和已知的操作系統(tǒng)上編譯和運(yùn)行。Thttpd在默認(rèn)的狀況下,僅運(yùn)行于普通用戶(hù)模式下,從而能夠有效地杜絕非授權(quán)的系統(tǒng)資源和數(shù)據(jù)的訪問(wèn),同時(shí)通過(guò)擴(kuò)展它也可以支持HTTPS、SSL和TLS安全協(xié)議。Thttpd尤為稱(chēng)道的是已經(jīng)全面支持IPv6協(xié)議,并且具有獨(dú)特的Throttling功能,可以根據(jù)需要限制某些URL和URL組的服務(wù)輸出量。此外,Thttpd全面支持HTTP1。1協(xié)議(RFC2616)、CGI1。1、HTTP基本驗(yàn)證(RFC2617)、虛擬主機(jī)及支持大部分的SSI(ServerSideInclude)功能,并能夠采用PHP腳本語(yǔ)言進(jìn)行服務(wù)器端CGI的編程。thttpd是一個(gè)非常小巧的輕量級(jí)webserver,它非常簡(jiǎn)單,對(duì)于并發(fā)請(qǐng)求不使用fork()來(lái)派生子進(jìn)程處理,而是采用多路復(fù)用(Multiplex)技術(shù)來(lái)實(shí)現(xiàn)。因此效能很好.對(duì)于小型webserver而言,速度快似乎是一個(gè)代名詞,通過(guò)官方站提供的Benchmark,可以這樣認(rèn)為:thttpd至少和主流的webserver一樣快,在高負(fù)載下更快,因?yàn)槠滟Y源占用小的緣故。Thttpd還有一個(gè)較為引人注目的特點(diǎn):基于URL的文件流量限制,這對(duì)于下載的流量控制而言是非常方便的.象Apache就必須使用插件實(shí)現(xiàn),效率較thttpd低。Thttp是開(kāi)源的。是用C語(yǔ)言編寫(xiě)的。使用的很多.2。操作系統(tǒng)

Thttpd支持多種平臺(tái),如FreeBSD,SunOS,Solaris,BSD,Linux,OSF等.3.版本最新版本:thttpd—2.25b.tar130kB,解壓后497kB4??蓤?zhí)行程序的大小、內(nèi)存需求情況編譯后的可執(zhí)行的二進(jìn)制文件為60kB左右,與boa差不多。版本已從1.90a發(fā)展到2.25b,使用內(nèi)存很少,沒(méi)查到具體的數(shù)據(jù)。5。特點(diǎn)、功能thttpd中是一個(gè)簡(jiǎn)單,小型,輕便,快速和安全的http服務(wù)器。特點(diǎn):簡(jiǎn)單:它能夠支持HTTP/1.1協(xié)議標(biāo)準(zhǔn),或者超過(guò)了最低水平?小巧:它具有非常少的運(yùn)行時(shí)間,因?yàn)樗唬妫飏k子進(jìn)程來(lái)接受新請(qǐng)求,并且非常謹(jǐn)慎的分配內(nèi)存便攜:它能夠在大部分的類(lèi)Unix系統(tǒng)上運(yùn)行,包括Free(cuò)BSD,SunOS4,Solaris2,BSD/OS,Linux,OSF等等?快速:它的速度要超過(guò)主流的Web服務(wù)器(Apache,NCSA,Netscape),在高負(fù)載情況下,它要快的多.?安全:它努力的保護(hù)主機(jī)不受到攻擊,不中斷服務(wù)器thttpd,適合靜態(tài)資源類(lèi)的服務(wù),比如圖片、資源文件、靜態(tài)HTML等等的應(yīng)用,性能應(yīng)該比較好,同時(shí)也適合簡(jiǎn)單的CGI應(yīng)用的場(chǎng)合.功能:支持CGI1.1。支持基本的認(rèn)證功能。支持Chroot功能支持Throttling。支持IPv6。支持多虛擬主機(jī)功能.支持自定義錯(cuò)誤頁(yè)。支持標(biāo)準(zhǔn)日志記錄.Thttpd處理了大量的信號(hào),這些信號(hào)是通過(guò)標(biāo)準(zhǔn)的Unixkill(1)command發(fā)出的。通過(guò)擴(kuò)展它也可以支持HTTPS、SSL和TLS安全協(xié)議.

使用建議:對(duì)于那些并發(fā)訪問(wèn)量中等,而又需要較強(qiáng)響應(yīng)能力、并期望能夠控制用戶(hù)訪問(wèn)流量,而且有較高安全性需求的用戶(hù)而言,thttpdWeb服務(wù)器顯然是一個(gè)比較好的選擇。thttpd目前的最新版本是2.2.5版。下圖為HYPERLINK”http://www.a(chǎn)cme.com/software/thttpd"www.acme.com/software/thttpd網(wǎng)站對(duì)幾種webserver比較圖。HYPERLINK"http://www.a(chǎn)cme.com/software/thttpd/benchmarks.html"http://www.a(chǎn)cme.com/software/thttpd/benchmarks。html各種服務(wù)器的比較:Software–哪種web服務(wù)器NameVersionReleased–什么時(shí)候發(fā)布的Activedevel—是否當(dāng)前還在開(kāi)發(fā)中。Feat(yī)ures–一些關(guān)鍵服務(wù)器的特點(diǎn)Model-whatkindofserveritis。Themodelsare:fork—startanewprocessforeachrequest。pre-fork-pre-startapoolofprocesseswhicheachhandlemultiplerequests.threads-usethreadsinsteadofprocesses.Javathreads-thisversionoftheJavaruntimeuses"Greenthreads"insteadofnativethreads,soitactsmoreliketheselect-basedservers.select-usenon-blockingI/Oandtheselect()systemcalltohandlemultiplerequestsinasingleprocess,singlethread。從上面可以看到thttpd、boa都是使用select方式,apache使用的是pre-fork方式,由于apache是多進(jìn)程方式,thttpd、boa是單進(jìn)程方式,所使用的內(nèi)存要遠(yuǎn)小于apache,且速度快于apache。Auto-conf(自動(dòng)配置)-whetherthere'sascripttoautomaticallyconfigurethebuildprocessforyourOS.Basicauth(基本認(rèn)證)—whethertheserversupportsBasicAuthentication,forpassword-protectedwebpages。Chroot-whethertheserverletsyouusethechroot()systemcalltoenhancesecurity。Throttling-theabilitytosetbandwidthlimitsoncertainpages,sotheydon'tusemorethantheirfairshareoftheserver’sresources。Size–各種服務(wù)器的大小Tarbytes-theuncompressedsourcetarchivesize.Sourcefiles-howmanysourceandheaderfiles.Sourcelines—howmanylinesinthesourceandheaderfiles.Exe-theexecutablesize。Forthecompgramthisissizeofthemainexecutablefile,stripped.FortheJavaserversit'sthetotalsizeofthe。classfilesor.zipfiles.ForRoxenit'sthesizeofthePikeinterpreter。基礎(chǔ)測(cè)試系統(tǒng).Thebenchmarktestsystemisa297MHzUltraSparcwith256MBRAM/512MBswaprunningSolaris2。6,otherwisetotallyquiescent.RLIMIT_NOFILEis256soft/1024hard,andv.v_maxupis3941.RPS–每秒響應(yīng)請(qǐng)求次數(shù).maximumrequestspersecond.Thisisdeterminedbyrunningthetestloadatvariousparallel-requestratesandfindingthemaximumresponserate.Seethegraphbelowforthefulldata。Smallfiles-thesmall-filetestloadconsistsof1000files,each1KBlong,requestedrandomly.CGI—theCGItestloadconsistsofaHYPERLINK”http://www.acme.com/software/thttpd/hello_cgi。c”trivial”helloworld"Cprogram..Maxusers–最大處理的用戶(hù)數(shù)。Thisisdeterminedbyrunningthetestloadatvariousparallel-requestratesandseeingwhenitstartsscrewingup.Typicalscrewupsarerunningoutofmemorycesses,sothatrequestsstarttimingoutorgettingrefused.Largefiles—thelarge-filetestloadconsistsof100files,each1MBlong,requestedrandomly。Also,eachconnectionisthrottledtosimulatea33。6Kbpsmodem。Notethat100033.6Kbpsconnectionsis3/4ofaT3.上面的比較中,thttpd和boa都沒(méi)有使用最新版本,boa的最新版本已經(jīng)支持基本認(rèn)證、自動(dòng)配置等功能.Thttpd和boa的基本功能差不多,可以互相替換.現(xiàn)在選用web服務(wù)器時(shí),同時(shí)有boa和thttpd的情況下,選擇使用boa的情況居多。我在一篇論文中提到一點(diǎn),說(shuō):thttpd在運(yùn)行過(guò)程中所需要的資源要遠(yuǎn)大于boa,但沒(méi)有驗(yàn)證過(guò)。官方地址:HYPERLINK”http://www.acme。com/software/thttpd/"http://www.acme.com/software/thttpd/?下載地址:HYPERLINK"http://www.acme。com/software/thttpd/thttpd-2.25b。tar.gz"http://www.acme。com/software/thttpd/thttpd-2。25b。tar。gzMini_httpd介紹Mini_h(yuǎn)ttpd是一個(gè)小型的HTTP服務(wù)器.開(kāi)源,它的性能不強(qiáng),但是它非常適合于中小訪問(wèn)量的站點(diǎn)。Mini_httpd和thttpd都是ACMELabs開(kāi)發(fā)的軟件,功能沒(méi)有thttpd強(qiáng)。操作系統(tǒng)與thttpd相同.3。版本發(fā)布的版本從1。00到1.19。最新發(fā)布的版本是version1.19.tar41kB,解壓后為140kB。4。功能、特點(diǎn)它實(shí)現(xiàn)了HTTP服務(wù)器的所有的基本功能,包括:支持CGI功能支持基本的驗(yàn)證功能支持安全..上級(jí)目錄功能支持通用的MIME類(lèi)型支持目錄列表功能支持使用index.html,index.htm,index.cgi作為首頁(yè)支持多個(gè)根目錄的虛擬主機(jī)支持標(biāo)準(zhǔn)日志記錄支持自定義錯(cuò)誤頁(yè)Trailing-slashredirection它可以配置成SSL/HTTPS和IPv6.5??蓤?zhí)行文件大小、內(nèi)存使用情況編譯后可能要小于boa、thttpd,內(nèi)存使用可能小于boa、thttpd。Mini_(kāi)httpd的功能,thttpd功能幾乎都覆蓋了。mini_(kāi)httpd也是相對(duì)比較適合學(xué)習(xí)、實(shí)驗(yàn)使用,大體實(shí)現(xiàn)了一個(gè)WebServer的功能,支持靜態(tài)頁(yè)和CGI,能夠用來(lái)放置一些個(gè)人簡(jiǎn)單的東西,不適宜投入生產(chǎn)使用。官方地址:HYPERLINK”http://www。acme。com/software/thttpd/"http://www.acme.com/software/thttpd/

下載地址:HYPERLINK”http://www.acme.com/software/mini_h(yuǎn)ttpd/mini_httpd-1.19。tar.gz"http://www.acme.com/software/mini_(kāi)httpd/mini_httpd-1。19.tar.gzShttpd1。介紹Shttpd,開(kāi)源.它是另一個(gè)輕量級(jí)的webserver,具有比thttpd更豐富的功能特性,支持CGI,SSL,cookie,MD5認(rèn)證,還能嵌入(embedded)到現(xiàn)有的軟件里.最有意思的是不需要配置文件!由于shttpd可以輕松嵌入其他程序里,因此shttpd是較為理想的webserver開(kāi)發(fā)原形,開(kāi)發(fā)人員可以基于shttpd開(kāi)發(fā)出自己的webserver,官方網(wǎng)站上稱(chēng)shttpd如果使用uclibc/dielibc(libc的簡(jiǎn)化子集)則開(kāi)銷(xiāo)將非常非常低。2.操作系統(tǒng)Windows,QNX,RTEMS,UNIX(*BSD,Solaris,Linux).3.版本它的最新版本是:shttpd-1.38.tar,75kB,解壓后為278kB。發(fā)布的版本從2004年的1。3到現(xiàn)在的2007年的1。384。功能、特點(diǎn)小巧、快速、不膨脹、無(wú)需安裝、簡(jiǎn)單的40KB的exe文件,隨意運(yùn)行支持GET,POST,HEAD,PUT,DELETE等方法支持CGI,SSL,SSI,MD5驗(yàn)證,resumeddownload,aliases,inetd模式運(yùn)行標(biāo)準(zhǔn)日志格式非常簡(jiǎn)單整潔的嵌入式API對(duì)庫(kù)dietlibc支持友好,對(duì)uClibc(*)不友好.容易定制運(yùn)行在任意平臺(tái):Windows,QNX,RTEMS,UNIX(*BSD,Solaris,Linux)不具有的功能:virtualhosts,userhomedirectorires,ACL(accesscontrollists),trafficshaping,kee(cuò)p—aliveconnections,FCGI(FastCGI)support.5.可執(zhí)行文件大小、內(nèi)存使用情況編譯后的可執(zhí)行的二進(jìn)制文件為40kB左右。網(wǎng)上查詢(xún)結(jié)果是有關(guān)內(nèi)容很少.使用范圍不廣。有網(wǎng)友對(duì)它的評(píng)論是:shttpd功能算是比較全的,但在處理二進(jìn)制數(shù)據(jù)時(shí)不夠穩(wěn)定,時(shí)有異常.有待觀察。官方網(wǎng)站:HYPERLINK"http://shttpd。sourceforge.net/”http://shttpd.sourceforg/?下載地址:http://sourceforge.net/project/showfiles。php?group_id=126090&package_id=137886Lighttpd1.介紹Lighttpd是一個(gè)德國(guó)人領(lǐng)導(dǎo)的開(kāi)源軟件,歷時(shí)只有三年.其根本的目的是提供一個(gè)專(zhuān)門(mén)針對(duì)高性能網(wǎng)站,安全、快速、兼容性好并且靈活的webserver環(huán)境。具有非常低的內(nèi)存開(kāi)銷(xiāo),cpu占用率低,效能好,以及豐富的模塊等特點(diǎn)。lighttpd是眾多OpenSource輕量級(jí)的webserver中較為優(yōu)秀的一個(gè)。支持FastCGI,CGI,Auth,輸出壓縮(outputcompress),URL重寫(xiě),Alias等重要功能,而Apache之所以流行,很大程度也是因?yàn)楣δ茇S富,在lighttpd上很多功能都有相應(yīng)的實(shí)現(xiàn)了,這點(diǎn)對(duì)于apache的用戶(hù)是非常重要的,因?yàn)檫w移到lighttpd就必須面對(duì)這些問(wèn)題。實(shí)用起來(lái)lighttpd確實(shí)非常不錯(cuò),apache主要的問(wèn)題是密集并發(fā)下,不斷的fork()和切換,以及較高(相對(duì)于lighttpd而言)的內(nèi)存占用,使系統(tǒng)的資源幾盡枯竭。而lighttpd采用了Multiplex技術(shù),代碼經(jīng)過(guò)優(yōu)化,體積非常小,資源占用很低,而且反應(yīng)速度相當(dāng)快。利用apache的rewrite技術(shù),將繁重的cgi/fastcgi任務(wù)交給lighttpd來(lái)完成,充分利用兩者的優(yōu)點(diǎn),現(xiàn)在那臺(tái)服務(wù)器的負(fù)載下降了一個(gè)數(shù)量級(jí),而且反應(yīng)速度也提高了一個(gè)甚至是2個(gè)數(shù)量級(jí)!lighttpd適合靜態(tài)資源類(lèi)的服務(wù),比如圖片、資源文件、靜態(tài)HTML等等的應(yīng)用,性能應(yīng)該比較好,同時(shí)也適合簡(jiǎn)單的CGI應(yīng)用的場(chǎng)合,lighttpd可以很方便的通過(guò)fastcgi支持php。2.操作系統(tǒng)Unix、linux、Solaris、Free(cuò)BSD3。版本最新版本lighttpd-1。4.17.tar,783kB,解壓后為3.48MB4.功能、特點(diǎn)下面是lighttpd官方網(wǎng)站給出的lighttpd特點(diǎn),virtualhostsvirtualdirectorylistingsURL-Rewriting,HTTP—Redirectsautomaticexpirat(yī)ionoffilesLargeFileSupport(64bitfileoffsets)Ranges(start-end,start—,-end,multipleranges)on-the—flyoutput—compressionwithtransparentcachingdeflat(yī)e,gzip,bzip2authenticationbasic,digestbackends:plainfiles,htpasswd,htdigest,ldapfastandsecureapplicationcontrolleddownloadsServerSideIncludesUserTrackingFastCGI,CGI,SSIPHP-Support:samespee(cuò)dasorfasterthanapache+mod_php4includesautilitytospawnFastCGIprocesses(neccesaryforPHP4.3。x)viaFastCGIandCGIinterfacesupportCodeCacheslikeTurckmm,APCoreaccelarat(yī)orload—balancedFastCGI(onewebserverdistibutesrequesttomultiplePHP-serversviaFastCGI)Securityfeatures:chroot(),setUID,setGIDprotectingdocrootstrictHTTP-headerparsing5。可執(zhí)行文件大小、內(nèi)存使用情況沒(méi)有查到具體數(shù)據(jù)。Lighttpd缺點(diǎn)就是bug比較多,軟件并不穩(wěn)定,而且文檔太簡(jiǎn)略,有些功能需要你自己猜測(cè)才懂得怎么配置。尤其是使用內(nèi)存,很難說(shuō)清楚具體使用量,一般在10-20M(繁忙站點(diǎn)),但有時(shí)候會(huì)突發(fā)到100多M,并穩(wěn)定下來(lái)。不過(guò)相對(duì)apache的使用量,這個(gè)已經(jīng)不算多。lighttpd雖然是web服務(wù)器中的輕量級(jí).但對(duì)于嵌入式web服務(wù)器來(lái)說(shuō)還是較大的一個(gè)web服務(wù)器,功能較強(qiáng)。有人評(píng)論lighttpd:lighttpd、apache屬重量級(jí)服務(wù)器,成熟穩(wěn)定,體積較大,在復(fù)雜的嵌入式應(yīng)用上可選用。Lighttpd使用的不廣泛,在google中搜索:嵌入式lighttpd,結(jié)果幾乎沒(méi)有相關(guān)的內(nèi)容。Lighttpd使用內(nèi)存比其它小型嵌入式web服務(wù)器內(nèi)存資源要多。畢竟它不是專(zhuān)為嵌入式設(shè)備開(kāi)發(fā)的。

官方網(wǎng)站:HYPERLINK"http://www.lighttpd.net”www.lighttpd.netGoahead1。介紹GoAheadWebserver是為嵌入式實(shí)時(shí)操作系統(tǒng)(RTO(shè)S)量身定制的Web服務(wù)器。它的目標(biāo)也許不在于目前的WEB服務(wù)器市場(chǎng),而是面向當(dāng)嵌入式系統(tǒng)深入我們的工作與生活的明天,那時(shí),它也許會(huì)成為使用最廣泛的WEB服務(wù)器.GoAheadWebserver構(gòu)建在設(shè)備管理框架(DeviceManagementFramework)之上,用戶(hù)可以像標(biāo)準(zhǔn)的WebServices一樣來(lái)部署自己的應(yīng)用,不需要額外的編程。GoAheadWebserver支持SOAP客戶(hù)端(SimpleObjectAccessProtocol,簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議),XML-RPC客戶(hù)端,各種Web瀏覽器和單獨(dú)的Flash客戶(hù)端。GoAheadWebserver支持一種類(lèi)ASP的服務(wù)器端腳本語(yǔ)言,其語(yǔ)法形式和微軟的ASP語(yǔ)法基本相同(ActiveServerPage)。GoAheadWebserver是跨平臺(tái)的服務(wù)器軟件,可以穩(wěn)定地運(yùn)行在Windows,Linux和MacOSX操作系統(tǒng)之上。GoAheadWebserver是開(kāi)放源代碼的,這意味著你可以隨意修改Web服務(wù)器的功能。這款WEB服務(wù)器非常小巧,它的WINCE版本編譯后的大小還不到60k,它的輸出通常也是面向一些小屏幕設(shè)備。在性能方面,使用一顆24MH

z的68040處理器,它的響應(yīng)速度為20次/秒,使用266MHz的Pentium處理器可以達(dá)到50次/秒的響應(yīng)速度.2。操作系統(tǒng)WindowsCE,WindRiverVxWorks,Linux,Lynx,QNX,與Windows95/98/NT3版本Goahead從2003年開(kāi)始發(fā)布,最新的版本:webs218。tar,827kB,解壓后為2。28MB

4.功能、特點(diǎn)很小的內(nèi)存消耗支持認(rèn)證功能DigestAccessAuthentication(DAA)支持安全的通信,例如SSL(安全的套接字層)支持動(dòng)態(tài)Web頁(yè)面,如ASP頁(yè)面可以使用傳統(tǒng)的C語(yǔ)言編程定制Web頁(yè)面里的HTML標(biāo)簽支持CGI(公共網(wǎng)關(guān)編程接口)嵌入式的JavaScript腳本翻譯器獨(dú)特的URL分析器它基本上屬于一個(gè)HTTP1。0標(biāo)準(zhǔn)的WEB服務(wù)器,對(duì)一些HTTP1.1的特性如(持久連接)也提供了支持。每秒65次connections5.可執(zhí)行文件大小、內(nèi)存使用情況內(nèi)存需求60K,它的WINCE版本編譯后的大小還不到60k。自2004年2.18版之后,GoAhead官方不再對(duì)它免費(fèi)許可的升級(jí)和支持,如果是學(xué)習(xí)和研究之用,移植很方便,不必關(guān)心太多;如果商用,那些已知的bug就必須手工去改,包括對(duì)cgi的支持,對(duì)操作系統(tǒng)差異而引用的bug,參考下這個(gè)http://www.eybuild。com/develop/demoshow。htm,這個(gè)就是用的GoAhead.GoAhead官方網(wǎng)站:HYPERLINK"http://webserver.goahead.com/”http://webserver。goahead.com/AppWeb1.介紹appWeb有兩種許可,一種是GPL,免費(fèi)的,另外一種是商業(yè)許可,有30天的試用期。免費(fèi)的版本在HYPERLINK"http://www。appwebserver.org/"\t"_blank"http://www.appwe/下載,appWeb的商業(yè)版本由Mbedthis公司發(fā)布和維護(hù),網(wǎng)址是HYPERLINK"http://www.mbedthis.com/”\t”_blank"http://www.mbedthis.com/。appweb是下一代嵌入式web服務(wù)器,它天生是為嵌入式開(kāi)發(fā)的,它的最初設(shè)計(jì)理念就是安全。Appweb是一個(gè)快速、低內(nèi)存使用量、標(biāo)準(zhǔn)庫(kù)、方便的服務(wù)器。與其它嵌入式web服務(wù)器相比,appweb最大特點(diǎn)就是功能多和高度的安全保障。Appweb簡(jiǎn)單、方便、開(kāi)源。2。操作系統(tǒng)Linux,Windows,MacOSX,Solaris3.版本Appweb最新版本是appweb—src—2.2.2,大?。?195MB,解壓后6.22MB4。功能、特點(diǎn)AppWeb提供的一些關(guān)鍵好處:低開(kāi)發(fā)成本。支持cgi/1。1、javastript、esp、php(4and5),加快開(kāi)發(fā)進(jìn)度。最小的資源需求。一秒能響應(yīng)3500個(gè)請(qǐng)求,非常迅速,并且緊湊(110KB)。靈活的開(kāi)發(fā)環(huán)境.Appweb高度模塊化,可以根據(jù)需要取舍??煽啃跃哂械墓δ?支持嵌入式JavaScript,esp,egi,cgi和php。.容易使用。大量的例子文檔可用.安全。支持SSL、認(rèn)證。SecureSocketLayer(SSL)includingbothclientandservercertificat(yī)es。DigestandBasicAuthenticat(yī)ion.Sandboxdirectivestolimitdenialofserviceattacks.模塊化.Selectonlythefeaturesyouneedviadynamicallyloadablemodules.Alsosupportsgranularsourcecodecompilationdirectives.性能突出。.Fastestperformanceinitsclass。Over3500requestspersecondonaPCclassdevice.Memoryfootprintfrom110K.CodeandwebpagesarefullyROMable.符合標(biāo)準(zhǔn).AppWebsupportsHTTP/1.0,HTTP/1.1,CGI/1.1,SSLRFC2246,HTTPRFC2617方便。AppWebhasbeenportedtoLinux,Windows,MacOSXandSolarisandsupportthefollowingCPUarchitectures:ARM7,MIPS32,i386/X86,PowerPCandSparcFeatureOverviewDynamicContentHYPERLINK”http://www.appwebserver。org/products/appWeb/features。html”\l"esp#esp”EmbeddedServerPages(ESP)HYPERLINK"http://www.appwebserver.org/products/appWeb/feat(yī)ures.html"\l”javascript#javascript"EmbeddedJavaScriptHYPERLINK"http://www.appwebserver.org/products/appWeb/feat(yī)ures。html”\l"egi#egi”EmbeddedGatewayInterface(in-memoryCGI)HYPERLINK"http://www。appwebserv/products/appWeb/features.html"\l”cgi#cgi”CGI/1。1PHP(4and5)EmbeddedServerPagesServer-sideJavaScriptingIntegratedsessionstatemanagementScriptedgenerationofHTMLExtensiblevianewfunctionsManageclientstate-dataviasessionsPost-backparadigm.SamepageforformandpostlogicSecuritySecureSocketsLayer(SSL)BasicandDigestAuthenticationDirectoryandURLlocationbasedauthorizationSandboxlimitsAccessandaccessviolationloggingModularityDynamicloadingofmodulesExtensibleURLhandlersExtensible/replaceableauthorization,SSLandscriptEaseofUseApache-styleconfigurationfileDebuggingandtraceloggingPackagedinstallationsforLinuxandWindowsRunasaservice/daemonOtherFeat(yī)uresHTTPserverandclientaccessprogramNamedandIPbasedvirtualhostsListenonmultipleportsCompilewebpagesandfilesintoCcodeforexecutionfromROMStandardsHTTP/1.1CGI/1.1Apacheconfigurat(yī)ionfilecompatibilityPerformanceMultithreadedwithhighperformancethreadpool

Requestthroughput(>3,500requestspersecond)Scalesonmulti-cpusystemsSmallmemoryfootprintevenunderheavyload(from400K)DeveloperFeaturesHTTPserverandclientlibraries

SharedandstaticlibrariessuppliedCandC++APIsOperat(yī)esingle-threadedormultithreaded(Compileorrun-timeselectable)Easy,intuitiveprogrammingmodelIntegrat(yī)ewithcommoneventmechanism:WindowsMessages,Unixselect,dedicatedthreadCodingminimizedasmostfeaturescanbespecifiedviat(yī)heconfigurationfileCookbookofsamples(cutandpastetogetgoing)SMPsafeExtensivedebugtraceloggingO'BriendescribesAppWebasa"mini—Apache”inpartbecauseitfeaturescompatibilitywithApacheconfigurationsyntax."OneofourcustomerswasabletosolveaproblemusingApachedocumentat(yī)ionfromtheInternet,"O’Briennotes.AppWebisnotbasedontheapachecodebase,however。"It’sacleanimplementation,"saysO'Brien.”It'sreallyhardtoshrinksomethingdown."

??AppWebarchitecture5.可執(zhí)行文件大小、內(nèi)存使用情況內(nèi)存使用110KB,Smallmemoryfootprintevenunderheavyload(from400K)。官方網(wǎng)站HYPERLINK"http://www。appwebserver.org/"\t"_blank”http://www。appwebserver.org/商業(yè)網(wǎng)站HYPERLINK"http://www.mbedthis。com/"\t"_blank"http://www.mbedthis。com/Apache最新的apache版本是httpd-2.2.4。tar,6。07MB,解壓后為27.2MB,在嵌入式web服務(wù)器中很少使用,在網(wǎng)上搜索看到有人在vxwork上用過(guò)apache,在其它方面沒(méi)有,我認(rèn)為,goahead、appweb具有豐富的功能,沒(méi)有使用apache的必要。另一個(gè)原因是因?yàn)閍pache是一個(gè)多進(jìn)程web服務(wù)器,使用的內(nèi)存很多。由于apache的prefork工作模式有關(guān)。每個(gè)apache進(jìn)程只能同時(shí)服務(wù)于一個(gè)http連接。這種模式好處在于每個(gè)進(jìn)程不互相干擾,穩(wěn)定性好;缺點(diǎn)也建立在優(yōu)點(diǎn)之上,就是占用資源多,即使每個(gè)進(jìn)程只使用2M內(nèi)存(如果使用了php,這點(diǎn)內(nèi)存根本不夠),100的并發(fā)連接就用掉200M的內(nèi)存。開(kāi)發(fā)語(yǔ)言和開(kāi)發(fā)工具現(xiàn)在的嵌入式linux中CGI程序主要使用C語(yǔ)言。對(duì)于編寫(xiě)C語(yǔ)言的CGI程序,可以編寫(xiě)好程序之后,在linux操作系統(tǒng)下編譯,用針對(duì)硬件平臺(tái)的linux的交叉編譯工具編譯就可以,寫(xiě)的html網(wǎng)頁(yè)界面在記事本寫(xiě)即可。我以前寫(xiě)的CGI程序就是在此環(huán)境下寫(xiě)的。這也是最普遍的開(kāi)發(fā)方法。對(duì)于用C語(yǔ)言編寫(xiě)CGI程序還可以使用CSP/eybuild提供的平臺(tái)庫(kù)及其開(kāi)發(fā)套件,它可以將CGI程序嵌入式到網(wǎng)頁(yè)中,可以提高開(kāi)發(fā)效率.傳統(tǒng)用C做CGI的方法是直接使用printf()等標(biāo)準(zhǔn)I/O函數(shù)輸出HTML代碼,這樣不但使得C程序和HTML程序交織的混亂不堪,還使得頁(yè)面輸出的流程控制變得非常復(fù)雜.CSP與之不同,它充分吸取了ASP/JSP/PHP等以HTML/XML為模板嵌入腳本語(yǔ)言?xún)?yōu)點(diǎn),并充分融合C語(yǔ)言的語(yǔ)言特性。使得CSP的開(kāi)發(fā)更快速、更高效,同時(shí)還大大提了最終代碼的可讀性和維護(hù)性。CSP設(shè)計(jì)的最原始的初衷,就是要為嵌入式開(kāi)發(fā)定制的一套類(lèi)似ASP/JSP/PHP的C語(yǔ)言開(kāi)發(fā)工具.針對(duì)設(shè)備WEB開(kāi)發(fā)CSP提供了豐富的平臺(tái)庫(kù)和開(kāi)發(fā)工具,它們?yōu)樵O(shè)備系統(tǒng)的WEB交叉開(kāi)發(fā)和移植提供了有力的支持。通過(guò)交叉開(kāi)發(fā),可以在其它硬功件平臺(tái)完全未準(zhǔn)完畢的情況下進(jìn)行高層軟件的開(kāi)發(fā).這不僅能為產(chǎn)品開(kāi)發(fā)有效地節(jié)約軟硬件資源,還為WEB程序提供簡(jiǎn)單有效地調(diào)試工具。但缺點(diǎn)是,CSP/eybuild不是一個(gè)開(kāi)源的項(xiàng)目,如果你是個(gè)人使用或出于學(xué)習(xí)、研究目的你可以從eybuild的官方站點(diǎn)http://www.eybuild.com免費(fèi)下載,或發(fā)郵件到eybuild@hotmail.com免費(fèi)索取。它的站點(diǎn)上可以下載針對(duì)x86、arm920T的CSP/eybuild開(kāi)發(fā)平臺(tái),其它平臺(tái)需要向網(wǎng)站上定購(gòu)。如果你想在你的嵌入式設(shè)備的開(kāi)發(fā)板上試用或出于學(xué)習(xí)和研究目的,你也可把您目標(biāo)板及編譯環(huán)境的詳細(xì)資料發(fā)給eybuild@hotmai,請(qǐng)求為你的目標(biāo)板單獨(dú)制作一份交叉編譯開(kāi)發(fā)的CSP/eybuild平臺(tái)。如果你想你的商用產(chǎn)品或項(xiàng)目中使用CSP/eybuild,你必須在CSP/eybuild的商用授權(quán)后才可使用.商用授權(quán)后您將可以得到很好的技術(shù)支持和技術(shù)培訓(xùn)。關(guān)于商用授權(quán)的詳細(xì)流程,可郵件至eybuild@hotmail.com垂詢(xún)。用C語(yǔ)言編寫(xiě)CGI與其它語(yǔ)言編寫(xiě)CGI的比較:C語(yǔ)言簡(jiǎn)潔緊湊,使用方便、靈活,對(duì)程序的語(yǔ)法結(jié)構(gòu)要求不是很?chē)?yán),這就使得編程人員在編程時(shí)具有很大的靈活性,可以設(shè)計(jì)出自己風(fēng)格的程序。不像UNIXSHELL、Perl和TCL,C語(yǔ)言是一種編譯語(yǔ)言,源程序代碼要被系統(tǒng)的續(xù)譯器翻譯成機(jī)器能直接執(zhí)行的二進(jìn)制代碼,因此用C語(yǔ)言編寫(xiě)的CGI程序的運(yùn)行速度要比用解釋性語(yǔ)言編寫(xiě)的程序快。使用編澤語(yǔ)言的另一個(gè)好處是即使CGI執(zhí)行程序陷入黑客之手,他們也無(wú)法像分析用解釋性語(yǔ)言編寫(xiě)的CGI程序那樣找到程序中的漏洞。由于C語(yǔ)言最初是針對(duì)系統(tǒng)設(shè)計(jì)的,這使得C語(yǔ)言的字符串處理能力比較差,如果CGI程序需要對(duì)字符串進(jìn)行一些復(fù)雜的操作,用C諾言實(shí)現(xiàn)起來(lái)將比較麻煩,代碼量也較多?,F(xiàn)在網(wǎng)上用C語(yǔ)言編寫(xiě)的CGI程序僅次于Perl(Perl編寫(xiě)程序簡(jiǎn)單方便)。CGI與JSP的比較:Servlet是Java技術(shù)對(duì)CGI編程的回答.Servlet程序在服務(wù)器端運(yùn)行,動(dòng)態(tài)地生成Web頁(yè)面.與傳統(tǒng)的CGI和許多其他類(lèi)似CGI的技術(shù)相比,JavaServlet具有更高的效率,更容易使用,功能更強(qiáng)大,具有更好的可移植性,更節(jié)省投資。詳細(xì)內(nèi)容見(jiàn)備注。JSP是強(qiáng)于CGI,這也是現(xiàn)在CGI技術(shù)的使用沒(méi)有JSP使用多的原因.但現(xiàn)在嵌入式web服務(wù)器端程序開(kāi)發(fā),還是CGI較多。由于使用JSP技術(shù),在嵌入式web服務(wù)器開(kāi)發(fā)中很少使用,在網(wǎng)上沒(méi)有查到關(guān)于在嵌入式web服務(wù)器上應(yīng)用的有關(guān)內(nèi)容。要實(shí)現(xiàn)閱讀器的lmt,所需的CGI代碼量估計(jì)不會(huì)很多,關(guān)鍵在于調(diào)試。

結(jié)論根據(jù)上面的分析,考慮到使用范圍寬廣程度,在小型服務(wù)器、不要求太強(qiáng)功能,推薦選用boa、thttpd,其實(shí)它們足可以滿(mǎn)足大多數(shù)情況下的需求,也是使用最廣、可參考最多的嵌入式web服務(wù)器。如果要求強(qiáng)大的功能,支持javastript等,推薦選用goahead、appweb。備注:一個(gè)網(wǎng)友的個(gè)人意見(jiàn):boa的功能比較齊全,便對(duì)嵌入式應(yīng)用很多功能就是冗余(如virtualhost),內(nèi)存使用量較大些.?thttpd功能較少,實(shí)現(xiàn)簡(jiǎn)單.內(nèi)存使用量較少.同時(shí)比較方便擴(kuò)展。

shttpd功能功能算是比較全的,但在處理二進(jìn)制數(shù)據(jù)時(shí)不夠穩(wěn)定,時(shí)有異常.有待觀察。?light—httpd,apache屬重量級(jí)服務(wù)器,成熟穩(wěn)定,體積較大,在復(fù)雜的嵌入式應(yīng)用上可選用.

goAhead是個(gè)比較專(zhuān)用的webserver,大部分功能都在服務(wù)它自己提供的goform功能和

ASP/javascript功能.最后的2.1.8版仍有不少bug.(見(jiàn)下)?mini—httpd與thttpd是同一家,功能幾乎完全一樣。?

boa缺陷:

(1)未提供CGI解析頭處理。?

可按這個(gè)地址方便修改。HYPERLINK”http://bbs.chinaunix。net/viewthread.php?tid=824840"\t”_blank"http://bbs。chinaunix.net/viewthread.php?tid=824840

(2)對(duì)POST數(shù)據(jù)使用臨時(shí)文件緩沖,對(duì)無(wú)法創(chuàng)臨時(shí)文件的小系統(tǒng)系統(tǒng),需要手工改下這部代碼。?

很多人報(bào)告在移植時(shí)不能POST數(shù)據(jù),都是這個(gè)原因.

(3)。。.

thttpd缺陷:?

(1)

CGI1.1標(biāo)準(zhǔn)支持不完整(不般影響不大),未提供對(duì)協(xié)議要求的其它HTTP頭處理,

如:If—Modified-Since,Accept-Language等應(yīng)用程序就收不到.

(2)直接使用socket到CGI應(yīng)用的重定,會(huì)導(dǎo)致提供大量POST數(shù)據(jù)時(shí)(如上傳文件),?

CGI應(yīng)用不讀完全部POST數(shù)據(jù)就無(wú)法向?yàn)g覽器應(yīng)答bug?

(3).。.

?goAhead缺陷:?

(1)專(zhuān)用,如喜歡它提供的goform和asp令論。?

(2)CGI對(duì)二進(jìn)制輸出有很多bug.?

(3)為實(shí)現(xiàn)單一任務(wù)處理,在很平臺(tái)采用延時(shí)輪詢(xún)接收隊(duì)列,處理效率不高。?

(4)其它bug有不一羅列了,移植時(shí)要一個(gè)個(gè)訂下。?個(gè)人觀點(diǎn),僅供參考.?GoodLuck!CGI,mod_perl,PHP,JSP性能比較這是網(wǎng)上一篇關(guān)于CGI,mod_perl,PHP,JSP的性能比較的文章,從中可以看出它們的性能。測(cè)試結(jié)果很大程度上依賴(lài)于機(jī)器的硬件/軟件配置,并隨配置變化而產(chǎn)生差異,因此:

本測(cè)試結(jié)果

*僅供參考*

?測(cè)試用硬件:

?CPU:

Intel

PII

300(66x4.5)

?RAM:

192M

HD:

IBM

20G(2M

cache)

?測(cè)試用軟件:

?OS:

Slackware

7(自行編譯的2.2.14核心)

?Web:

Apache

1.3.12(標(biāo)準(zhǔn)模塊按缺省配置,所有模塊靜態(tài)編譯)

?PHP

4.0

RC1(加入了MySQL支持)

?mod_perl

1。23(缺省配置,未加EVERYTHING=1)

?ApacheJServ

1.1(缺省配置)

?JDK:

JDK

1。2.2

?JSDK:

JSDK

?JSP:

GNUJSP

1。0。0

?JSP:

GNUJ(rèn)SP

1.0。0

??本測(cè)試是用Apache自帶的Apache

Bench(ab)進(jìn)行的,命令為:

?/www/bin/ab

-c

20

-n

1000

CGI/腳本URL

此命令表示使用

20

個(gè)并發(fā)連接,進(jìn)行

1000

次請(qǐng)求.所有測(cè)試均在本機(jī)進(jìn)行,各種測(cè)試均反復(fù)進(jìn)行5次,去掉最大最小值后取平均值。

我分別測(cè)試了C寫(xiě)的CGI、Perl寫(xiě)的CGI、用mod_perl執(zhí)行的Perl

CGI、PHP和JSP。

各種CGI/腳本均輸出內(nèi)容相似的簡(jiǎn)單頁(yè)面,內(nèi)容如下:

?html

?body

h1The

xxxx

Hello

Program/h1

p

?Hello

xxxx

World!

/body

/html

測(cè)試結(jié)果(只取了最具代表性的

Requests

per

second

即每秒處理請(qǐng)求數(shù)這一項(xiàng))

??CGI/腳本類(lèi)型

每秒處理請(qǐng)求數(shù)

?C

CGI

128

?Perl

CGI

69

?mod_perl

223

PHP

237

?JSP

21

??測(cè)試結(jié)論:除了JSP之外,其它幾種CGI/腳本的表現(xiàn)大致是正常的。Perl程序解釋執(zhí)行,作為

CGI運(yùn)行時(shí)又需要另外fork進(jìn)程,所以最慢;mod_perl和PHP都直接在httpd內(nèi)部運(yùn)行腳本,省掉了fork的消耗,所以快了很多;C程序雖然本應(yīng)最快,但作為CGI

運(yùn)行時(shí)也是因?yàn)閒ork而使性能大打折扣.至于JSP...我想這個(gè)結(jié)果并不具有代表性。畢竟測(cè)試用機(jī)只有192M內(nèi)存,用top看看,一個(gè)JAVA就占了11M.況且測(cè)試用機(jī)本身是一臺(tái)Web

server,測(cè)試時(shí)還有好幾十個(gè)httpd在跑不過(guò)不管怎么說(shuō),在配置較低的服務(wù)器上,跑PHP、mod_perl在性能上要好過(guò)JSP是肯定的。

?附測(cè)試用程序:

??C程序

hello。c

?#include

stdio。h

?int

main(void)

?{

char

s[]

=

"C

CGI”;

?printf

("Content—Type:

text/html

”);

??printf

("html

?"body

"

?"h1The

C

CGI

Hello

Program/h1

?”p

?"Hello

%s

Wo(hù)rld!

?”/body

"

?”/html

",

s);

?return

0;

?}

?用

gcc

—o

hello

hello.c

編譯,把

hello

放到

cgi-bin目錄下。

?

Perl程序

hello.pl

?#!/usr/bin/perl

?#?。鮯r/bin/perl

?$s

=

"Perl

CGI";

?print

"Content—Type:

text/html

";

print

<〈DONE

?html

?body

h1The

Perl

CGI

Hello

Program/h1

?Hello

$s

World!

?/body

?/html

DONE

把hello.pl放到cgi-bin目錄下,兼作Perl

CGI和mod_perl

腳本測(cè)試用.

?

PHP文件

hello.php

?html

?body

?h1The

PHP

Hello

Program/h1

?〈?

$s

=

"PHP";

?>;

?p

Hello

〈?

echo

$s

?〉;

Wo(hù)rld!

?/body

?/body

?/html

??JSP文件

hello。jsp

html

?body

?h1The

JSP

Hello

Program/h1

?p

<%

String

s

”JSP”;

%>;

?p

?Hello

〈%=

s

%>;

World!

?/body

?/htmlJavaServlet和JSP的技術(shù)概述以及比較JavaServlet及其特點(diǎn)Servlet是Java技術(shù)對(duì)CGI編程的回答。Servlet程序在服務(wù)器端運(yùn)行,動(dòng)態(tài)地生成Web頁(yè)面。與傳統(tǒng)的CGI和許多其他類(lèi)似CGI的技術(shù)相比,JavaServlet具有更高的效率,更容易使用,功能更強(qiáng)大,具有更好的可移植性,更節(jié)省投資(更重要的是,Servlet程序員收入要比Perl程序員高:-):高效:在傳統(tǒng)的CGI中,每個(gè)請(qǐng)求都要啟動(dòng)一個(gè)新的進(jìn)程,如果CGI程序本身的執(zhí)行時(shí)間較短,啟動(dòng)進(jìn)程所需要的開(kāi)銷(xiāo)很可能反而超過(guò)實(shí)際執(zhí)行時(shí)間.而在Servlet中,每個(gè)請(qǐng)求由一個(gè)輕量級(jí)的Java線程處理(而不是重量級(jí)的操作系統(tǒng)進(jìn)程)。在傳統(tǒng)CGI中,如果有N個(gè)并發(fā)的對(duì)同一CGI程序的請(qǐng)求,則該CGI程序的代碼在內(nèi)存中重復(fù)裝載了N次;而對(duì)于Servlet,處理請(qǐng)求的是N個(gè)線程,只需要一份Servlet類(lèi)代碼。在性能優(yōu)化方面,Servlet也比CGI有著更多的選擇,比如緩沖以前的計(jì)算結(jié)果,保持?jǐn)?shù)據(jù)庫(kù)連接的活動(dòng),等等。方便:Servlet提供了大量的實(shí)用工具例程,例如自動(dòng)地解析和解碼HTML表單數(shù)據(jù)、讀取和設(shè)置HTTP頭、處理Cookie、跟蹤會(huì)話狀態(tài)等。功能強(qiáng)大:在Servlet中,許多使用傳統(tǒng)CGI程序很難完成的任務(wù)都可以輕松地完成。例如,Servlet能夠直接和Web服務(wù)器交互,而普通的CGI程序不能。Servlet還能夠在各個(gè)程序之間共享數(shù)據(jù),使得數(shù)據(jù)庫(kù)連接池之類(lèi)的功能很容易實(shí)現(xiàn)??梢浦残院?Servlet用Java編

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論