我接触到AOL server原因是因为自己检查服务的时候发现这个进程与lighttpd争80端口,谨慎起见,没有直接remove,百度得知AOL server是美国在线使用的web服务软件,据说很NB,不过国内使用这个服务软件的网站几乎为0,以下是我收集的资料。

AOL Server由来
其实,AOL Server 原先并非由 AOL 所发展。所以他开始时,也不是叫 AOL Server。大约在 1994 年时,在美国加州的圣芭芭拉市,两位 Unix 的高手,Jim Davidson 及 Doug McKee, 设计了一个 Web 出版系统,其中一部分是一个所见即所得的网页编辑程序,叫做 NaviPress。而他们所成立的 NaviSoft 公司,希望更进一步的提供整个站点的管理功能,而不单单仅是网页的撰写。他们希望让制作好的网页可以很方便的就放到站点上面,所以他们就发展了自己的Web Server,名称就是 Navi Server。这是一个非常成功的产品,还赢得当时许多著名杂的奖项。

後来,NaviSoft被AOL 给买了下来,这个Navi Server 自然就成了 AOL 的产品之一,然後就更名为 AOL Server 棉!而AOL 也不藏私,让 AOL Server 继续以 Open Source 的形式释出来造福群众。而他们所采用的版权则是依照 Mozilla Public License。

AOL Server 的特点
前面已经有约略提过,AOL Server 的效能与稳定性。这两项优点其实是源自於他当初设计的理念!在 AOL Server 本身的架构上,特别有针对一些传统Web Server会遇到的问题经过修改。

一般网页可以分为两类,静态网页与动态网页。所谓的静态网页,就是一般以档案方式存在的网页,当 client 端,要求的是一个静态网页时,Server 仅需将该网页传回给 client 即可。动态网页则是需要 Server 进行一些特殊的动作,可能是去执行一个执行档,或是直接去存取数据库,也可能是启动 Server 内建的机制来完成 client 的需求。早期最常见的技术就是 CGI,SSI,後来就演变成为 Server Scripting,如内嵌的 Perl module,PHP,Microsoft 的 ASP 等。而且,越来越多的应用都需要让 Server 能以动态方式存取数据库的内容来产生网页。

早期的 CGI 方式产生的动态网页,有个为人诟病的地方,就是每个 CGI 程序都是独立的process ,所以一旦 client 的 hit 数量变多,process 的建立与删除就会变得十分频繁。这对操作系统来说,可不是件好事。甚至可说是对操作系统稳定性的严苛测试(笔者确实遇过有公司直接问哪个操作系统与Web Server 的搭配可以同时承受最多数目的 CGI request)。

所以,我们可以想见问题就是在於大量动态页面的 request 对 Server所造成的影响。特别是每个动态页面又有各自存取数据库的动作。不幸的是,这正是绝大多数商业站点的要作的事情。AOL Server 在这一方面的设计,主要是它有自己内建的 Script language 。并且提供 pool 的方式与数据库进行连结。

内建 Script language 的好处在於不需要启动额外的 process 来执行程序,直接启动内建的 Script Interpreter 就可以进行动态网页的产生。这对於系统的稳定还有网页产生的效能上有非常大的帮助。

pool 的优点与内建 script language 其实有异曲同工之妙。因为建立 database connection 也是操作系统的一大负担。甚至比建立 process 的负担还要来的大,而传统的方式则是每个 CGI程序内部都需要独立的 database connection 来进行数据库存取。pool 的功能就是将需要进行的 database 存取工作通通收集在一起,然後透过之前已经建立好固定数目的 database connection 来进行存取。所以无论程序或是request 的数目有多少,database connection 的数量永远都不会改变,也不需要一再重复开启与关闭的动作。这对於服务器或是 database 而言,都减轻了许多的工作负担。

另外,AOL Server 还有一些其它的优点,像是容易安装,也可安装其它的 script language,可以发展嵌入的 module 等等。这些已经是目前 Web Server 的标准配备了,不再赘述。

内嵌 Tcl script language

前面说到 AOL Server 有内嵌式的 script language。这个 language 不是别人,正是鼎鼎大名的 Tcl。一方面是因为 Tcl 也是 Open source 的,另一方面是因为 Tcl 极为容易嵌入在别的软件内,特别是它的直译器效能很好,而且内建的 I/O 机制效能奇高。所以被当初的 NaviSoft 相中,将其加入至Navi Server 中,而成为预设的 Script Language。这对於像我这些 Tcl/Tk 的爱好者而言,AOL Server 可以说是我们的天堂阿!因为,连 AOL Server 的 config 档也是使用 Tcl 语言。所以对於一个 Tcl 的爱好者而言,要学会 AOL Server 根本就不必费什麽功夫。

AOL Server 也不仅将 Tcl 嵌入而已,他还做了一些补强,特别是 AOL Server 提供了一种特殊的网页格式,称为 AOLserver Dynamic Pages (ADPs)。原则上,ADPs 与 PHP 及 ASP 的格式十分相似,差别就在於 ADPs 使用的 Tcl 语法。他们使用的标签符号也都是〈% … %〉 ,是不是很类似呢?

数据库的支援
AOL Server 本身有特别支援一些数据库,所以这些数据库搭配上 AOL Server 将会有很好的表现。这些数据库分别是

Interbase
MySQL
Oracle
Postgres
SOLID

几个主要 Unix 上可见的数据库,AOL Server 都已经有涵盖到。而且,AOL Server 本身也提供对於数据库的标准界面,有兴趣的个人或是厂商可以自行开发可供 AOL Server 使用的数据库驱动程序。所以在数据库的扩充性上,AOL Server 表现的无懈可击。

结语
AOL Server 对於想要拥有超高稳定度,高效能,高扩充性 Web Server 的人而言,是一个非常具有吸引力的软件。如果你又是 Tcl 的爱用者,那你更没有理由不用它来架设你自己的站点了。对於企业的 MIS 而言,AOL Server 值得好好的 survey 一番。他既然能满足美国第一大 ISP 的需求,我想没有什麽公司的站点是它处理不了的了!