嵌入式Linux WEB服务器整体设计

2019-07-12 14:28发布

《ARM Linux开发-warewin 2G/3G无线传输(DTU)和路由器—笔记》

特点

最主要的目的是显示设备的状态,显示设备的参数,修改设备的参数。 Web服务器支持GET  POST方法 支持包含文本图片的静态网页 用基本的web认证 支持标记替换的动态网页 网页form提交的请求设置参数保存参数 通过网页上传和下载文件。 一个进程 代码量少,编译占用空间小 简单的加密 通用,使用灵活方便 增加页面和参数很简单 不同于CGI网页设计和代码编程分开,可让不懂编程的人设计美观的页面,同时还能把动态的内容展示出来。

需求

目前,web浏览器使用普及。可以访问INTERNET网站的网页,同时很多嵌入式设备也内置web服务器,也可用浏览器来访问。嵌入式系统提供web服务的主要目的是查看设置参数,显示设备的状态。有web服务后,设置观察嵌入式设备不需要专门的电脑软件,用浏览器就直接可以访问。 下图WEB页面显示参数和状态      

设计

Web服务器是个单进程服务。 大概的流程是:TCP Socket服务端一直监听,当有客户端浏览器连接请求时,建立连接,处理该连接的请求,返回处理结果到浏览器,关闭该连接再等新连接。TCP连接的特点是短连接,处理完一个请求,返回结果马上关闭该连接。这个WEB服务器能同时支持多个浏览器打开,但是要排队处理。这对于嵌入式系统来说已经够了。 对于任何浏览器来的请求抽象为:认证处理,输入处理,输出处理。 对所有的网页都包含认证处理,如果认证没通过就拒绝访问。如果浏览器一次通过认证,接下来的操作就不需要再次输入认证信息。采用的是浏览器的基本认证方法。   输入处理主要是对浏览器的请求表单进行分析。 输出处理是根据分析情况生成页面返回给浏览器。 对浏览器的请求进行分类: 获取状态或参数,浏览器一般请求一个web页面。Web服务器生成网页返回结果。输入处理没有,输出处理主要是生成页面。 设置参数或对设备进行复杂操作的,浏览器提交表单,web服务器分析表单,做相应处理返回结果。输入处理要分析表单。输出处理要产生报告执行结果的页面。   获取状态或参数: html,图片,等静态请求,输出处理直接打开文件输出内容到浏览器。 Asp动态页面请求,输出处理打开文件输出文件内容到浏览器,档碰到标记的时候,做动态内容替换。   设置参数或对设备进行复杂操作 保存参数表单请求,输入处理根据提交的表单生成元素关键字和值对表。输出处理是把表中的每个关键字查对应参数并验证表单提交的值在取值范围,并设置为表单提交的值,如果成功返回成功提示。如果失败返回失败提示。 上传表单请求 下载表单请求   网页程序开发模式一般是 用HTML工具设计静态的页面。HTML上把想要输出动态内容的位置替换为标记。 如果HTML页面有表单, 可以提交处理。 如果HTML页面动态显示,扩展名称为asp 动态替换不是变量,也不是语句,而是类似函数格式。         最为重要的是参数显示和设置 一般用asp来显示参数。 Asp上面的表单可以提交设置参数。 ASP页面上的输入框可以显示参数也可提交参数 参数显示用动态替换,用读取函数的参数。 参数的提交设置需要验证参数取值是否正确,参数验证比较复杂。 参数的类型多种,如字串,IP地址,数值,逻辑型等。取值范围有限制,如数值大于0小于24 等。 为此建立参数验证表,表中的每一项为参数名,参数提示,对应的验证函数,取值范围等。新增参数的时候就在表中增加一项。 不足之处: 对于动态数据只能用类似CGI方式处理,即在代码中打印HTML语句。 网页跳转机制简单 表单提交结果显示页面是CGI方式,能设计为asp较好。 中英文切换需要考虑程序中的HTML语句的输出。 一个页面包含另外一个页面,目前被包含的页面实现为CGI方式。要是被包含的页面是一个静态的页面asp就更好了。