使用C ++ / Qt4应用程序作为Web应用程序的后端

时间:2010-02-18 08:52:05

标签: c++ ajax web-services qt4 backend

对于我的一个应用程序,我想提供一个最小的Web界面。此核心应用程序是用C ++编写的,并使用Qt4作为框架。由于我还使用了一些我编写的库来计算一些东西并进行一些复杂的数据管理,所以我想将这个现有的代码用作Web界面的后端。

创意1:使用嵌入式网络服务器

我尝试的第一件事(在某种程度上有效)是使用嵌入式Web服务器(mongoose)。你可以想象,它只是一个非常薄的库,你必须自己实现很多东西(比如会话管理,cookie等)。

创意2:使用普通网络服务器并在我的应用程序中添加fcgi / cgi / scgi后端

接下来我想到的是使用成熟但紧凑的Web服务器(例如,lighttpd)并简单地为它提供fcgi / scgi / cgi后端。我可以使用一个好的框架编写Web应用程序,如Pylons,PHP或RoR,(...),只需要一个URL前缀,如/a/...,它允许我直接与后端通信。

我尝试将libfcgi实现到我的应用程序中,但它看起来比需要的更麻烦(例如,您必须实现自己的TCP / IP套接字以在您的应用程序和Web服务器之间传递数据并将其通过FCGI图书馆,meh)

想法3:创建我的应用程序的命令行版本,它执行最基本的操作并使用普通的Web服务器和框架来完成其余的工作

这是我想到的第三个想法。它基本上是使用传统方式(PHP,RoR等)创建Web应用程序,并使用我的应用程序的命令行版本来处理数据并在需要时返回它。


我在创建Web应用程序方面有一些经验,但我从来没有做过这样的事情,所以我想听听一些想法或建议。我想在浏览器上使用JavaScript(即AJAX),并在Web浏览器和服务器之间传递一些JSON结构,以使用户体验更顺畅。

那你有什么建议,想法呢?老实说,我不想重新发明轮子。

5 个答案:

答案 0 :(得分:4)

我永远不会将自定义编写的应用程序作为前端暴露给网络,因为像apache或lighthttp这样的服务器是构建的。他们为您提供了一些严肃的安全保障。

至于您的应用程序与该网络服务器的交互,它取决于负载以及您使用PHP,python或Web服务器支持的其他语言(当然通过解释器)编写软件的经验。 / p>

轻微的负载,以及从PHP访问的命令行工具可能做得非常好。

负载更重,你可能希望用Qt实现一个简单的(SOAP?)服务器,并从python(或php)脚本访问它。

这样您就不需要在应用程序中进行布局,也不需要实现安全性。

答案 1 :(得分:3)

我目前正在研究类似的情况(使用Qt定制Web应用后端),最不好的选择是FastCGI。找到了你可能感兴趣的东西。没有经过严格的测试就没有准备就绪,但这可能是Qt-FastCGI互操作的一个很好的起点:FastCGIQt

答案 2 :(得分:2)

我已将FastCGI Protocol Driver library用于类似项目(也是Qt应用程序),下载链接位于该页面的末尾[Libfastcgi]。与应用程序的集成实际上相对容易。 Lighttpd + mod_fastcgi用作Web服务器。但不能说FastCGIQt。

答案 3 :(得分:0)

Wt可以很好地为基于Qt的应用程序提供Web界面。两者都有类似的编程风格,并且有一个示例演示了与Qt的集成。

答案 4 :(得分:0)

以下是嵌入式QML服务器的示例:https://github.com/ncp1402/ql-server