在 google 上无意中搜索到这篇文章,觉得不错就转来了。

原文链接:
http://www.dev.idv.tw:8080/folder......

---------------------------------------------

Tcl 的讨论区上贴了一篇简介Tcllib的文章,有网友建议我写写Tcllib的使用心得。可是觉得光是写写Tcllib本身的应用好像不是很有意思, Tcllib本身有提供一些Mime的相关函式,相当的好用,但是光是说明这些函式的使用,也不是很有意思。刚好,之前想用Tcl来写个WebMail的程序,便想利用这个程序来说明Tcllib的一些弁遄C而使用Tcl来写Web程序最佳的方法就是在AOL Server上面开发,所以便决定先写篇文章来介绍一下AOL Server,然后再来进行Tcllib的使用心得。这正是这篇文章诞生的缘由!

AOL Server是什么?

看到AOL 这三个英文字母,有没有让你联想起哪家公司呢?相信很多人直觉就想到美国在线(America Online)。是的!就是这家美国最大的ISPAOL Server正是他们公司的产品 之一。AOL Server不是种主机,不是个操作系统,不是个数据库系统,它是一个Web Server。就像是Apache Server一样!而AOL自身的Homepage(www.aol.com)所在的主机上,所架设Web Server不是Apache,也不是IIS,正是本文要介绍的AOL Server,一个Open-Source(版权为MOZILLA PUBLIC LICENSE) ,高效能,高承载能力,稳定且支持Multithread的重量级 Web ServerAOL这么个超大型的ISP,它的客户数量自然不在话下,大家可以想想它的首页每天会有多少人去存取阿!一旦,它的首页挂了,那个损失可能可以媲美台湾停电时,晶圆厂的损失。由此可见AOL Server有多么稳定了!想知道AOL Server可以承受多大的负载而不致crash吗?根据AOL自身的经验这个答案是

28,000 hits/sec

是的!!每秒二万八千个hits

AOL Server由来

其实,AOL Server原先并非由AOL 所发展。所以他开始时,也不是叫AOL Server。大约在1994年时,在美国加州的圣芭芭拉市,两位Unix的高手, Jim DavidsonDoug McKee, 设计了一个Web 出版系统,其中一部分是一个所见即所得的网页 编辑程序,叫做NaviPress。而他们所成立的NaviSoft 公司,希望更进一步的提供整个网站的管理弁遄A而不单单仅是网页的撰写。他们希望让制作好的网页可以很方便的就放到网站上面,所以他们就发展了自己的Web Server,名称就是Navi Server这是一个非常成功的伺服程序器,还得当时着着杂志 的奖项。后来,NaviSoftAOL 给买了下来,这个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的需求。早期最常见的技术就是 CGISSI,后来就演变成为Server Scripting,如内嵌的Perl modulePHPMicrosoftASP 等。而且,越来越多的应用都 需要让Server能以动态方式存取数据库的内容来产生网页。

早期的CGI 方式产生的动态网页,有个为人诟病的地方,就是每个CGI 程序都是独立的process ,所以一旦clienthit 数量变多,process的建立与删除就会变得十分频繁。这对操作系统来说,可不是件好事。甚至可说是对操作系统稳定性的严苛测试(笔者确实遇过有公司直接问哪个操作系统与 Web Server的搭配可以同时承受最多数目的CGI request)。所以,我们可以想见问题就是在于大量动态页面的 requestServer所造成的影响。特别是每个动态页面又有各自存取数据库的动作。不幸的是,这正是绝大多数商业网站的要作的事情。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而言,都减轻了钗h的工作负担。另外,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 Serverconfig文件也是使用Tcl语言。所以对于一个Tcl的爱好者而言,要学会AOL Server根本就不必费什么力气。AOL Server也不仅将Tcl嵌入而已,他还做了一些补强,特别是AOL Server提供了一种特殊的网页格式,称为AOLserver Dynamic Pages (ADPs)。原则上,ADPsPHPASP的格式十分相似,差别就在于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 的需求,我想没有什么公司的网站是它处理不了的了!这篇文章仅是简介,希望能引起大家对于AOL Server的兴趣。

参考数据:
http://aolserver.com/ AOL Server
的总部所在!
http://www.arsdigita.com/asj/aolserver/introduction-1.html
非常详细的AOL Server介绍(强烈建议先看看这篇文章!
http://www.arsdigita.com/asj/aolserver/introduction-2.html
同上!
news://dev.aolserver.com/aolserver.administration AOL Server
管理方面问题的newsgroup
news://dev.aolserver.com/aolserver.programming \tAOL Server
程序设计方面问题的newsgroup
news://dev.aolserver.com/aolserver.problems AOL Server
相关问题反应用的newsgroup
news://dev.aolserver.com/aolserver.general AOL Server
一般讨论的newsgroup

 

---------------------------------------------