版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式web服务器预研报告现在在嵌入式设备中所使用的web服务器主要有:boa、thttpd、mini_httpd、shttpd、lighttpd、goaheand、appweb和apache等。服务器是否开源系统平台网上流行程度A〉B>C>D内存占用Flash占用大小功能安全性支持哪种web语言Boa开源HYPERLINK"https://sourceforge.net/softwaremap/trove_list.php?form_cat=200"allPOSIX(Linux/BSD/UNIX-likeOSes)A1700kB虚拟内存60kB左右较强大可以CGIThttpd开源FreeBSD,SunOS,Solaris,BSD,Linux,OSFA1800kB虚拟内存60kB左右较强大可以CGIMini_httpd开源同上B比boa、thttpd小要小于thttpd弱可以CGIShttpd开源Windows,QNX,RTEMS,UNIX(*BSD,Solaris,Linux)C不清楚40k较强大可以CGILighttpd开源Unix、linux、Solaris、FreeBSDC不清楚不清楚强大较强CGIfastCGI、PHPGoahead开源WinCE,WindRiverVxWorks,Linux,Lynx,QNX,Windows95/98/NTC60K60K强大可以CGI、javastript、ASPAppWeb1.开源2.商用Linux,Windows,MacOSX,SolarisC110KB不清楚强大,被称为mini_apache较强CGI、ESP、Javastript、PHPApache开源很多种系统D11,000kB虚拟内存277kB(apache1。3。26)超强吧?较强CGI、javastript、ASP、PHPBoa1。介绍Boa诞生于1991年,作者PaulPhilips。是开源的,应用很广泛,特别适合于嵌入式设备,网上流行程度很广。它的官方网站说boa是最受人喜爱的嵌入式web服务器。功能较为强大,支持认证,cgi等。Boa是一个单任务的HTTPSERVER,它不像传统的web服务器那样为每个访问连接开启一个进程,也不会为多个连接开启多个自身的拷贝。Boa对所有的活动的http连接在内部进行处理,而且只为每个CGI连接(独立的进程)开启新的进程。因此,boa在同等硬件条件下显示出更快的速度。测试表明boa在Pentium300MHZ下能够每秒钟处理几千次点击,在20MHz386/SX下能够每秒钟处理几十次点击访问。Boa和thttpd等,与apache等高性能的web服务器主要区别是,它们一般是单进程的服务器,只有在完成一个用户请求后才能响应另一个用户的请求,无法并发响应,但这在嵌入式设备的应用场合里已经足够了。Boa设计主要出于速度和安全,是指不被恶意用户暗中破坏,而不是指它有很好的访问控制和通信加密。可以添加SSL来保证数据传输中的保密和安全。2。操作系统HYPERLINK”https://sourceforge.net/softwaremap/trove_list.php?form_cat=200"AllPOSIX(Linux/BSD/UNIX—likeOSes)3。版本从0。90到现在的最新发布版本0.94。最新发布版本0.94:boa-0。94.13.tar大小为120k,解压后为436k,编译之后的可执行代码在60k左右。最近开发版本:boa—0.94.14rc214.可执行程序的大小、内存需求情况Boa有最少的资源需求。非常少的内存需求,能耗很小。特别适合于嵌入式市场。含有gcc2.95。3和GNUlibc2。2。5的boa的二进制文件大小为61K(495Kstaticallylinked)。使用库uClibc,boa变得更小(92Kstaticallylinked)。有人曾做过测试:所用环境AMDDuron700,384MBRAM,RealTek8139,SiS900chipset—basedNICs,LinkSys10/100hub,Linux2。4,结果是:Boa的虚拟内存(VmSize)大小是1696kB,85%是库文件。虚拟内存数据(VmDatasize)大小是108kB。Boa每次连个并发连接消耗掉20kB的内存。参考比较表:ServerStrippedBinarySizeVmSizeExternalLibrariesBoa0.94.1361kB1700kB0Apache1。3。26277kB11,000kB9thttpd2.20c64kB1800kB05.功能、特点支持HTTP/1。0(实验性的、有条件的支持HTTP/1。1)支持CGI/1.1,编程语言除了C语言外,还支持Python,Perl,PHP,但对PHP没有直接支持,没有mod_perl,mod_snake/mod_python等。Boa支持HTTP认证,但不支持多用户认证。它可以配置成SSL/HTTPS和IPv6。支持虚拟主机功能。Boa服务器与其它服务器的不同:为了追求速度和简单性,boa服务器在一些方面不同于一些流行的web服务器.CGI程序的REMOTE_HOST环境变量没有设置TheREMOTE_HOSTenvironmentvariableisnotsetforCGIprograms,forreasonsalreadydescribed.ThisiseasilyworkedaroundbecausetheIPaddressisprovidedintheREMOTE_ADDRvariable,so(iftheCGIprogramactuallycares)gethostbyaddroravariantcanbeused.Boa不具有ssi(serversideincludes)。Wedon'tlikethem,andtheyaretooslowtoparse。Wewillconsidermoreefficientalternatives。Boa不具有访问控制.Boawillfollowsymboliclinks,andserveanyfilethatitcanread.TheexpectationisthatyouwillconfigureBoatorunasuser”nobody",andonlyfilesconfiguredworldreadablewillcomeout。没有chroot选项。Thereisnooptiontorunchrooted.Ifanybodywantsthis,andiswillingtotryoutexperimentalcode,contactthemaintainers.官方网站:HYPERLINK”http://www.boa.org"www.boa.orgThttpd1。介绍Thttpd是ACME公司设计的一款比较精巧的开源Web服务器.它的初衷是提供一款简单、小巧、易移植、快速和安全的HTTP服务器,而事实上,Thttpd也正是这样一款服务器。它在Unix系统上运行的二进制代码程序,仅仅400k左右,在同类Web服务器中应该是相当精巧的。在可移植性方面,它能够在几乎所有的Unix系统上和已知的操作系统上编译和运行。Thttpd在默认的状况下,仅运行于普通用户模式下,从而能够有效地杜绝非授权的系统资源和数据的访问,同时通过扩展它也可以支持HTTPS、SSL和TLS安全协议。Thttpd尤为称道的是已经全面支持IPv6协议,并且具有独特的Throttling功能,可以根据需要限制某些URL和URL组的服务输出量。此外,Thttpd全面支持HTTP1。1协议(RFC2616)、CGI1。1、HTTP基本验证(RFC2617)、虚拟主机及支持大部分的SSI(ServerSideInclude)功能,并能够采用PHP脚本语言进行服务器端CGI的编程。thttpd是一个非常小巧的轻量级webserver,它非常简单,对于并发请求不使用fork()来派生子进程处理,而是采用多路复用(Multiplex)技术来实现。因此效能很好.对于小型webserver而言,速度快似乎是一个代名词,通过官方站提供的Benchmark,可以这样认为:thttpd至少和主流的webserver一样快,在高负载下更快,因为其资源占用小的缘故。Thttpd还有一个较为引人注目的特点:基于URL的文件流量限制,这对于下载的流量控制而言是非常方便的.象Apache就必须使用插件实现,效率较thttpd低。Thttp是开源的。是用C语言编写的。使用的很多.2。操作系统
Thttpd支持多种平台,如FreeBSD,SunOS,Solaris,BSD,Linux,OSF等.3.版本最新版本:thttpd—2.25b.tar130kB,解压后497kB4。可执行程序的大小、内存需求情况编译后的可执行的二进制文件为60kB左右,与boa差不多。版本已从1.90a发展到2.25b,使用内存很少,没查到具体的数据。5。特点、功能thttpd中是一个简单,小型,轻便,快速和安全的http服务器。特点:简单:它能够支持HTTP/1.1协议标准,或者超过了最低水平ﻫ小巧:它具有非常少的运行时间,因为它不fork子进程来接受新请求,并且非常谨慎的分配内存便携:它能够在大部分的类Unix系统上运行,包括FreeBSD,SunOS4,Solaris2,BSD/OS,Linux,OSF等等ﻫ快速:它的速度要超过主流的Web服务器(Apache,NCSA,Netscape),在高负载情况下,它要快的多.ﻫ安全:它努力的保护主机不受到攻击,不中断服务器thttpd,适合静态资源类的服务,比如图片、资源文件、静态HTML等等的应用,性能应该比较好,同时也适合简单的CGI应用的场合.功能:支持CGI1.1。支持基本的认证功能。支持Chroot功能支持Throttling。支持IPv6。支持多虚拟主机功能.支持自定义错误页。支持标准日志记录.Thttpd处理了大量的信号,这些信号是通过标准的Unixkill(1)command发出的。通过扩展它也可以支持HTTPS、SSL和TLS安全协议.
使用建议:对于那些并发访问量中等,而又需要较强响应能力、并期望能够控制用户访问流量,而且有较高安全性需求的用户而言,thttpdWeb服务器显然是一个比较好的选择。thttpd目前的最新版本是2.2.5版。下图为HYPERLINK”http://www.acme.com/software/thttpd"www.acme.com/software/thttpd网站对几种webserver比较图。HYPERLINK"http://www.acme.com/software/thttpd/benchmarks.html"http://www.acme.com/software/thttpd/benchmarks。html各种服务器的比较:Software–哪种web服务器NameVersionReleased–什么时候发布的Activedevel—是否当前还在开发中。Features–一些关键服务器的特点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是多进程方式,thttpd、boa是单进程方式,所使用的内存要远小于apache,且速度快于apache。Auto-conf(自动配置)-whetherthere'sascripttoautomaticallyconfigurethebuildprocessforyourOS.Basicauth(基本认证)—whethertheserversupportsBasicAuthentication,forpassword-protectedwebpages。Chroot-whethertheserverletsyouusethechroot()systemcalltoenhancesecurity。Throttling-theabilitytosetbandwidthlimitsoncertainpages,sotheydon'tusemorethantheirfairshareoftheserver’sresources。Size–各种服务器的大小Tarbytes-theuncompressedsourcetarchivesize.Sourcefiles-howmanysourceandheaderfiles.Sourcelines—howmanylinesinthesourceandheaderfiles.Exe-theexecutablesize。Forthecompgramthisissizeofthemainexecutablefile,stripped.FortheJavaserversit'sthetotalsizeofthe。classfilesor.zipfiles.ForRoxenit'sthesizeofthePikeinterpreter。基础测试系统.Thebenchmarktestsystemisa297MHzUltraSparcwith256MBRAM/512MBswaprunningSolaris2。6,otherwisetotallyquiescent.RLIMIT_NOFILEis256soft/1024hard,andv.v_maxupis3941.RPS–每秒响应请求次数.maximumrequestspersecond.Thisisdeterminedbyrunningthetestloadatvariousparallel-requestratesandfindingthemaximumresponserate.Seethegraphbelowforthefulldata。Smallfiles-thesmall-filetestloadconsistsof1000files,each1KBlong,requestedrandomly.CGI—theCGItestloadconsistsofaHYPERLINK”http://www.acme.com/software/thttpd/hello_cgi。c”trivial”helloworld"Cprogram..Maxusers–最大处理的用户数。Thisisdeterminedbyrunningthetestloadatvariousparallel-requestratesandseeingwhenitstartsscrewingup.Typicalscrewupsarerunningoutofmemorycesses,sothatrequestsstarttimingoutorgettingrefused.Largefiles—thelarge-filetestloadconsistsof100files,each1MBlong,requestedrandomly。Also,eachconnectionisthrottledtosimulatea33。6Kbpsmodem。Notethat100033.6Kbpsconnectionsis3/4ofaT3.上面的比较中,thttpd和boa都没有使用最新版本,boa的最新版本已经支持基本认证、自动配置等功能.Thttpd和boa的基本功能差不多,可以互相替换.现在选用web服务器时,同时有boa和thttpd的情况下,选择使用boa的情况居多。我在一篇论文中提到一点,说:thttpd在运行过程中所需要的资源要远大于boa,但没有验证过。官方地址: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_httpd是一个小型的HTTP服务器.开源,它的性能不强,但是它非常适合于中小访问量的站点。Mini_httpd和thttpd都是ACMELabs开发的软件,功能没有thttpd强。操作系统与thttpd相同.3。版本发布的版本从1。00到1.19。最新发布的版本是version1.19.tar41kB,解压后为140kB。4。功能、特点它实现了HTTP服务器的所有的基本功能,包括:支持CGI功能支持基本的验证功能支持安全..上级目录功能支持通用的MIME类型支持目录列表功能支持使用index.html,index.htm,index.cgi作为首页支持多个根目录的虚拟主机支持标准日志记录支持自定义错误页Trailing-slashredirection它可以配置成SSL/HTTPS和IPv6.5。可执行文件大小、内存使用情况编译后可能要小于boa、thttpd,内存使用可能小于boa、thttpd。Mini_httpd的功能,thttpd功能几乎都覆盖了。mini_httpd也是相对比较适合学习、实验使用,大体实现了一个WebServer的功能,支持静态页和CGI,能够用来放置一些个人简单的东西,不适宜投入生产使用。官方地址:HYPERLINK”http://www。acme。com/software/thttpd/"http://www.acme.com/software/thttpd/
下载地址:HYPERLINK”http://www.acme.com/software/mini_httpd/mini_httpd-1.19。tar.gz"http://www.acme.com/software/mini_httpd/mini_httpd-1。19.tar.gzShttpd1。介绍Shttpd,开源.它是另一个轻量级的webserver,具有比thttpd更丰富的功能特性,支持CGI,SSL,cookie,MD5认证,还能嵌入(embedded)到现有的软件里.最有意思的是不需要配置文件!由于shttpd可以轻松嵌入其他程序里,因此shttpd是较为理想的webserver开发原形,开发人员可以基于shttpd开发出自己的webserver,官方网站上称shttpd如果使用uclibc/dielibc(libc的简化子集)则开销将非常非常低。2.操作系统Windows,QNX,RTEMS,UNIX(*BSD,Solaris,Linux).3.版本它的最新版本是:shttpd-1.38.tar,75kB,解压后为278kB。发布的版本从2004年的1。3到现在的2007年的1。384。功能、特点小巧、快速、不膨胀、无需安装、简单的40KB的exe文件,随意运行支持GET,POST,HEAD,PUT,DELETE等方法支持CGI,SSL,SSI,MD5验证,resumeddownload,aliases,inetd模式运行标准日志格式非常简单整洁的嵌入式API对库dietlibc支持友好,对uClibc(*)不友好.容易定制运行在任意平台:Windows,QNX,RTEMS,UNIX(*BSD,Solaris,Linux)不具有的功能:virtualhosts,userhomedirectorires,ACL(accesscontrollists),trafficshaping,keep—aliveconnections,FCGI(FastCGI)support.5.可执行文件大小、内存使用情况编译后的可执行的二进制文件为40kB左右。网上查询结果是有关内容很少.使用范围不广。有网友对它的评论是:shttpd功能算是比较全的,但在处理二进制数据时不够稳定,时有异常.有待观察。官方网站:HYPERLINK"http://shttpd。sourceforge.net/”http://shttpd.sourceforg/ﻫ下载地址:http://sourceforge.net/project/showfiles。php?group_id=126090&package_id=137886Lighttpd1.介绍Lighttpd是一个德国人领导的开源软件,历时只有三年.其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的webserver环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的webserver中较为优秀的一个。支持FastCGI,CGI,Auth,输出压缩(outputcompress),URL重写,Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的用户是非常重要的,因为迁移到lighttpd就必须面对这些问题。实用起来lighttpd确实非常不错,apache主要的问题是密集并发下,不断的fork()和切换,以及较高(相对于lighttpd而言)的内存占用,使系统的资源几尽枯竭。而lighttpd采用了Multiplex技术,代码经过优化,体积非常小,资源占用很低,而且反应速度相当快。利用apache的rewrite技术,将繁重的cgi/fastcgi任务交给lighttpd来完成,充分利用两者的优点,现在那台服务器的负载下降了一个数量级,而且反应速度也提高了一个甚至是2个数量级!lighttpd适合静态资源类的服务,比如图片、资源文件、静态HTML等等的应用,性能应该比较好,同时也适合简单的CGI应用的场合,lighttpd可以很方便的通过fastcgi支持php。2.操作系统Unix、linux、Solaris、FreeBSD3。版本最新版本lighttpd-1。4.17.tar,783kB,解压后为3.48MB4.功能、特点下面是lighttpd官方网站给出的lighttpd特点,virtualhostsvirtualdirectorylistingsURL-Rewriting,HTTP—RedirectsautomaticexpirationoffilesLargeFileSupport(64bitfileoffsets)Ranges(start-end,start—,-end,multipleranges)on-the—flyoutput—compressionwithtransparentcachingdeflate,gzip,bzip2authenticationbasic,digestbackends:plainfiles,htpasswd,htdigest,ldapfastandsecureapplicationcontrolleddownloadsServerSideIncludesUserTrackingFastCGI,CGI,SSIPHP-Support:samespeedasorfasterthanapache+mod_php4includesautilitytospawnFastCGIprocesses(neccesaryforPHP4.3。x)viaFastCGIandCGIinterfacesupportCodeCacheslikeTurckmm,APCoreaccelaratorload—balancedFastCGI(onewebserverdistibutesrequesttomultiplePHP-serversviaFastCGI)Securityfeatures:chroot(),setUID,setGIDprotectingdocrootstrictHTTP-headerparsing5。可执行文件大小、内存使用情况没有查到具体数据。Lighttpd缺点就是bug比较多,软件并不稳定,而且文档太简略,有些功能需要你自己猜测才懂得怎么配置。尤其是使用内存,很难说清楚具体使用量,一般在10-20M(繁忙站点),但有时候会突发到100多M,并稳定下来。不过相对apache的使用量,这个已经不算多。lighttpd虽然是web服务器中的轻量级.但对于嵌入式web服务器来说还是较大的一个web服务器,功能较强。有人评论lighttpd:lighttpd、apache属重量级服务器,成熟稳定,体积较大,在复杂的嵌入式应用上可选用。Lighttpd使用的不广泛,在google中搜索:嵌入式lighttpd,结果几乎没有相关的内容。Lighttpd使用内存比其它小型嵌入式web服务器内存资源要多。毕竟它不是专为嵌入式设备开发的。
官方网站:HYPERLINK"http://www.lighttpd.net”www.lighttpd.netGoahead1。介绍GoAheadWebserver是为嵌入式实时操作系统(RTOS)量身定制的Web服务器。它的目标也许不在于目前的WEB服务器市场,而是面向当嵌入式系统深入我们的工作与生活的明天,那时,它也许会成为使用最广泛的WEB服务器.GoAheadWebserver构建在设备管理框架(DeviceManagementFramework)之上,用户可以像标准的WebServices一样来部署自己的应用,不需要额外的编程。GoAheadWebserver支持SOAP客户端(SimpleObjectAccessProtocol,简单对象访问协议),XML-RPC客户端,各种Web浏览器和单独的Flash客户端。GoAheadWebserver支持一种类ASP的服务器端脚本语言,其语法形式和微软的ASP语法基本相同(ActiveServerPage)。GoAheadWebserver是跨平台的服务器软件,可以稳定地运行在Windows,Linux和MacOSX操作系统之上。GoAheadWebserver是开放源代码的,这意味着你可以随意修改Web服务器的功能。这款WEB服务器非常小巧,它的WINCE版本编译后的大小还不到60k,它的输出通常也是面向一些小屏幕设备。在性能方面,使用一颗24MH
z的68040处理器,它的响应速度为20次/秒,使用266MHz的Pentium处理器可以达到50次/秒的响应速度.2。操作系统WindowsCE,WindRiverVxWorks,Linux,Lynx,QNX,与Windows95/98/NT3版本Goahead从2003年开始发布,最新的版本:webs218。tar,827kB,解压后为2。28MB
4.功能、特点很小的内存消耗支持认证功能DigestAccessAuthentication(DAA)支持安全的通信,例如SSL(安全的套接字层)支持动态Web页面,如ASP页面可以使用传统的C语言编程定制Web页面里的HTML标签支持CGI(公共网关编程接口)嵌入式的JavaScript脚本翻译器独特的URL分析器它基本上属于一个HTTP1。0标准的WEB服务器,对一些HTTP1.1的特性如(持久连接)也提供了支持。每秒65次connections5.可执行文件大小、内存使用情况内存需求60K,它的WINCE版本编译后的大小还不到60k。自2004年2.18版之后,GoAhead官方不再对它免费许可的升级和支持,如果是学习和研究之用,移植很方便,不必关心太多;如果商用,那些已知的bug就必须手工去改,包括对cgi的支持,对操作系统差异而引用的bug,参考下这个http://www.eybuild。com/develop/demoshow。htm,这个就是用的GoAhead.GoAhead官方网站:HYPERLINK"http://webserver.goahead.com/”http://webserver。goahead.com/AppWeb1.介绍appWeb有两种许可,一种是GPL,免费的,另外一种是商业许可,有30天的试用期。免费的版本在HYPERLINK"http://www。appwebserver.org/"\t"_blank"http://www.appwe/下载,appWeb的商业版本由Mbedthis公司发布和维护,网址是HYPERLINK"http://www.mbedthis.com/”\t”_blank"http://www.mbedthis.com/。appweb是下一代嵌入式web服务器,它天生是为嵌入式开发的,它的最初设计理念就是安全。Appweb是一个快速、低内存使用量、标准库、方便的服务器。与其它嵌入式web服务器相比,appweb最大特点就是功能多和高度的安全保障。Appweb简单、方便、开源。2。操作系统Linux,Windows,MacOSX,Solaris3.版本Appweb最新版本是appweb—src—2.2.2,大小1.195MB,解压后6.22MB4。功能、特点AppWeb提供的一些关键好处:低开发成本。支持cgi/1。1、javastript、esp、php(4and5),加快开发进度。最小的资源需求。一秒能响应3500个请求,非常迅速,并且紧凑(110KB)。灵活的开发环境.Appweb高度模块化,可以根据需要取舍。可靠性具有的功能:支持嵌入式JavaScript,esp,egi,cgi和php。.容易使用。大量的例子文档可用.安全。支持SSL、认证。SecureSocketLayer(SSL)includingbothclientandservercertificates。DigestandBasicAuthentication.Sandboxdirectivestolimitdenialofserviceattacks.模块化.Selectonlythefeaturesyouneedviadynamicallyloadablemodules.Alsosupportsgranularsourcecodecompilationdirectives.性能突出。.Fastestperformanceinitsclass。Over3500requestspersecondonaPCclassdevice.Memoryfootprintfrom110K.CodeandwebpagesarefullyROMable.符合标准.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/features.html"\l”javascript#javascript"EmbeddedJavaScriptHYPERLINK"http://www.appwebserver.org/products/appWeb/features。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/daemonOtherFeaturesHTTPserverandclientaccessprogramNamedandIPbasedvirtualhostsListenonmultipleportsCompilewebpagesandfilesintoCcodeforexecutionfromROMStandardsHTTP/1.1CGI/1.1ApacheconfigurationfilecompatibilityPerformanceMultithreadedwithhighperformancethreadpool
Requestthroughput(>3,500requestspersecond)Scalesonmulti-cpusystemsSmallmemoryfootprintevenunderheavyload(from400K)DeveloperFeaturesHTTPserverandclientlibraries
SharedandstaticlibrariessuppliedCandC++APIsOperatesingle-threadedormultithreaded(Compileorrun-timeselectable)Easy,intuitiveprogrammingmodelIntegratewithcommoneventmechanism:WindowsMessages,Unixselect,dedicatedthreadCodingminimizedasmostfeaturescanbespecifiedviatheconfigurationfileCookbookofsamples(cutandpastetogetgoing)SMPsafeExtensivedebugtraceloggingO'BriendescribesAppWebasa"mini—Apache”inpartbecauseitfeaturescompatibilitywithApacheconfigurationsyntax."OneofourcustomerswasabletosolveaproblemusingApachedocumentationfromtheInternet,"O’Briennotes.AppWebisnotbasedontheapachecodebase,however。"It’sacleanimplementation,"saysO'Brien.”It'sreallyhardtoshrinksomethingdown."
ﻫﻫAppWebarchitecture5.可执行文件大小、内存使用情况内存使用110KB,Smallmemoryfootprintevenunderheavyload(from400K)。官方网站HYPERLINK"http://www。appwebserver.org/"\t"_blank”http://www。appwebserver.org/商业网站HYPERLINK"http://www.mbedthis。com/"\t"_blank"http://www.mbedthis。com/Apache最新的apache版本是httpd-2.2.4。tar,6。07MB,解压后为27.2MB,在嵌入式web服务器中很少使用,在网上搜索看到有人在vxwork上用过apache,在其它方面没有,我认为,goahead、appweb具有丰富的功能,没有使用apache的必要。另一个原因是因为apache是一个多进程web服务器,使用的内存很多。由于apache的prefork工作模式有关。每个apache进程只能同时服务于一个http连接。这种模式好处在于每个进程不互相干扰,稳定性好;缺点也建立在优点之上,就是占用资源多,即使每个进程只使用2M内存(如果使用了php,这点内存根本不够),100的并发连接就用掉200M的内存。开发语言和开发工具现在的嵌入式linux中CGI程序主要使用C语言。对于编写C语言的CGI程序,可以编写好程序之后,在linux操作系统下编译,用针对硬件平台的linux的交叉编译工具编译就可以,写的html网页界面在记事本写即可。我以前写的CGI程序就是在此环境下写的。这也是最普遍的开发方法。对于用C语言编写CGI程序还可以使用CSP/eybuild提供的平台库及其开发套件,它可以将CGI程序嵌入式到网页中,可以提高开发效率.传统用C做CGI的方法是直接使用printf()等标准I/O函数输出HTML代码,这样不但使得C程序和HTML程序交织的混乱不堪,还使得页面输出的流程控制变得非常复杂.CSP与之不同,它充分吸取了ASP/JSP/PHP等以HTML/XML为模板嵌入脚本语言优点,并充分融合C语言的语言特性。使得CSP的开发更快速、更高效,同时还大大提了最终代码的可读性和维护性。CSP设计的最原始的初衷,就是要为嵌入式开发定制的一套类似ASP/JSP/PHP的C语言开发工具.针对设备WEB开发CSP提供了丰富的平台库和开发工具,它们为设备系统的WEB交叉开发和移植提供了有力的支持。通过交叉开发,可以在其它硬功件平台完全未准完毕的情况下进行高层软件的开发.这不仅能为产品开发有效地节约软硬件资源,还为WEB程序提供简单有效地调试工具。但缺点是,CSP/eybuild不是一个开源的项目,如果你是个人使用或出于学习、研究目的你可以从eybuild的官方站点http://www.eybuild.com免费下载,或发邮件到eybuild@hotmail.com免费索取。它的站点上可以下载针对x86、arm920T的CSP/eybuild开发平台,其它平台需要向网站上定购。如果你想在你的嵌入式设备的开发板上试用或出于学习和研究目的,你也可把您目标板及编译环境的详细资料发给eybuild@hotmai,请求为你的目标板单独制作一份交叉编译开发的CSP/eybuild平台。如果你想你的商用产品或项目中使用CSP/eybuild,你必须在CSP/eybuild的商用授权后才可使用.商用授权后您将可以得到很好的技术支持和技术培训。关于商用授权的详细流程,可邮件至eybuild@hotmail.com垂询。用C语言编写CGI与其它语言编写CGI的比较:C语言简洁紧凑,使用方便、灵活,对程序的语法结构要求不是很严,这就使得编程人员在编程时具有很大的灵活性,可以设计出自己风格的程序。不像UNIXSHELL、Perl和TCL,C语言是一种编译语言,源程序代码要被系统的续译器翻译成机器能直接执行的二进制代码,因此用C语言编写的CGI程序的运行速度要比用解释性语言编写的程序快。使用编泽语言的另一个好处是即使CGI执行程序陷入黑客之手,他们也无法像分析用解释性语言编写的CGI程序那样找到程序中的漏洞。由于C语言最初是针对系统设计的,这使得C语言的字符串处理能力比较差,如果CGI程序需要对字符串进行一些复杂的操作,用C诺言实现起来将比较麻烦,代码量也较多。现在网上用C语言编写的CGI程序仅次于Perl(Perl编写程序简单方便)。CGI与JSP的比较:Servlet是Java技术对CGI编程的回答.Servlet程序在服务器端运行,动态地生成Web页面.与传统的CGI和许多其他类似CGI的技术相比,JavaServlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。详细内容见备注。JSP是强于CGI,这也是现在CGI技术的使用没有JSP使用多的原因.但现在嵌入式web服务器端程序开发,还是CGI较多。由于使用JSP技术,在嵌入式web服务器开发中很少使用,在网上没有查到关于在嵌入式web服务器上应用的有关内容。要实现阅读器的lmt,所需的CGI代码量估计不会很多,关键在于调试。
结论根据上面的分析,考虑到使用范围宽广程度,在小型服务器、不要求太强功能,推荐选用boa、thttpd,其实它们足可以满足大多数情况下的需求,也是使用最广、可参考最多的嵌入式web服务器。如果要求强大的功能,支持javastript等,推荐选用goahead、appweb。备注:一个网友的个人意见:boa的功能比较齐全,便对嵌入式应用很多功能就是冗余(如virtualhost),内存使用量较大些.ﻫthttpd功能较少,实现简单.内存使用量较少.同时比较方便扩展。
shttpd功能功能算是比较全的,但在处理二进制数据时不够稳定,时有异常.有待观察。ﻫlight—httpd,apache属重量级服务器,成熟稳定,体积较大,在复杂的嵌入式应用上可选用.
goAhead是个比较专用的webserver,大部分功能都在服务它自己提供的goform功能和
ASP/javascript功能.最后的2.1.8版仍有不少bug.(见下)ﻫmini—httpd与thttpd是同一家,功能几乎完全一样。ﻫ
boa缺陷:
(1)未提供CGI解析头处理。ﻫ
可按这个地址方便修改。HYPERLINK”http://bbs.chinaunix。net/viewthread.php?tid=824840"\t”_blank"http://bbs。chinaunix.net/viewthread.php?tid=824840
(2)对POST数据使用临时文件缓冲,对无法创临时文件的小系统系统,需要手工改下这部代码。ﻫ
很多人报告在移植时不能POST数据,都是这个原因.
(3)。。.
thttpd缺陷:ﻫ
(1)
CGI1.1标准支持不完整(不般影响不大),未提供对协议要求的其它HTTP头处理,
如:If—Modified-Since,Accept-Language等应用程序就收不到.
(2)直接使用socket到CGI应用的重定,会导致提供大量POST数据时(如上传文件),ﻫ
CGI应用不读完全部POST数据就无法向浏览器应答bugﻫ
(3).。.
ﻫgoAhead缺陷:ﻫ
(1)专用,如喜欢它提供的goform和asp令论。ﻫ
(2)CGI对二进制输出有很多bug.ﻫ
(3)为实现单一任务处理,在很平台采用延时轮询接收队列,处理效率不高。ﻫ
(4)其它bug有不一罗列了,移植时要一个个订下。ﻫ个人观点,仅供参考.ﻫGoodLuck!CGI,mod_perl,PHP,JSP性能比较这是网上一篇关于CGI,mod_perl,PHP,JSP的性能比较的文章,从中可以看出它们的性能。测试结果很大程度上依赖于机器的硬件/软件配置,并随配置变化而产生差异,因此:
本测试结果
*仅供参考*
ﻫ测试用硬件:
ﻫCPU:
Intel
PII
300(66x4.5)
ﻫRAM:
192M
HD:
IBM
20G(2M
cache)
ﻫ测试用软件:
ﻫOS:
Slackware
7(自行编译的2.2.14核心)
ﻫWeb:
Apache
1.3.12(标准模块按缺省配置,所有模块静态编译)
ﻫPHP
4.0
RC1(加入了MySQL支持)
ﻫmod_perl
1。23(缺省配置,未加EVERYTHING=1)
ﻫApacheJServ
1.1(缺省配置)
ﻫJDK:
JDK
1。2.2
ﻫJSDK:
JSDK
2
ﻫJSP:
GNUJSP
1。0。0
ﻫJSP:
GNUJSP
1.0。0
ﻫﻫ本测试是用Apache自带的Apache
Bench(ab)进行的,命令为:
ﻫ/www/bin/ab
-c
20
-n
1000
CGI/脚本URL
此命令表示使用
20
个并发连接,进行
1000
次请求.所有测试均在本机进行,各种测试均反复进行5次,去掉最大最小值后取平均值。
我分别测试了C写的CGI、Perl写的CGI、用mod_perl执行的Perl
CGI、PHP和JSP。
各种CGI/脚本均输出内容相似的简单页面,内容如下:
ﻫhtml
ﻫbody
h1The
xxxx
Hello
Program/h1
p
ﻫHello
xxxx
World!
/body
/html
测试结果(只取了最具代表性的
Requests
per
second
即每秒处理请求数这一项)
ﻫﻫCGI/脚本类型
每秒处理请求数
ﻫC
CGI
128
ﻫPerl
CGI
69
ﻫmod_perl
223
PHP
237
ﻫJSP
21
ﻫﻫ测试结论:除了JSP之外,其它几种CGI/脚本的表现大致是正常的。Perl程序解释执行,作为
CGI运行时又需要另外fork进程,所以最慢;mod_perl和PHP都直接在httpd内部运行脚本,省掉了fork的消耗,所以快了很多;C程序虽然本应最快,但作为CGI
运行时也是因为fork而使性能大打折扣.至于JSP...我想这个结果并不具有代表性。毕竟测试用机只有192M内存,用top看看,一个JAVA就占了11M.况且测试用机本身是一台Web
server,测试时还有好几十个httpd在跑不过不管怎么说,在配置较低的服务器上,跑PHP、mod_perl在性能上要好过JSP是肯定的。
ﻫ附测试用程序:
ﻫﻫ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
World!
”
ﻫ”/body
"
ﻫ”/html
",
s);
ﻫreturn
0;
ﻫ}
ﻫ用
gcc
—o
hello
hello.c
编译,把
hello
放到
cgi-bin目录下。
ﻫ
Perl程序
hello.pl
ﻫ#!/usr/bin/perl
ﻫ#!/usr/bin/perl
ﻫ$s
=
"Perl
CGI";
ﻫprint
"Content—Type:
text/html
";
print
<〈DONE
ﻫhtml
ﻫbody
h1The
Perl
CGI
Hello
Program/h1
p
ﻫHello
$s
World!
ﻫ/body
ﻫ/html
DONE
把hello.pl放到cgi-bin目录下,兼作Perl
CGI和mod_perl
脚本测试用.
ﻫ
PHP文件
hello.php
ﻫhtml
ﻫbody
ﻫh1The
PHP
Hello
Program/h1
ﻫ〈?
$s
=
"PHP";
?>;
ﻫp
Hello
〈?
echo
$s
?〉;
World!
ﻫ/body
ﻫ/body
ﻫ/html
ﻫﻫJSP文件
hello。jsp
html
ﻫbody
ﻫh1The
JSP
Hello
Program/h1
ﻫp
<%
String
s
=
”JSP”;
%>;
ﻫp
ﻫHello
〈%=
s
%>;
World!
ﻫ/body
ﻫ/htmlJavaServlet和JSP的技术概述以及比较JavaServlet及其特点Servlet是Java技术对CGI编程的回答。Servlet程序在服务器端运行,动态地生成Web页面。与传统的CGI和许多其他类似CGI的技术相比,JavaServlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资(更重要的是,Servlet程序员收入要比Perl程序员高:-):高效:在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间.而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程)。在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于Servlet,处理请求的是N个线程,只需要一份Servlet类代码。在性能优化方面,Servlet也比CGI有着更多的选择,比如缓冲以前的计算结果,保持数据库连接的活动,等等。方便:Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。功能强大:在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。可移植性好:Servlet用Java编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智慧财税解决方案
- 垃圾处理厂建设施工管理承包合同
- 公共营养师基础知识-营养学基础考试真题及答案解析(二)
- 零星建筑装修改造服务合同
- 选择坚持作文
- 购物中心标识系统安装合同
- 投标代理协议
- 户外活动搭建棚施工合同
- 环保工程公司租赁合同
- 培训会议公务车租赁协议
- 施工图预算的编制工作规范
- 日立电梯MCA调试培训课件
- 电动客车驱动桥总成设计
- 四川省阿坝藏族羌族自治州《综合知识》事业单位国考真题
- 2023年人民法院电子音像出版社招聘笔试题库及答案解析
- 大学生心理健康优秀说课-比赛课件
- 收款账户变更的声明
- 九年级道德与法治中考复习资料
- 《化学发展简史》学习心得
- 班组建设与班组长管理技巧课件
- 签派员执照考试题库汇总-8签派和实践应用
评论
0/150
提交评论