为嵌入式系统设计 Web 界面
Posted
技术标签:
【中文标题】为嵌入式系统设计 Web 界面【英文标题】:Designing Web Interface for Embedded System 【发布时间】:2010-12-31 09:07:04 【问题描述】:操作系统:Linux。
我正在尝试寻找可能的方法来为我的嵌入式系统实现 Web 界面。 目前有一个 shell(基于文本)和一小组命令来查询设备。
我是网络开发新手,我的问题是:
我必须使用什么网络服务器? (我在我的开发设置中安装了 apache,并尝试使用 CGI 来获取一些页面,但这似乎不是嵌入式系统的正确选择)
假设我正在使用 CGI,可以使用什么策略在 CGI 和主应用程序之间传递数据? 我打算在 MainApp 中创建一个线程来处理来自 CGI 脚本的查询。该线程将调用 MainApp 中的接口,检索数据并将其传递给 CGI。
【问题讨论】:
【参考方案1】:我们在我们的嵌入式系统上使用Lighttpd,它很小而且很容易集成。还有专门的网络服务器,其功能特别适合嵌入,例如AppWeb,在我看来也是一个非常好的产品。
对于主应用程序和 CGI 之间的通信,您可以使用套接字或 System V 消息队列(如果它们在您的嵌入式平台上可用)。 SYSV 消息队列的优点是它们非常易于使用和管理,队列中的消息在应用程序重新启动后仍然存在,但它们也有一些怪癖(比如你不能在它们上选择())。
【讨论】:
【参考方案2】:作为 Web 服务器,另一个选择是 thttpd。我在工业产品中成功使用了它。
对于 CGI 和主应用程序套接字之间的通信是正确的选择。
【讨论】:
感谢您的回答。但我已经让 lighttpd 工作并使用了套接字。【参考方案3】:没有您必须使用的 Web 服务器,但是对于嵌入式来说,有一些比 apache 更好的选择。 Apache 是为嵌入式设计的,体积更大,速度更慢。
我不推荐 CGI。它运行缓慢,发展缓慢。我可以代表 Appweb 发言,我是其中一名开发人员。 Appweb 有两个不错的 Web 框架:
Ejscript 是 Appweb 的服务器端 javascript 框架 ESP 是一种 MVC C 语言网络农场ESP 速度极快,可轻松将控制器绑定到 URL。 Ejscript 更大,具有更广泛的类库。两者都是为嵌入式而设计的。两者都比 CGI 好得多,执行速度比 CGI 快 20 倍以上。
【讨论】:
您在回答这个问题时处于边缘,但您似乎故意在这篇文章中忽略了您是 Appweb 项目的开发人员。在发布任何进一步的答案之前,您确实需要阅读FAQ on Self-Promotion。 安德鲁,谢谢你的提示。我正在学习规则并试图更好地构建我的答案。我将添加有关成为项目开发人员的披露。【参考方案4】:我在 LuCI 工作,这是一个用于嵌入式设备的轻型 CGI。实际上它是针对openwrt的,它是一个无线路由器的开源项目。
服务器是 uhttpd ,轻巧而强大。
CGI脚本是Lua,解释器不超过10k,很精致吧?而且是C开发的,可以和C通信,功能强大。
所以这是我的建议。
【讨论】:
【参考方案5】:我们使用 JUCI 和 openwrt。它是用 javascript 编写的,在客户端浏览器上运行,并通过 json rest api 与 web 服务器通信。后端可以用任何语言实现,但我们使用用 C 语言编写的可重用组件,这些组件插入系统总线 (ubus)。这意味着相关服务通过 ubus 公开其功能,既可以通过 cli 使用,也可以通过 rest api 使用。它实际上非常好。
【讨论】:
以上是关于为嵌入式系统设计 Web 界面的主要内容,如果未能解决你的问题,请参考以下文章
20145221高其&20145326蔡馨熠《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验