publicidad - El mejor método para crear una aplicación de C++ para comunicarse con nginx
programa para crear aplicaciones android (4)
Necesito escribir una interfaz C ++ que pueda leer nuestra estructura de datos y proporcionar la o / p basada en la consulta mediante el protocolo http.
Necesidad del servidor
Debería poder atender a 100 clientes al mismo tiempo.
Por qué C ++
Todo el código ya está escrito en C ++. Entonces, necesitamos simplemente escribir una capa http en C ++. Es por eso que estoy eligiendo C ++ en lugar de un lenguaje de programación web más convencional.
Estoy pensando en usar nginx para servir archivos estáticos y usar su pase de proxy para comunicarse con C ++.
Hay dos enfoques que he encontrado:
Escribir un módulo FastCGI c ++.
Escriba un módulo node de node.js.
Por favor, cualquier otra sugerencia si tiene
¿Puede enumerar los pros y los contras de cada método según la experiencia previa?
Creo que seguiré adelante con el desarrollo del módulo Nginx http://www.evanmiller.org/nginx-modules-guide.html
Por qué ?
- No requiere ninguna otra dependencia de biblioteca como fastcgi y otros.
- Puedo usar todas las características de nginx dentro de mi módulo.
Lo que estás preguntando es básicamente cómo convertir el proceso c ++ que mantiene tus estructuras de datos en un servidor web. Esa podría no ser la mejor manera de hacerlo. (Por otra parte, tal vez sea en su situación. Depende de la complejidad de las interfaces del proceso de c ++ que está intentando exponer, supongo).
De todos modos, trataría de pegar un pequeño frontend http entre el proceso c ++ y los clientes que podrían hacer el trabajo http y comunicarse con el proceso backend c ++ usando algún protocolo de mensajería simple como ZeroMQ/zmq .
ZeroMQ/zmq en c / c ++ es bastante directo, y es muy eficiente y muy rápido. Al usar zmq, puede configurar rápidamente un frontend de servidor web simple en python, o el lenguaje que prefiera, que tenga enlaces zmq , y hacer que ese frontend se comunique de forma asincrónica o sincrónica con el proceso backend c ++ utilizando zmq.
Los ejemplos de c ++ y la guía son buenos puntos de partida si está buscando usar zmq.
Para Node.js también hay algunos ejemplos .
Nadie aquí parece haber abordado la cuestión real, aunque se han ofrecido algunas buenas soluciones. He podido construir módulos C ++ para nginx con un par de cambios menores.
- Cambia el nombre del archivo fuente del módulo para terminar con .cpp, por lo que gcc se da cuenta de que se trata de C ++.
- Asegúrese de que todo su nginx incluye (por ejemplo, ngx_config.h, ngx_core.h, etc.) están envueltos con una estructura externa "C" {}. Del mismo modo, asegúrese de que todas las funciones llamadas a través de punteros de función nginx se declaren con un contenedor.
- Agregue --with-ld-opt = "- lstdc ++" a su invocación de "configuración" al configurar nginx.
Con esos tres pasos, su módulo debería compilar, construir, vincular y, de hecho, funcionar.
Pruebe G-WAN, le permite usar su aplicación de C ++ directamente.