分类: LINUX
2011-01-25 14:33:35
廉价的硬件,功能强大的32操作系统,以及无处不在的因特网,它们一起促成了网络应用和设备的飞速增长。大量的设备连接到网络上,于是人们希望通过一种通
用、熟悉、快捷的方式来访问和控制它们。嵌入式web服务器正好迎合了这种需求,它们嵌入在网络设备之中,使用标准的浏览器就可以远程访问和控制它们。
然而,并不是所有的web服务器都可以担当如此重任,我们需要的是一个强大,安全,标准的,而且最好是久经考验的嵌入式web服务器。这里将要介绍的
GoAhead嵌入式web服务器能够满足所有这些需求,包括西门子,霍尼韦尔,惠普等大型企业都在使用GoAhead。
GoAhead WebServer采用开放源代码方式,任何人都可以下载、评估并修改代码,目的是为了使GoAhead WebServer成为市场上最领先的嵌入式Web服务器。
支持的平台 | 定制的平台 |
Windows NT/98/95 | ChorusOS |
Windows CE | pSOS |
Embedd Linux | uCOS |
Linux | IRIX |
VxWorks | HP-UX |
QNX | RTEMS |
Lynx |
3、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等。
4、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定界符
时,定界符之间的内容被传送的相关的脚本引擎执行,执行的结果立刻发送的浏览器,这种处理不断重复直到文件结束。
5、嵌入式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函数。