MySQL嵌入式web服务

:boa、thttpd、mini_httpd、shttpd、lighttpd、goaheand、appweb和apache等。

MySQL 1

Boa

1.介绍

Boa诞生于1991年,作者Paul
Philips。是开源的,应用非常宽泛,特别契合吃嵌入式设备,网上流行水平深常见。它的官方网站说boa是最让人爱护的嵌入式web服务器。功能比较强劲,支持认证,cgi等。Boa
是一个单任务的HTTP
SERVER,它不像传统的web服务器那样为每个看连接开启一个历程,也未会见否多单连续开启多单自我之正片。Boa对拥有的活动的http连接在里头开展处理,而且就也每个CGI连接(独立的进程)开启新的经过。因此,boa在平硬件条件下显得出双重快之进度。测试表明boa在Pentium
300MHZ下能够每秒钟处理几千次等点击,在20 MHz
386/SX下会每秒钟处理几十次于点击访问。

Boa和thttpd等,与apache等高性能的web服务器主要区别是,它们一般是才进程的服务器,只有当成就一个用户请求后才会响应另一个用户的伸手,无法出现响应,但当下当嵌入式设备的使用场合里曾够用了。

Boa设计要由速度跟平安,是乘无让恶心用户暗中损坏,而休是指其发特别好之访问控制和通信加密。可以添加SSL来保证数据传输中的保密和安康。

2.操作系统

All POSIX (Linux/BSD/UNIX-like
OSes)

3.版本

自打0.90顶如今底新型公布版0.94。最新公布版0.94:boa-0.94.13.tar大小为120k,解压后呢436k,编译之后的可实施代码在60k左右。最近支出版本:boa-0.94.14rc21

4.可执行程序的大大小小、内存需求状况

Boa有极致少之资源要求。非常少之内存需求,能消耗很有点。
特别吻合吃嵌入式市场。含有gcc 2.95.3跟 GNU libc
2.2.5底boa的二进制文件大小为61K( 495K statically linked
)。使用库uClibc,boa变得重新粗(92K statically linked)。

有人已经开过测试:所用环境AMD Duron 700,384MB RAM, RealTek 8139,SiS900
chipset-based NICs ,LinkSys 10/100
hub,Linux 2.4,结果是:Boa的虚拟内存(VmSize)大小是1696kB,85%凡是仓库文件。虚拟内存数据(VmData
size)大小是108kB。Boa每次连个冒出连接消耗少20kB的内存。

参照比较表:

Server

Stripped Binary Size

VmSize

External Libraries

Boa 0.94.13

61kB

1700kB

0

Apache 1.3.26

277kB

11,000kB

9

thttpd 2.20c

64kB

1800kB

0

5.功能、特点

l 支持HTTP/1.0(实验性的、有标准化的支持HTTP/1.1)

l
支持CGI/1.1,编程语言除了C语言外,还支持Python,
Perl, PHP,但对PHP没有一直支持,没有mod_perl,
mod_snake/mod_python等。

l Boa支持HTTP认证,但切莫支持多用户征。

l 它好安排成SSL/HTTPS和 IPv6。

l 支持虚拟主机功能。

Boa服务器和其他服务器的两样:

以追求速度与简单性,boa服务器在有的地方不比为有风行的web服务器。

CGI程序的REMOTE_HOST环境变量没有装

The REMOTE_HOST environment variable is not set for CGI programs, for
reasons already described. This is easily worked around because the IP
address is provided in the REMOTE_ADDR variable, so (if the CGI program
actually cares) gethostbyaddr or a variant can be used.

Boa不具有ssi(server side includes)。

We don’t like them, and they are too slow to parse. We will consider
more efficient alternatives.

Boa不持有访问控制。

Boa will follow symbolic links, and serve any file that it can read. The
expectation is that you will configure Boa to run as user “nobody”, and
only files configured world readable will come out.

没有chroot选项。

There is no option to run chrooted. If anybody wants this, and is
willing to try out experimental code, contact the maintainers.

官方网站:www.boa.org

Thttpd

1.介绍

Thttpd是ACME公司企划之平等缓缓比较精致的开源Web服务器。它的初衷是供平等慢慢悠悠简单、小巧、易移植、快速与安康之HTTP服务器,而其实,Thttpd也多亏这样同样缓服务器。它于Unix系统上运行的亚上制代码程序,仅仅400k左右,在同类Web服务器中当是一定精致的。在可移植性方面,它能在几乎有的Unix系统及同曾经了解之操作系统及编译和运转。Thttpd在默认的状况下,仅运行为普通用户模式下,从而能行得通地杜绝非授权的系统资源和数量的访问,同时通过扩大其吧得以支撑HTTPS、SSL和TLS安全磋商。Thttpd尤为称道的是一度完善支持IPv6协议,
并且具有突出的Throttling功能,可以因需要限某些URL和URL组的劳动输出量。此外,Thttpd全面支持HTTP
1.1合计(RFC 2616)、CGI 1.1、HTTP
基本证明(RFC2617)、虚拟主机及支持大部分的SSI(Server Side
Include)功能,并能利用PHP脚本语言进行劳动器端CGI的编程。

thttpd是一个大小巧的轻量级web
server,它非常简单,对于出现请求不使fork()来派生子进程处理,而是使多路复用(Multiplex)技术来落实。因此效能非常好。对于小型web
server而言,速度快如是一个代表名词,通过官方站提供的Benchmark,可以这么看:thttpd至少和主流的web
server一样快,在高负荷下更快,因为那个资源占用小的案由。Thttpd还有一个较强烈的特征:基于URL的文本流量限制,这对下载的流量控制而言是好有利之。象Apache就必采取插件实现,效率比thttpd低。Thttp是开源之。是为此C语言编写的。使用的十分多。

2.操作系统 
Thttpd支持多阳台,如FreeBSD, SunOS, Solaris, BSD, Linux, OSF等。

3.版本

新颖版本:thttpd-2.25b.tar 130kB,解压后497kB

  1. 可执行程序的深浅、内存需求情况

编译后的可尽之二进制文件呢60kB左右,与boa差不多。版本都由1.90a发展及2.25b,

运用内存很少,没查及现实的数。

5.特点、功能

thttpd中凡是一个简易,小型,轻便,快速和安全的http服务器.

特点:

大概:它会支持HTTP/1.1合计正式,或者超过了最低水平 
精致:它有很少的运作时刻,因为它们不fork子进程来领新请求,并且十分严谨

的分配内存

尽管携带:它亦可在大部的类Unix系统上运行,包括FreeBSD, SunOS 4, Solaris 2,
BSD/OS, Linux, OSF等等 
很快:它的快慢而跨主流的Web服务器(Apache, NCSA,
Netscape),在高负荷情况下,它使及早的差不多。 
有惊无险:它努力的保护主机不遭攻击,不停顿服务器

thttpd,适合静态资源类的服务,比如图片、资源文件、静态HTML等等的行使,性能应比好,同时也入简单的CGI应用的场所。

功能:

l 支持CGI1.1。

l 支持中心的辨证功能。

l 支持Chroot功能

l 支持Throttling。

l 支持IPv6。

l 支持多虚拟主机功能。

l 支持于定义错误页。

l 支持标准日志记录。

l Thttpd处理了大量的信号,这些信号是透过专业的Unix kill(1)
command发出之。

l 通过扩展其呢可以支持HTTPS、SSL和TLS安全协议。

用建议:
对于那些并发访问量中等,而还要需要比强响应能力、并期望会控制用户访问流量,而且出于高安全性要求的用户而言,thttpd
Web服务器显然是一个比较好的选项。 thttpd目前的风行版本是2.2.5版。

下图为www.acme.com/software/thttpd网站针对几乎栽web
server比较图。

MySQL 2各种服务器的较:

· Software – 哪种web服务器

o Name

o Version

o Released – 什么时公布之

o Active devel – 是否当前还在开被。

· Features –一些最主要服务器的特色

o Model – what kind of server it is. The models are:

§ fork – start a new process for each request.

§ pre-fork – pre-start a pool of processes which each handle multiple
requests.

§ threads – use threads instead of processes.

§ Java threads – this version of
the Java runtime uses “Green threads”
instead of native threads, so it acts more like the select-based
servers.

§ select – use non-blocking I/O and the select() system call to handle
multiple requests in a single process, single thread.

自上面可以见见thttpd、boa都是行使select方式,apache使用的凡pre-fork方式,由于apache是大半进程方式,thttpd、boa是仅进程方式,所下的内存要远低于apache,且速度快给apache。

o Auto-conf (自动配置)- whether there’s a script to automatically
configure the build process for your OS.

o Basic auth (基本证明)- whether the server supports Basic
Authentication, for password-protected web pages.

o Chroot – whether the server lets you use the chroot() system call to
enhance security.

o Throttling – the ability to set bandwidth limits on certain pages, so
they don’t use more than their fair share of the server’s resources.

· Size –各种服务器的轻重

o Tar bytes – the uncompressed source tarchive size.

o Source files – how many source and header files.

o Source lines – how many lines in the source and header files.

o Exe – the executable size. For the compiled program this is size of
the main executable file, stripped. For the Java servers it’s the total
size of the .class files or .zip files. For Roxen it’s the size of the
Pike interpreter.

· 基础测试网。The benchmark test system is a 297MHz Ultra Sparc with
256MB RAM / 512MB swap running Solaris 2.6, otherwise totally quiescent.
RLIMIT_NOFILE is 256 soft / 1024 hard, and v.v_maxup is 3941.

· RPS – 每秒响应请求次数。maximum requests per second. This is
determined by running the test load at various parallel-request rates
and finding the maximum response rate. See the graph below for the full
data.

o Small files – the small-file test load consists of 1000 files, each
1KB long, requested randomly.

o CGI – the CGI test load consists of a trivial “hello world” C
program. .

· Max users – 最特别拍卖的用户数。This is determined by running the test
load at various parallel-request rates and seeing when it starts
screwing up. Typical screwups are running out of memory or processes, so
that requests start timing out or getting refused.

o Large files – the large-file test load consists of 100 files, each 1MB
long, requested randomly. Also, each connection is throttled to simulate
a 33.6Kbps modem. Note that 1000 33.6Kbps connections is 3/4 of a T3.

点的比中,thttpd和boa都没使用新型版本,boa的时髦版本已经支持中心证明、自动配置等职能。Thttpd和boa的基本功能差不多,可以并行替换。现在选用web服务器时,同时发出boa和thttpd的气象下,选择下boa的图景多多。我以相同首论文被涉及一点,说:thttpd在运行过程中所欲的资源使远超boa,但绝非征了。

合法地址:http://www.acme.com/software/thttpd/ 
下载地址:http://www.acme.com/software/thttpd/thttpd-2.25b.tar.gz

Mini_httpd

  1. 介绍

Mini_httpd是一个小型的HTTP服务器。开源,它的习性不赛,但是它非常适合于中访问量的站点。Mini_httpd和thttpd都是ACME
Labs 开发之软件,功能尚未thttpd强。

  1. 操作系统

与thttpd相同。

  1. 版本

发布之本子从1.00及1.19。最新披露的本是version 1.19.tar
41kB,解压后呢140kB。

  1. 功能、特点

它实现了HTTP服务器的享有的基本功能,包括:

· 支持CGI功能

· 支持中心的求证功能

· 支持安康 .. 上级目录功能

· 支持通用的MIME类型

· 支持目录列表功能

· 支持下 index.html, index.htm, index.cgi 作为首页

· 支持多只彻底目录的虚拟主机

· 支持标准日志记录

· 支持于定义错误页

· Trailing-slash redirection

· 它可安排成SSL/HTTPS和 IPv6.

5.可执行文件大小、内存以状况

编译后或而低于boa、thttpd,内存以或低于boa、thttpd。Mini_httpd的功用,thttpd功能几乎都掩盖了。

mini_httpd 也是对立比可学习、实验应用,大体实现了一个Web
Server的功力,支持静态页和CGI,能够用来放置有私房简单的物,不相宜投入生产应用。

法定地址:http://www.acme.com/software/thttpd/ 
下载地址:http://www.acme.com/software/mini_httpd/mini_httpd-1.19.tar.gz

Shttpd

1.介绍

Shttpd,开源。它是外一个轻量级的web
server,具有比thttpd更增长的功能特色,支持CGI, SSL, cookie, MD5认证,
还会放开(embedded)到存活的软件里。最有意思的凡勿欲配备文件!由于shttpd可以轻松嵌入其他程序里,因此shttpd是较为理想的web
server开发原形,开发人员可以根据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.38

4.功能、特点

l 小巧、快速、不涨、无需安装、简单的40KB的exe文件,随意运行

l 支持GET, POST, HEAD, PUT, DELETE 等方法

l 支持CGI, SSL, SSI, MD5验证, resumed download, aliases, inetd模式运行

l 标准日志格式

l 非常简单整洁的嵌入式API

l 对库dietlibc 支持好,对uClibc (*)不友好。

l 容易定制运行在任意平台:Windows, QNX, RTEMS, UNIX (*BSD, Solaris,
Linux)

未具的效应:

virtual hosts, user home directorires, ACL (access control lists),
traffic shaping, keep-alive connections, FCGI (Fast CGI) support.

5.可执行文件大小、内存以状况

编译后底不过尽之二进制文件呢40kB左右.

网上查询结果是有关内容好少。使用限制不广泛。有网友对她的评说是:shttpd功能算是比较全的,
但在处理二进制数据时不足够稳定, 时有异常. 有待观察。

官方网站:http://shttpd.sourceforge.net/ 
下载地址:http://sourceforge[.NET](http://lib.csdn.net/base/dotnet)/project/showfiles.php?group\_id=126090&package\_id=137886

Lighttpd

1.介绍

Lighttpd是一个德国总人口领导的开源软件,历时仅发三年。其根本之目的是提供一个特意对强性能网站,安全、快速、兼容性好而灵活的web
server环境。具有很小之内存开销,cpu占用率低,效能好,以及丰富的模块等特征。lighttpd
是众多OpenSource轻量级的web server中较为完美的一个。支持FastCGI, CGI,
Auth, 输出压缩(output compress), 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、FreeBSD

3.版本

新式版本lighttpd-1.4.17.tar,783kB,解压后为3.48MB

4.功能、特点

脚是lighttpd官方网站给起的lighttpd特点,

l virtual hosts

l virtual directory listings

l URL-Rewriting, HTTP-Redirects

l automatic expiration of files

l Large File Support (64bit fileoffsets)

l Ranges (start-end, start-, -end, multiple ranges)

l on-the-fly output-compression with transparent caching

l deflate, gzip, bzip2

l authentication

l basic, digest

l backends: plain files, htpasswd, htdigest, ldap

l fast and secure application controlled downloads

l Server Side Includes

l User Tracking

l FastCGI, CGI, SSI

l PHP-Support:

l same speed as or faster than apache + mod_php4

l includes a utility to spawn FastCGI processes (neccesary for PHP
4.3.x)

l via FastCGI and CGI interface

l support Code Caches like Turckmm, APC or eaccelarator

l load-balanced FastCGI

l (one webserver distibutes request to multiple PHP-servers via FastCGI)

l Security features:

l chroot(), set UID, set GID

l protecting docroot

l strict HTTP-header parsing

5.可执行文件大小、内存以状况

未曾查到具体数额。

Lighttpd缺点就是是bug比较多,软件并无稳定,而且文档太简单,有些效果要你自己猜才理解怎么布局。尤其是使用内存,很难说清楚具体使用量,一般以10-20M(繁忙站点),但奇迹会爆发到100多M,并稳定下来。不过相对apache的使用量,这个曾休算是多。

lighttpd虽然是web服务器被之轻量级。但对于嵌入式web服务器来说还是比生之一个web服务器,功能比较强。

有人评价lighttpd:lighttpd、apache 属重量级服务器, 成熟稳定, 体积于生,
在千头万绪的嵌入式应用上可选用.

    Lighttpd使用的未普遍,在google中找找:嵌入式
lighttpd,结果差一点从来不有关的始末。Lighttpd使用外存比其它小型嵌入式web服务器内存资源而多。毕竟她不是把为嵌入式设备开支之。 
官方网站:www.lighttpd.net

Goahead

1.介绍

GoAhead
Webserver是为嵌入式实时操作系统(RTOS)量身定制的Web服务器。它的对象也许不在于目前底WEB服务器市场,而是面向当嵌入式系统深入我们的做事及在的明天,那时,它或许会变成以最普遍的WEB服务器。GoAhead
Webserver构建在装备管理框架(Device Management
Framework)之上,用户可以像专业的Web
Services一样来布局好的下,不欲额外的编程。GoAhead
Webserver支持SOAP客户端(Simple Object Access
Protocol,简单对象看协议),XML-RPC客户端,各种Web浏览器与独立的Flash客户端。GoAhead
Webserver支持一种植类ASP的劳动器端脚本语言,其语法形式与微软的ASP语法基本相同(Active
Server Page)。GoAhead
Webserver是跨平台的服务器软件,可以安静地运转于Windows,Linux和Mac OS
X操作系统之上。GoAhead
Webserver是开源代码的,这意味你可轻易修改Web服务器的效应。这款WEB服务器非常精致,它的WIN
CE版本编译后的深浅还未交60k,它的出口通常也是面向有粗屏幕设备。在性能方面,使用同一发24MH
z的68040计算机,它的响应速度为20次/秒,使用266MHz之Pentium处理器可以达成50次/秒的响应速度。

2.操作系统

Windows CE, Wind River VxWorks, Linux, Lynx, QNX,与Windows 95/98/NT

3版本

Goahead从2003年开始发表,最新的本:webs218.tar
,827kB,解压后也2.28MB 
4.功能、特点

· 很粗的内存消耗

· 支持认证功能Digest Access Authentication (DAA)

· 支持安康的通信,例如SSL(安全之套接字层)

· 支持动态Web页面,如ASP页面

· 可以行使传统的C语言编程定制Web页面里的HTML标签

· 支持CGI(公共网关编程接口)

· 嵌入式的JavaScript本子翻译器

· 独特的URL分析器

·
它基本上属于一个HTTP1.0规范的WEB服务器,对片HTTP1.1的表征如(持久连接)也供了支持。每秒65软connections

5.可执行文件大小、内存以情况

内存需求60K,它的WIN CE版本编译后底大小还非至60k。

自 2004 年 2.18 版之后, GoAhead
官方不再对其免费许可的晋升跟支撑,如果是读书及研讨的故, 移植很有利,
不必关心最多; 如果商用, 那些曾经解的 bug 就非得手工去改,包括对 cgi
的支撑, 对操作系统差异而引用的 bug,参考下者
http://www.eybuild.com/develop/demoshow.htm ,这个就算是用的 GoAhead。

GoAhead官方网站:http://webserver.goahead.com/

AppWeb

1.介绍

appWeb有零星种植特许,一种植是GPL,免费的,另外一种是商贸特许,有30天之试用期。免费的版本在http://www.appwebserver.org/ 下载,appWeb的商版本由Mbedthis公司公布暨护卫,网址是 http://www.mbedthis.com/。appweb
是生一样代表嵌入式web服务器,它自然是也嵌入式开发的,它的前期计划意见就是是平安。Appweb是一个飞快、低外存使用量、标准库、方便的服务器。与外嵌入式web服务器相比,appweb最深特征就是是成效多同惊人的平安保。Appweb简单、方便、开源。

2.操作系统

Linux, Windows, Mac OSX , Solaris

3.版本

    Appweb最新版本是appweb-src-2.2.2 ,大小1.195MB,解压后6.22MB

4.功能、特点

AppWeb提供的有关键好处:

l 低开发成本。支持cgi/1.1、javastript、esp、php(4and5),加快开发进度。

l 最小的资源要求。一秒能响应3500个请求,非常迅猛,并且紧凑(110KB)。

l 灵活的付出环境。Appweb高度模块化,可以根据需要选择。

l 可靠性

享有的功能:

· 支持嵌入式JavaScript,esp,egi,cgi和php。.

· 容易使用。 大量之例子文档可用。

· 安全。支持SSL、认证。 Secure Socket Layer (SSL) including both client
and server certificates. Digest and Basic Authentication. Sandbox
directives to limit denial of service attacks.

· 模块化. Select only the features you need via dynamically loadable
modules. Also supports granular source code compilation directives.

· 性能突出。. Fastest performance in its class. Over 3500 requests per
second on a PC class device. Memory footprint from 110K. Code and web
pages are fully ROMable.

· 符合标准. AppWeb supports HTTP/1.0, HTTP/1.1, CGI/1.1, SSL RFC 2246,
HTTP RFC 2617

· 方便. AppWeb has been ported to Linux, Windows, Mac OSX and Solaris
and support the following CPU architectures: ARM7, MIPS32, i386/X86,
PowerPC and Sparc

Feature Overview

Dynamic Content

· Embedded Server
Pages (ESP)

· Embedded
JavaScript

· Embedded Gateway
Interface (in-memory
CGI)

· CGI/1.1

· PHP (4 and 5)

Embedded Server Pages

· Server-side JavaScripting

· Integrated session state management

· Scripted generation of HTML

· Extensible via new functions

· Manage client state-data via sessions

· Post-back paradigm. Same page for form and post logic

Security

· Secure Sockets Layer (SSL)

· Basic and Digest Authentication

· Directory and URL location based authorization

· Sandbox limits

· Access and access violation logging

Modularity

· Dynamic loading of modules

· Extensible URL handlers

· Extensible / replaceable authorization, SSL and script

Ease of Use

· Apache-style configuration file

· Debugging and trace logging

· Packaged installations for Linux and Windows

· Run as a service / daemon

Other Features

· HTTP server and client access program

· Named and IP based virtual hosts

· Listen on multiple ports

· Compile web pages and files into C code for execution from ROM

Standards

· HTTP/1.1

· CGI/1.1

· Apache configuration file compatibility

Performance

· Multithreaded with high performance thread pool 

· Request throughput (> 3,500 requests per second)

· Scales on multi-cpu systems

· Small memory footprint even under heavy load (from 400K)

Developer Features

· HTTP server and client libraries 

· Shared and static libraries supplied

· C and C++ APIs

· Operate single-threaded or multithreaded (Compile or run-time
selectable)

· Easy, intuitive programming model

· Integrate with common event mechanism: Windows Messages, Unix select,
dedicated thread

· Coding minimized as most features can be specified via the
configuration file

· Cookbook of samples (cut and paste to get going)

· SMP safe

· Extensive debug trace logging

     O’Brien describes AppWeb as a “mini-Apache” in part because it
features compatibility with Apache configuration syntax. “One of our
customers was able to solve a problem using Apache documentation from
the Internet,” O’Brien notes. AppWeb is not based on the apache
codebase, however. “It’s a clean implementation,” says O’Brien. “It’s
really hard to shrink something down.” 
MySQL 3 
AppWeb architecture

5.可执行文件大小、内存以情况

    内存以110KB, Small memory footprint even under heavy load (from
400K)。

官方网站http://www.appwebserver.org/

商业网站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@hotmail.com,请求为汝的目标板单独制作一份陆续编译开发之CSP/eybuild平台。如果你想你的商用产品或项目中使CSP/eybuild,你必在CSP/eybuild的商用授权后才不过使用。商用授权后你将得以博充分好之技术支持和技术培训。关于商用授权的详实流程,可邮件至eybuild@hotmail.com
垂询。

之所以C语言编写CGI与其他语言编写CGI的比:

C语言简洁紧凑,使用方便、灵活,对先后的语法结构要求不是好严格,这就是叫编程

口以编程时有所十分挺之油滑,可以计划来团结风格的次第。不像UNIX
SHELL、Perl和TCL,C语言是同样种植编译语言,源程序代码要于网的续译器翻译成机器能够直接执行的亚前行制代码,因此用C语言编写的CGI程序的运转速度要比用解释性语言编写的次序快。使用编泽语言的外一个好处是不怕CGI执行顺序陷入黑客的手,他们吧无从像分析就此解释性语言编写的CGI程序那样找到程序中的尾巴。由于C语言最初是指向网规划的,这令C语言的字符串处理能力比较差,如果CGI程序要针对字符串进行局部错综复杂的操作,用C诺言实现起来将于麻烦,代码量也比较多。现在网上用C语言编写的CGI程序仅次于Perl(Perl编写程序简单方便)。

MySQL 4

CGI与JSP的比较:

Servlet是Java技术对CGI编程的回。Servlet程序于服务器端运行,动态地生成Web页面。与民俗的CGI和多旁类似CGI的技巧相比,Java
Servlet具有双重胜似的频率,更易于使,功能重新强,具有双重好之可移植性,更节省投资。详细内容见备注。JSP是强于CGI,这为是现CGI技术的行使没有JSP使用多之缘由。但现嵌入式web服务器端程序支付,还是CGI较多。由于采取JSP技术,在嵌入式web服务器出被甚少使用,在网上没有查到关于以嵌入式web服务器上利用的关于内容。

万一促成阅读器的lmt,所待的CGI代码量估计不会见众多,关键在于调试。

结论

   
根据地方的辨析,考虑到用限制广阔程度,在小型服务器、不求最好强力量,推荐选用boa、thttpd,其实它足可以满足大多数情形下之需求,也是下最广泛、可参考最多之嵌入式web服务器。如果要求强的效益,支持javastript等,推荐选用goahead、appweb。

备注:

一个网友的私有意见:

boa 的机能比较全, 便对嵌入式应用很多效就是是冗余(如virtual host),
内存使用量较生把. 
thttpd 功能于少, 实现简单. 内存使用量较少. 同时于有利扩展. 
shttpd 功能意义算是比较全的, 但在处理二进制数据经常莫足够稳定, 时有异常.
有待观察. 
light-httpd, apache 属重量级服务器, 成熟稳定, 体积于生,
在错综复杂的嵌入式应用上而选用. 
goAhead 是只比较专用的 webserver, 大部分功效还当服务它自己提供的 goform
功能与  
          ASP/javascript 功能. 最后之 2.1.8 版仍有那么些bug. (见下) 
mini-httpd 和 thttpd 是同一家, 功能几乎完全一样. 
boa 缺陷:  
   (1) 未供 CGI 解析头处理. 
而是随此地点方便修改. 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 有不一罗列了, 移植时一旦一个个订立下. 
个人观点, 仅供参考. 
Good Luck!

CGI, mod_perl, PHP, JSP性能于

立即是网上一样篇有关CGI,mod_perl,PHP,JSP的性于的章,从中可以见到她的性质。

测试结果充分要命程度达到因让机器的硬件/软件配置,并循配置变化而起距离,因此: 
据测试结果 *仅仅供参考*   
测试用硬件: 
CPU: Intel PII 300(66×4.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   
/html

Java Servlet和JSP的技艺概述以及比较

Java Servlet及其特点

Servlet是Java技术对CGI编程的答疑。Servlet程序在劳动器端运行,动态地生成Web页面。与习俗的CGI和多别类CGI的技艺相比,Java
Servlet具有更胜的频率,更易采取,功能再强有力,具有更好的可移植性,更省去投资(更重要之凡,
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编写,Servlet API具有完善的正经。因此,为I-Planet
Enterprise
Server写的Servlet无需任何实质上之改动即可移植到Apache、Microsoft
IIS或者WebStar。几乎拥有的主流服务器都一直或透过插件支持Servlet。

节省投资:

不单起成千上万廉价甚至免费之Web服务器可供应个人或者小框框网站采取,而且于现有的服务器,如果其不支持Servlet的说话,要丰富这有些作用为频繁是免费的(或只是待极度少之投资)。

JSP及其特性

JavaServer
Pages(JSP)是同样种植实现普通静态HTML和动态HTML混合编码的技艺,有关JSP基础概念的征求参见《JSP技术简介
》。

多多出于CGI程序生成的页面大部分依然是静态HTML,动态内容仅在页面被少的几乎单有出现。但是连Servlet在内的大多数CGI技术及其变种,总是通过序生成整个页面。JSP使得我们可分别创建这点儿单有。例如,下面就是一个简短的JSP页面:

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>

<HTML>

<HEAD><TITLE>欢迎访问网上商店</TITLE></HEAD>

<BODY>

<H1>欢迎</H1>

<SMALL>欢迎,

<!– 首糟糕访的用户名字呢”New User” –>

<% out.println(Utils.getUserNameFromCookie(request)); %>

倘设置帐号信息,请点击

<A
HREF=http://www.blue1000.com/article/"Account-Settings.HTML">这里</A></SMALL>

<P>

页面的其余内容。.

</BODY></HTML>

下是JSP和另外类似或有关技术之一个简单易行比较:

JSP和Active Server Pages(ASP)相比

Microsoft的ASP是相同栽和JSP类似之艺。JSP和ASP相比有两面的亮点。首先,动态部分用Java编写,而非是VB
Script或外Microsoft语言,不仅功效更精又还便于使。第二,JSP应用可移植到任何操作系统和非Microsoft的Web服务器上。

JSP和纯Servlet相比

JSP并从未长其它实质上未可知为此Servlet实现的意义。但是,在JSP中编辑静态HTML更加惠及,不必还用
println语句子来输出每一行HTML代码。更主要的凡,借助内容和外观的分别,页面制作中不同性质的任务可以便宜地分离:比如,由页面设计专家进行HTML设计,同时预留出供Servlet程序员插入动态内容之半空中。

JSP和劳动器端包含(Server-Side Include,SSI)相比

SSI是如出一辙栽被广泛支持之于静态HTML中引入外部代码的技能。JSP在马上上面的支撑逾全面,因为它可用Servlet而休是单身的顺序来扭转动态内容。另外,SSI实际上只是用于简单的含有,而无是面向那些能够处理表单数据、访问数据库的“真正的”程序。

JSP和JavaScript相比

JavaScript能够以客户端动态地生成HTML。虽然JavaScript很有因此,但它们不得不处理为客户端环境也根基的动态消息。除了Cookie之外,HTTP状态和表单提交数据对JavaScript来说还是无可用的。另外,由于是以客户端运行,JavaScript不能够访问服务器端资源,比如数据库、目录信息等等。

Java很占内存也?

使Java平台展开嵌入式设备开支时,其针对性内在的使用量,会不见面比采用原始语言如C/C++更充分些吗?这在软件的扑朔迷离。Java由于虚拟机和内库的因,有或会见招致内存开销的附加。下面比较一下Java平台内存的挤占情况(基于Sun的贯彻):

CLDC(Connected Limited Device
Configuration,运算功能有限、电力有限的嵌入式装置,如PDA
、手机等):可工作让100K(RAM),JIT(Just In
Time,即时编译技术)需要极度老些。典型的配备要求500K-16M(RAM)。

CDC(Connected Device
Configuration,运算能力相对比较出色、并恳请以电力供应上相对比丰硕的嵌入式装置,如冷气机、电冰箱等):VM约为250K,JIT小于300K,VM+JIT+基础类库约占2-2.5M。典型的安排要求:4M-32M。

本,内存的占用量还在应用之大小与内在的使用状态。可以望,其实Java平台不会见占用太死的内存。但是,这才是问题之一半。另一半凡是,Java代码最后安排时凡以看似公事来安排之,它要是包括字节码和冠数据。通过对CVM数据的剖析,可以看,字节码占据着约30%底数据量。而使JIT编译的代码相对于字节码而言,可以窥见,内存的占有量增加了,并有一个7-8倍增之ARM指令集。由于,可以估计:

Java类反成字节码的快慢≈1/30%≈3.3x;

原始语言转成字节码的进度≈7x。

马上表示,Java代码的内存使用量约为原始语言代码的一半。当然这仅是雅简单的估算,但可是合情合理之估计。

采取Java的JIT后,只有那些使用频率高之代码才会为编译。而在网被独是有时吃执行之代码则运用解释来编译。同时,JIT尽量使受编译的代码其内存占有量保持在相同比小的界定外。对CVM(CDC所用虚拟机),默认值为512K。而当有的较理想之程序中,可以窥见,其值为100K-300K。

当时为即,使用Java编写的顺序,只有采取效率比较强的代码才促成内存占用的长。相反,使用C/C++编写的主次,整个代码都亟待进行编译。因此,不能够说下Java语言编写的程序占用的内存就会较用C/C++编写的顺序非常。这决定给软件相对于阳台代码的复杂度及大小。如果软件规模比深,Java平台所耗费的内存远小于Java类文件简洁性节约的内存,这种景象下,使用Java平台将有益于节约内存。如果软件的范围比小,则Java平台消耗的内存就较显然了,可以设想下C/C++来开发,以节省内存。

 

 

网站地图xml地图