6

操作系统:Linux。

我正在尝试寻找可能的方法来为我的嵌入式系统实现 Web 界面。目前有一个外壳(基于文本)和一小组命令用于查询设备。

我是网络开发新手,我的问题是:

  1. 我必须使用什么网络服务器?(我在我的开发设置中安装了 apache 并尝试使用 CGI 来获取一些页面,但这似乎不是嵌入式系统的正确选择)

  2. 假设我使用的是 CGI,可以使用什么策略在 CGI 和主应用程序之间传递数据?我打算在 MainApp 中创建一个线程来处理来自 CGI 脚本的查询。该线程将调用 MainApp 中的接口,检索数据并将其传递给 CGI。

4

5 回答 5

9

我们在嵌入式系统上使用Lighttpd,它体积小且易于集成。还有一些专门的网络服务器,其功能特别适合嵌入,比如AppWeb,在我看来这也是一个非常好的产品。

对于主应用程序和 CGI​​ 之间的通信,您可以使用套接字或 System V 消息队列(如果它们在您的嵌入式平台上可用)。SYSV 消息队列的优点是它们非常易于使用和管理,并且队列中的消息在应用程序重新启动后仍然存在,但它们也有一些怪癖(比如你不能在它们上选择())。

于 2009-12-31T09:54:54.983 回答
4

作为 Web 服务器,另一个选择是thttpd。我在工业产品中成功使用了它。

对于 CGI 和主应用程序套接字之间的通信是正确的选择。

于 2010-01-02T01:03:22.357 回答
0

没有您必须使用的 Web 服务器,但是对于嵌入式来说,有一些比 apache 更好的选择。Apache 是为嵌入式而设计的,而且更大更慢。

我不会推荐 CGI。它运行缓慢,发展缓慢。我可以代表 Appweb 发言,我是其中一名开发人员。Appweb 有两个很好的 Web 框架:

  • Ejscript 是 Appweb 的服务器端 Javascript 框架
  • ESP,它是一个 MVC C 语言网络农场

ESP 速度非常快,并且可以轻松地将控制器绑定到 URL。Ejscript 更大,具有更广泛的类库。两者都是为嵌入式而设计的。两者都比 CGI 好得多,并且执行速度比 CGI 快 20 倍以上。

于 2012-11-29T00:42:51.777 回答
0

我在 LuCI 工作,这是一个用于嵌入式设备的轻型 CGI。实际上它是针对openwrt的,它是一个无线路由器的开源项目。

服务器是 uhttpd ,轻巧而强大。

CGI脚本是Lua,解释器不超过10k,很精致吧?而且它是用C开发的,可以和C通信,功能强大。

所以这是我的建议。

于 2015-01-29T05:57:36.893 回答
0

我们使用 JUCI 和 openwrt。它是用 javascript 编写的,在客户端浏览器上运行,并通过 json rest api 与 web 服务器进行通信。后端可以用任何语言实现,但我们使用用 C 语言编写的可重用组件,这些组件插入系统总线 (ubus)。这意味着相关服务通过 ubus 公开其功能,既可以通过 cli 使用,也可以通过 rest api 使用。它实际上非常好。

于 2015-06-24T12:41:15.133 回答