1 Wind Web Server介绍
VxWorks是WindRiver公司开发的具有工业体体育场地位的高位能实时操作系统内核,它是一个运行在目标机上的高性能、可裁减的嵌入式实时操作系统,具有先进的网络功能,支持市面上逾90%的处理器。该公司的网络协议栈产品Wind Web Server提供了功能强大的基于Web方式的网络管理系统,可以无缝地集成到任何基于VxWorks的嵌入式应用中。 Wind Web Server具有以下特性: %26;#183;完全支持HTTP
1.1标准
%26;#183;不需要文件系统 %26;#183;支持Java Applets、图像文件、声音文件等 %26;#183;可通过标记支持SSI %26;#183;URL处理可定制 %26;#183;灵活配置的模块结构 %26;#183;脚本小(7~40KB) %26;#183;支持用户/用户组/密码认证 %26;#183;有IP过滤机制 %26;#183;支持CGI %26;#183;可记录日志 %26;#183;支持别名 %26;#183;支持服务器推送(Server push)技术。 Wind Web Server采用模块设计,可以方便地进行裁剪以满足应用的特殊要求。根据配置,Wind Web Server需要7~40KB的内存。在嵌入式系统中硬件资源宝贵,有时并不需要文件系统。Wind Web Server提供了一个工具Pagepack,可以在编译和连接时将Web内容放在程序代码中,从而可以存储在ROM中。
2 Wind Web Server结构
嵌入式系统的使用的资源是受限的,在许多飞速下甚至没有外部存储系统,这一点要求嵌入式系统的Web服务器与UNIX和Windows平台上的Web服务器有很大不同。Wind Web Server采用模块化和可伸缩的系统结构,允许用户进行裁剪以满足资源的不同限制。Wind Web Server的结构如图1所示。 Wind Web Server由以下关键部分组成: %26;#183;Web服务器核心 %26;#183;HTTP请求处理模块(RPM) %26;#183;RPM调度程序 %26;#183;服务器端符号表 %26;#183;API函数
2.1 Web服务器核心和RPM调度程序
Web服务器核心作为一个任务运行在目标系统中。提供网络服务绑定、Socket函数调用和初始化参数的设置等。RPM调度程序决定怎样响应HTTP请求,即决定了HTTP请求的地址和RPM的对应关系。
2.2 HTTP请求处理模块(RPM)
HTTP请求处理模块分为两大类:系统RPM和用户RPM。其中系统RPM执行HTTP请求的基本处理,包括:记录日志、处理别名与MIME头、IP地址检查、密码验证和访问限制。而用户RPM处理具体的页面请求,包括:文件系统RPM、SSI(Server Side Include)RPM、CGI PRM、用户函数调用RPM、服务器推送RPM等。另外用户可以使用自定义RPM完成一些特殊的处理过程。
2.3 服务器端符号表
Wind Web Server主要通过符号表来支持Web存取目标机中的变量,每个符号表包含如下属性: %26;#183;Address 内存地址 %26;#183;Name 名称 %26;#183;Descrip 描述 %26;#183;Type 数据类型 %26;#183;Num Elems 变量个数 %26;#183;GET Routine 读加调函数 %26;#183;GET Param 调回调数数的参数 %26;#183;SET Routine 写回调函数 %26;#183;SET Param 写回调函数的参数 %26;#183;Access ID 变量的访问控制 将网页请求和符号表联系起来的方法有两种:扩展SSI和服务器推送。 (1)扩展SSI的实现 可以在HTML网页中使用标记,每个标记都与存在于Wind Web Server符号表中的一个读或写回调函数相对应。当网页为Wind Web Server请求时,包含变量值等动态信息的读或写回调函数输出替代了网页上的标记,从而动态显示或提交数据内容。这项技术同时提高了在HTML页中处理表单的能力。传统的Web Server只能处理事先确定的缺省的表单元素,在Wind Web Server,实际值可以从符号表中得以,然后在HTML页被提交到客户端前插入到表单中。Wind Web Server还提供了一个工具formpack,用于在包含表单的普通网页中加入标记。 Wind Web Server中已经包含标准的SSI实现,如输入框、下拉列表、复选框等。另外,用户可以加入自定义的SSI函数以处理特定的HTTP请求。 (2)服务器推送的实现 HTTP是一种请求响应协议,如果要对服务器端进行持续的监控,必须不断地发送请求刷新页面,这将大大加重服务器的负担。Wind Web Server能够使用内嵌的Linve Control模块在页面中的Java applet与服务器端的符号表之间建立一条持续的交线链路,使服务器端符号表变量的改变无需客户端请求而直接对客户端发布,从而实现了服务器推送的目的。
2.4 HTTP请求处理过程
一个典型的HTTP请求处理包含以下步骤: (1)接收到HTTP请求后,服务器取出包含目的URL的请求地字符串,将其存入描述HTTP请求的数据结构中; (2)如果该请求是页面提交,即如下形式:http://target/xxx.xxx.htm?para1=xxx%26;amp;para2=xxx,则将提交参数存入环境变量QUERY_STRING中。 (3)调用所有已配置的系统RPM,如果返回正确,则继续; (4)调用页面对应的用户PRM,如果该页面中包含SSI标记,则调用SSI RPM; (5)查找标记,例如:则调用标准SSI函数ShowValue()对符号表中的变量usersymbol进行处理,然后将得到的变量值插入要返回的HTML页面中,传送至客户端。
1 Wind Web Server介绍
VxWorks是WindRiver公司开发的具有工业体体育场地位的高位能实时操作系统内核,它是一个运行在目标机上的高性能、可裁减的嵌入式实时操作系统,具有先进的网络功能,支持市面上逾90%的处理器。该公司的网络协议栈产品Wind Web Server提供了功能强大的基于Web方式的网络管理系统,可以无缝地集成到任何基于VxWorks的嵌入式应用中。 Wind Web Server具有以下特性: %26;#183;完全支持HTTP
1.1标准
%26;#183;不需要文件系统 %26;#183;支持Java Applets、图像文件、声音文件等 %26;#183;可通过标记支持SSI %26;#183;URL处理可定制 %26;#183;灵活配置的模块结构 %26;#183;脚本小(7~40KB) %26;#183;支持用户/用户组/密码认证 %26;#183;有IP过滤机制 %26;#183;支持CGI %26;#183;可记录日志 %26;#183;支持别名 %26;#183;支持服务器推送(Server push)技术。 Wind Web Server采用模块设计,可以方便地进行裁剪以满足应用的特殊要求。根据配置,Wind Web Server需要7~40KB的内存。在嵌入式系统中硬件资源宝贵,有时并不需要文件系统。Wind Web Server提供了一个工具Pagepack,可以在编译和连接时将Web内容放在程序代码中,从而可以存储在ROM中。
2 Wind Web Server结构
嵌入式系统的使用的资源是受限的,在许多飞速下甚至没有外部存储系统,这一点要求嵌入式系统的Web服务器与UNIX和Windows平台上的Web服务器有很大不同。Wind Web Server采用模块化和可伸缩的系统结构,允许用户进行裁剪以满足资源的不同限制。Wind Web Server的结构如图1所示。 Wind Web Server由以下关键部分组成: %26;#183;Web服务器核心 %26;#183;HTTP请求处理模块(RPM) %26;#183;RPM调度程序 %26;#183;服务器端符号表 %26;#183;API函数
2.1 Web服务器核心和RPM调度程序
Web服务器核心作为一个任务运行在目标系统中。提供网络服务绑定、Socket函数调用和初始化参数的设置等。RPM调度程序决定怎样响应HTTP请求,即决定了HTTP请求的地址和RPM的对应关系。
2.2 HTTP请求处理模块(RPM)
HTTP请求处理模块分为两大类:系统RPM和用户RPM。其中系统RPM执行HTTP请求的基本处理,包括:记录日志、处理别名与MIME头、IP地址检查、密码验证和访问限制。而用户RPM处理具体的页面请求,包括:文件系统RPM、SSI(Server Side Include)RPM、CGI PRM、用户函数调用RPM、服务器推送RPM等。另外用户可以使用自定义RPM完成一些特殊的处理过程。
2.3 服务器端符号表
Wind Web Server主要通过符号表来支持Web存取目标机中的变量,每个符号表包含如下属性: %26;#183;Address 内存地址 %26;#183;Name 名称 %26;#183;Descrip 描述 %26;#183;Type 数据类型 %26;#183;Num Elems 变量个数 %26;#183;GET Routine 读加调函数 %26;#183;GET Param 调回调数数的参数 %26;#183;SET Routine 写回调函数 %26;#183;SET Param 写回调函数的参数 %26;#183;Access ID 变量的访问控制 将网页请求和符号表联系起来的方法有两种:扩展SSI和服务器推送。 (1)扩展SSI的实现 可以在HTML网页中使用标记,每个标记都与存在于Wind Web Server符号表中的一个读或写回调函数相对应。当网页为Wind Web Server请求时,包含变量值等动态信息的读或写回调函数输出替代了网页上的标记,从而动态显示或提交数据内容。这项技术同时提高了在HTML页中处理表单的能力。传统的Web Server只能处理事先确定的缺省的表单元素,在Wind Web Server,实际值可以从符号表中得以,然后在HTML页被提交到客户端前插入到表单中。Wind Web Server还提供了一个工具formpack,用于在包含表单的普通网页中加入标记。 Wind Web Server中已经包含标准的SSI实现,如输入框、下拉列表、复选框等。另外,用户可以加入自定义的SSI函数以处理特定的HTTP请求。 (2)服务器推送的实现 HTTP是一种请求响应协议,如果要对服务器端进行持续的监控,必须不断地发送请求刷新页面,这将大大加重服务器的负担。Wind Web Server能够使用内嵌的Linve Control模块在页面中的Java applet与服务器端的符号表之间建立一条持续的交线链路,使服务器端符号表变量的改变无需客户端请求而直接对客户端发布,从而实现了服务器推送的目的。
2.4 HTTP请求处理过程
一个典型的HTTP请求处理包含以下步骤: (1)接收到HTTP请求后,服务器取出包含目的URL的请求地字符串,将其存入描述HTTP请求的数据结构中; (2)如果该请求是页面提交,即如下形式:http://target/xxx.xxx.htm?para1=xxx%26;amp;para2=xxx,则将提交参数存入环境变量QUERY_STRING中。 (3)调用所有已配置的系统RPM,如果返回正确,则继续; (4)调用页面对应的用户PRM,如果该页面中包含SSI标记,则调用SSI RPM; (5)查找标记,例如:则调用标准SSI函数ShowValue()对符号表中的变量usersymbol进行处理,然后将得到的变量值插入要返回的HTML页面中,传送至客户端。
举报