# 软件包介绍 WebNet 软件包是 RT-Thread 自主研发的,基于 HTTP 协议的 Web 服务器实现,它不仅提供设备与 HTTP Client 通讯的基本功能,而且支持多种模块功能扩展,满足开发者对嵌入式设备服务器的功能需求。 ## 软件包目录结构 WebClient 软件包目录结构如下所示: | **名称** | **说明** | | ---------- | ------------------------ | | docs | 文档目录 | | inc | 头文件目录 | | src | 源文件目录 | | module | 功能模块文件目录 | | samples | 示例文件目录 | | LICENSE | 许可证文件 | | README.md | 软件包使用说明 | | SConscript | RT-Thread 默认的构建脚本 | ## 软件包功能特点 WebNet 软件包提供丰富多样的功能支持,大部分功能以模块的形式给出,每个功能模块提供单独的控制方式且不同功能模块之间互不干扰,模块与主程序之间配合形成了一套功能齐全、高性能、高并发且高度可裁剪的网络服务器框架体系。 WebNet 软件包功能特点: - **支持 HTTP 1.0/1.1** WebNet 软件包用于在嵌入式设备中运行网络服务器功能,其功能实现基于 HTTP 协议,且同时支持 HTTP 1.0 和 HTTP 1.1 协议,提高网络服务器兼容性。 - **支持 CGI 功能** CGI(Common Gateway Interface )功能,是服务器运行时的外部程序规范,可以用于扩展服务器的功能。CGI 功能可以完成浏览器和服务器的交互过程。WebNet 软件包中的 CGI 功能,用户可以**自定义注册 CGI 执行函数**,服务器通过判断浏览器请求的 CGI 类型,执行相应的函数,并给予相应反馈信息。 - **支持 ASP 变量替换功能** ASP(Active Server Pages)功能, 实现的网页中变量替换的功能,即当浏览器访问的页面代码中有 **<% %>** 标记出现时(**支持包含 .asp 后缀的页面文件**),将自动替换成**自定义注册的ASP 执行函数**,并且给与相应反馈信息。使用此功能可以很方便地独立修改每个变量执行函数的实现方式,完成整个页面不同部分的改动,方便前后台开发分工合作。 - **支持 AUTH 基本认证功能** 在使用 HTTP 协议进行通信的过程中,HTTP 协议定义了 Basic Authentication 基本认证过程以允许HTTP 服务器对 WEB 浏览器进行用户身份认证。基本认证功能为服务器提供简单的用户验证方式,其认证方式快速、准确,适用于对服务器安全性能有一定要求的系统和设备。WebNet 软件包中基本认证功能设计成与 URL 中目录相挂钩,在使用时可以**根据目录划分权限**。 - **支持 INDEX 目录文件显示功能** WebNet 服务器开启之后,在浏览器输入对应的设备 IP 地址和目录名,就可以访问该目录,并列出该目录下所有文件的信息,类似于简单的文件服务器,可以用于服务器文件的查询和下载。 - **支持 ALIAS 别名访问功能** ALIAS 别名访问功能,可以给文件夹设置多个别名,可以用于**长路径的简化操作**,方便用户对资源的访问。 - **支持 SSI 文件嵌入功能** SSI(Server Side Include)功能,一般用于页面执行服务器程序或者插入文本内容到网页中。WebNet 中的 SSI 功能目前只支持插入文本内容到网页功能,页面代码中有 **** 或者 **** 标记存在时(**支持包含 .shtml 、shtm 后缀的页面文件**),将自动解析成对应文件中的信息。通过 SSI 文件嵌入功能,可以使整个页面处理模块化,从而实现修改指定文件就可以完成页面的改动。 - **支持文件上传功能** 支持浏览器上传文件到 WebNet 服务器,可以自定义文件处理函数,以实现把上传的文件存储在文件系统中或直接写入目标存储器。利用此功能可以实现: 1. 上传资源文件到文件系统,如图片和网页; 2. 上传存储器镜像以烧写系统中的存储器,如 SPI FLASH; 3. 上传配置文件到系统以更新系统设置; 4. 上传固件并直接写入 FLASH 以实现固件更新功能。 - **支持预压缩功能** 预压缩功能用于提前压缩网页资源文件(**支持包含 .gz 后缀的压缩文件**),降低对存储空间的需求,缩短文件系统读取时间,减少网络流量,提高网页加载速度。一般来讲,使用预压缩功能后,WebNet 服务器占用的存储空间仅为原来的 30%~40%。 - **支持缓存功能** WebNet 缓存机制可以判断浏览器请求文件是否修改,从而决定是否发送完整文件内容到浏览器。 WebNet 软件包缓冲机制分为如下三个级别: 1. level 0:关闭缓存功能,即浏览器每次都会从 WebNet 完整的读取文件内容; 2. level 1:开启缓存功能,WebNet 通过读取请求文件的最后修改的时间,如果和本地文件相同,则返回 304 通知浏览器文件并无更新,不会发送文件; 3. level 2:开启缓存功能,在原来判断修改时间的基础上,添加缓存文件有效时间支持,操作有效时间浏览器可重新访问该文件。 - **支持断点续传功能** WebNet 服务器支持断点续传功能,即客户端在下载文件中途出现错误,再次下载时只需要提供给 WebNet 服务器前一次文件下载的偏移量,服务器将从指定文件偏移量发送文件内容给客户端,断点续传功能可以确保文件上传快速、准确,提高服务器运行效率。 ## 软件包性能测试 测试环境:AM1808,主频 400M, DDR2 内存 | 测试环境 | 页面文件在 SD 卡上,DM9000AEP 外置网卡 | | ------------ | -------------------------------------- | | 静态页面请求 | 142 pages/s | | CGI 页面请求 | 429 pages/s | | 测试环境 | 页面文件在 SD 卡上,EMAC 外置网卡 | | ------------ | --------------------------------- | | 静态页面请求 | 190 pages/s | | CGI 页面请求 | 567 pages/s | ## 软件包资源占用 ROM:16 Kbytes RAM:1.5 Kbytes + 1.1 Kbytes x 连接数 NOTE:以上数据为参考值,示例平台是 Cortex-M3,因为指令长度和框架不同,软件包资源占用有所不同。WebNet 在处理页面时,文件系统和模块内部也会有部分资源消耗。