全部博文(65)
分类: 系统运维
2009-05-06 20:08:37
1、 Goahead Web Server 主要特性:
(1) 支持ASP
(2) 支持嵌入式JavaScript
(3) 标准的CGI执行
(4) 内存中的CGI处理GoFrom
(5) 扩展的API
(6) 快速响应,每秒可处理差超过50个请求
(7) 完全和标准兼容
(8) 如果不包含SSI,仅要求60K的内存,包含SSI,要求500K内存
(9) Web页面可以存在ROM或文件系统中
(10) 支持多种操作系统,包括eCos 、LINUX 、LynxOS 、QNX 、VxWorks 、WinCE、 pSOS等
2、 ASP技术介绍
ASP是Microsoft开发的代替CGI脚本的动态服务网页程序,可以实现与数据库和其他程序的交互。ASP程序允许用户使用包括VBScript,JavaScript等在内的许多已有的脚本语言写ASP应用程序,ASP程序的编制更方便,更灵活。除此之外ASP还具有无编译即可运行,良好的安全性,丰富的内置对象,提供和支持组建功能,瘦客户端等特点。ASP应用程序是在Web服务器上进行解析执行的,而浏览器只是接收和处理HTML流。ASP文件是以“.asp”为扩展名,在传送到浏览器之前用嵌入式脚本插入动态内容。Goahead Web Server支持一个运行时选择脚本引擎的开放式脚本结构。
要创建一个ASP脚本可以使用“<%”和“%>”定界符,例如,下面的JavaScript将在ASP定界符出现的地方,输出“Hello World”。
Today is <% write("Hello World"); %>
当用户浏览器要读取ASP文件时,默认的URL程序通过检查文件的扩展名确定页面是否是ASP文件。出现“ .asp” 为扩展名的文件表示需要ASP处理程序来处理,它通过操作从文件系统或ROM读出。在定界符前的内容被直接复制到发出请求的浏览器,当出现ASP定界符时,定界符之间的内容被传送的相关的脚本引擎执行,执行的结果立刻发送的浏览器,这种处理不断重复直到文件结束。
3、 嵌入式JavaScript介绍
Goahead 开发了一个嵌入式版本的JavaScript叫做 Ejscript 。JavaScript 是一个非常庞大的语言,它的大小不适用于大部分嵌入式设备。Goahead设计了嵌入式JavaScript解决了这个问题。Ejscript 是JavaScript 的一个严格子集,执行了它基本的语言要素。Ejscript 可应用在ASP中更轻易的建立动态网页。
当JavaScript 用在ASP网页中时,它包含在ASP定界符内,
基本格式是: <% function(arguments, ...); %>
JavaScript脚本能跨过多个“\”字符,用在ASP页面中时,函数参数包含了任何查询变量包括在URL查询串或者是标准变量中定义的。URL 查询串自动解码,JavaScript变量被定义了解码查询值。例如,用下面的代码解析名字和地址编码为一个在URL的查询串:
int myAspProcedure(webs_t wp, int argc, char_t **argv)
{
char_t *name = websGetVar(wp, "name", "undefined");
char_t *age = websGetVar(wp, "age", "undefined");
websWrite(wp, "Name %s, Age", args);
}
JavaScript 程序用websAspDefine API 注册。这样发布了C程序作为JavaScript的全局变量。例如:
extern int outputMyTable(int ejid, webs_t wp, int argc, char_t **argv);
websAspDefine("outputTable", outputMyTable);
websAspDefine连接了JavaScript的命令“outputTable”和c程序“outputMyTable”。当一个ASP页面被浏览器请求时,任何在ASP脚本中出现的outputTable将调用outputMyTable函数。
4、 标准的CGI执行介绍
CGI(Common Gate Interface)外部应用程序与信息服务器的标准接口,如HTTP或Web服务器。一个纯HTML是静态的只能检索web不能做改变。一个CGI 程序却可是实时的执行输出的动态内容。
CGI脚本可以用任何语言编写,这种语言能够读STDIN,写STDOUT和读环境变量。这意味着可以使用任何脚本语言,包括C,Perl,甚至shell 脚本。
当URL以/cgi-bin开始时,一个新的程序被调用。CGI可执行程序必须放在Web Server cgi-bin子目录里,每一个CGI请求建立一个独立的进程。