【问题标题】:Are there any web frameworks for compiled languages like C++? [closed]是否有任何用于编译语言(如 C++)的 Web 框架? [关闭]
【发布时间】:2010-10-03 13:46:36
【问题描述】:

在我们的嵌入式设备上,我们目前使用 PHP 作为其 Web 界面,不幸的是它非常慢。我们一直在尝试使用 Python,但它似乎(至少在无 FPU 的 ARM 架构上)和 PHP 一样慢。

因此,我们正在考虑用 C++ 之类的编译语言实现 Web 界面,但到目前为止,我们发现的唯一东西是 Wt,它看起来更像桌面而不是 Web 框架,而且它的文档对于一个初学者。

所以我的问题是:你知道有什么好的 C/C++ 网络框架吗?让我非常高兴的是像 C++ Django 这样的东西,但我怀疑这样的东西是否存在 :-)

【问题讨论】:

  • 你在 C++ 中做过很多字符串处理吗?由于 Web 编程需要大量的字符串处理,这将是一个真正的痛苦。这就是为什么要创建 PERL 和 PHP 以及其他内容,因为它们非常擅长 Web 编程所需的类型,而 C++ 则不然。
  • 我用 C++ 做了很多文本处理。只需使用好的库(Boost 字符串算法,正则表达式,...),一切都会好起来的。
  • 嘿,我一直在不知疲倦地解决这个问题 github.com/corvusoft/restbed。我希望看到社区发展壮大。

标签: c++ frameworks embedded


【解决方案1】:

试试Lua。 LuaForge 的某处有 Xavante 嵌入式 Web 服务器。

它非常快、非常小并且非常可扩展——就像 lua 一样。

您可以在脚本更适合的地方使用 Lua,并在需要更快速度和与现有本机代码连接的地方使用 C++ 函数。

【讨论】:

    【解决方案2】:

    您的网站在 PHP 中运行缓慢的原因是什么?您是否分析了代码以找出瓶颈?用另一种语言替换整个代码库可能对这项工作来说太大了。

    也许如果某些部分是计算密集型的,那么也许您可以在 C++ 中实现一个 PHP 模块来完成这项工作。

    【讨论】:

    • 据我所知,大多数延迟是由包含生成最终页面各种组件的类的文件引起的。
    • 你确定吗?即使是复杂的 PHP 框架,在包含其复杂的文件网络时也只有几毫秒的延迟,如果您使用的是无框架的 PHP,那么它可能会更少。
    • 在我们轻度加载的 XScale 框中,包括内容和创建对象需要 0.75 到 1.7 秒。
    • 我很好奇您为什么要为 PHP Web 应用程序服务器使用最小处理器。这是移动设备吗?
    • 它不是袖珍型的。关键问题是硬件成本。
    【解决方案3】:

    您真的需要一个 Web 框架还是只需要一个 html 模板库?
    有关模板选项,请参见此处:C++ HTML template framework, templatizing library, HTML generator library

    【讨论】:

    • 感谢您的链接,模板当然很有帮助,但是有一些可以分派请求并为 HTTP 请求和响应提供良好 API 的东西也很好。
    • 我想如果你在嵌入式世界里,你可能想要一些轻便的东西
    【解决方案4】:

    Nanogear 怎么样。我没用过,不知道合不合适。这是来自网站的报价。

    C++ 是一个伟大的通用目的 编程语言,但没有现代, 易于使用且功能强大的 C++ Web 在这些过程中制定了框架 年。我们试图填补空白 纳米齿轮。灵感来自 Zend 我们想要带来的框架和 Rails C++ 到网络,很容易。

    这里是旧 googlecode 网站的链接Google Code Nanogear 看起来那里有更多信息。

    【讨论】:

    • Nono-gear 主要是项目的“草稿”。它包含很少的代码
    • 好像没有更新了:/
    【解决方案5】:

    既然没有人说过,我会的。试试 Java。 Java 是一种具有良好 Web 框架的编译语言。它也非常可扩展。我参与的每个合作都使用 java 作为其主要的 Web 技术,这主要是由于这种可伸缩性因素。不确定它是否适用于您的架构,但它回答了这个问题:

    是否有任何适用于编译语言的网络框架如 C++?

    【讨论】:

    • Java 几乎不是一种编译语言。它编译为字节码,然后 JVM 解释(或者可能是 JIT)它。
    • 代码优化后,java 的性能与 C++ 几乎是 1:1。虽然字节码确实不是真正的本机代码编译性能是这里的重点。
    • 除非使用非常昂贵的开发工具,否则 java 在这些 ARM 处理器上会非常慢。 afaik 没有可用的字节编译 JVM(即便如此,我预计该架构上的字节编译也会非常慢)。
    • 主要取决于 Jazelle 的可用性(ARM 上 Java 的硬件加速)
    【解决方案6】:

    你可以看看CppCMS。我不知道它有多成熟或有多好,但它听起来像你想要的。

    另一种选择是用 Python/PHP 编写主应用程序,然后用 C 重写关键部分,这对我来说似乎更理智。

    【讨论】:

      【解决方案7】:

      这里需要注意的一点是,将 C++ 用于某种 Web 服务,而不是实际的 Web 应用程序开发环境。在我当前的一个项目中,我们生成 JSON(并解析请求)然后让客户端(Web 浏览器)处理其余的。您在客户端机器上拥有大量可用的计算能力,混合一些 javascripty 魔法和繁荣,现在您的嵌入式设备可以回到它应该做的事情。我个人有点喜欢 Wt,如果你想用 C++ 开发整个“网络应用程序”,我认为这是你最好的选择。

      关于如何让你的 C++ 代码开始提供 Web 服务的具体细节,你可以使用令人惊叹的 boost.asio 库(他们有一个 http 服务器示例)和 json_spirit(我认为它在 codeproject 上)

      【讨论】:

        【解决方案8】:

        如果我是你,我会尝试Wt。我认为您不会找到另一种像 Wt 那样完整且易于使用且性能相似的解决方案。邮件列表处于活动状态,并且定期发布在嵌入式设备上使用它的人的帖子。该项目的 Wiki (here) 提到了 ARM 上的嵌入式部署和性能的一些数字。

        【讨论】:

        • 这个被接受的答案已经很老了。 Cppcms 在当时是一个很好的选择,从那时起已经走了很长一段路。看看:cppcms.com
        • 优秀 :-) 幸运的是 Wt 也在不断发展:WebSockets、WebGL 3D、HTML5 视频、服务器推送、客户端 SSL 证书……
        【解决方案9】:

        我刚刚看到此链接作为 CppCMS 的引荐来源网址。关于它的几个问题/答案。

        问。成熟度如何?
        A. 有一个 100% 基于它的 Wiki。开发者博客也在 CppCMS 上运行。所以你可以看到它非常有效。 好吧。至少对于作者而言。
        问:“像 C++ Django 这样的东西会让我非常高兴”
        A. 实际上是“C++ Django”。许多想法直接取自 Django,比如 表单,模板继承等等。所以你可能会有宾至如归的感觉
        Q. Nanogear
        A. 我看过了...它有很多计划但没有太多代码。
        Q. 有多少项目在使用它。
        答:不多。这是一个相当新的项目。
        问:我是谁?
        A. 老实说,我是 CppCMS 的开发者。

        【讨论】:

        【解决方案10】:

        您可以尝试embedded version 或CppCMS。

        这是相当新的实验性开发,但看起来确实如此 比 Wt 更合适,因为它是面向 Web 的(更接近 Django) 而不是 GUI 之类的。

        【讨论】:

          【解决方案11】:

          查看 ffead c++ 应用程序框架 (http://code.google.com/p/ffead-cpp/),它是基于 Spring for JAVA 开发的。

          【讨论】:

            【解决方案12】:

            你可以看看Tntnet。它使用自己的模板语言,看起来有点像 PHP,只是有更多的附加标签。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2010-09-20
              • 1970-01-01
              • 1970-01-01
              • 2016-04-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多