最好的方法来创build一个C + +应用程序与nginx沟通

我需要编写一个C ++接口,它可以读取我们的数据结构,并使用http协议提供基于查询的o / p。

服务器需求
它应该能够同时服务100个客户。

为什么selectC ++
所有代码已经用C ++编写。 所以我们只需要用C ++编写一个http层。 这就是为什么我selectC ++而不是更传统的Web编程语言。

我正在考虑使用nginx来提供静态文件,并使用它的代理传递与C ++进行通信。

我发现有两种方法:

  • 编写一个FastCGI c ++模块。

  • 编写一个node.js c ++模块。

  • 如果你有任何其他build议,请

你能否根据以前的经验列出每种方法的优点和缺点?

这里没有人似乎已经解决了实际问题,虽然提供了一些不错的工作。 我已经能够为nginx构建C ++模块,并做了一些小改动。

  1. 将模块源文件名更改为以.cpp结尾,以便gcc实现它处理C ++。
  2. 确保你所有的nginx包含(例如ngx_config.h,ngx_core.h等等)都包含一个extern“C”{}结构。 同样,确保通过nginx函数指针调用的任何函数都是用包装器声明的。
  3. 在设置nginx时将–with-ld-opt =“ – lstdc ++”添加到你的“配置”调用中。

通过这三个步骤,您的模块应该能够编译,构建,链接并实际工作。

你所要求的基本上是如何把持有你的数据结构的c ++过程变成一个web服务器。 这可能不是最好的办法。 (然后,也许这是你的情况,这取决于你想暴露的c ++过程接口的复杂性。)

无论如何,我会尝试在c ++进程和可以执行http工作并使用一些简单的消息协议(如ZeroMQ / zmq)与c ++后端进程进行通信的客户端之间插入一个小的http前端。

在C / C + +的ZMQ是相当直接的,它非常有效和非常快。 使用zmq,你可以非常快速地在Python中设置一个简单的web服务器前端,或者你喜欢的任何具有zmq绑定的语言,并且使用zmq ,该前端与后端c ++进程异步通信或者同步通信。

如果你正在研究使用zmq,那么c ++的例子和指南是很好的起点。

对于Node.js也有一些例子 。

我想我会继续与Nginx的模块开发http://www.evanmiller.org/nginx-modules-guide.html

为什么?

  1. 它不需要像fastcgi和其他库的其他依赖项。
  2. 我可以在模块中使用nginx的所有功能。

尝试G-WAN

你可以直接使用你的c ++应用程序,并且G-WAN速度比nginx快。