【问题标题】:Open Source C embedded web server supporting SOAP / JSON-RPC based web service and compatible with ARM processor开源 C 嵌入式 Web 服务器,支持基于 SOAP/JSON-RPC 的 Web 服务并兼容 ARM 处理器
【发布时间】:2011-05-21 09:22:58
【问题描述】:

我正在做一个项目,将用 C 编写的 Web 服务器嵌入到设备中。要求是它应该支持 Web 服务(SOAP / JSON-RPC)并且应该与 ARM 处理器兼容。对具体产品有什么建议或先看哪里?

【问题讨论】:

  • 什么操作系统?您必须使用多少 RAM?对于 4MB ram + 1GB 磁盘空间(SD 卡),我已经成功使用 Debian Linux + Lighttpd。
  • @slebetman:感谢您的宝贵时间。我们计划使用 Linux 2.6x,据说设备上的 RAM 为 256 MB。它将有基于 ARM 的处理器。
  • 啊,在这种情况下,您可以使用任何您喜欢的网络服务器。 SOAP/JSON-RPC 处理实际上更像是您选择实现服务的任何编程语言和框架的功能。如果您需要低内存开销(实际上不需要 256MB),我推荐 lighttpd;如果您需要 CGI 应用程序的高吞吐量,我推荐使用 Apache2 或 Nginx。

标签: c web-services webserver arm embeddedwebserver


【解决方案1】:

根据您的描述:具有 256MB RAM 的基于 Linux 的平台,您基本上可以使用任何您喜欢的 Web 服务器。 256MB RAM 将您的设备从典型的嵌入式领域带入服务器空间。

不要太担心 ARM 支持,因为它得到了 Linux 社区的良好支持。它是 Debian 官方支持的架构之一。我自己在 ARM 上运行了几个 Web 服务器,运行 Debian 和 lighttpd,硬件只有 32MB RAM。

最受欢迎的前三名网络服务器(受欢迎程度非常重要,因为这意味着如果您有问题可以轻松地用 Google 搜索):

  • lighttpd - 由于它是单线程的,因此对 RAM 的使用非常少,而且对 CPU 的使用也非常少。缺点是如果您尝试在其上运行重量级、CPU 密集型 CGI 应用程序,它可能会响应缓慢,因为它是单线程的。

  • Apache2 - 大量使用 RAM。 Apache 的默认操作模式是尽可能长时间地保持线程处于活动状态以处理繁重的负载。这意味着大多数时候你在睡眠进程上耗尽了 RAM。但是,如果您确实需要处理重负载,这是一件好事。适合重型 CGI 应用程序。

  • Nginx - 新来的人。不像 lighttpd 或 Apache 那样有很好的文档记录(目前,显然文档随着时间的推移而改进),但人们一直在说它优于两者。它像 Apache2 一样是多线程的,但像 lighttpd 一样是非阻塞的,因此它具有两全其美的优点:它使用的 RAM 通常比 Apache2 少(尽管比 lighttpd 多),并且在负载下的性能至少与 Apache2 一样好。对我来说唯一真正的缺点是文档。

【讨论】:

    【解决方案2】:

    如果设备确实缺乏资源,请考虑使用嵌入式网络服务器库,例如 Mongoose 或 libsoup(使用 GLib)。但请注意,SOAP 和 XML 解析等服务通常占用大量资源。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多