2010-02-18 12 views
8

para una de mis aplicaciones Me gustaría proporcionar una interfaz web mínima. Esta aplicación core está escrita en C++ y utiliza Qt4 como marco. Dado que también estoy utilizando algunas bibliotecas que escribí para calcular algunas cosas y hacer una gestión de datos compleja, me gustaría utilizar este código existente como backend para la interfaz web.Usando la aplicación C++/Qt4 como back-end para la aplicación web

Idea 1: Uso de un servidor web incorporado

La primera cosa que probé (y que funcionó hasta cierto punto) fue el uso de un servidor web incorporado (mongoose). Como se puede imaginar, es solo una biblioteca muy delgada y usted tiene que implementar muchas cosas usted mismo (como administración de sesiones, cookies, etc.).

Idea 2: El uso de un servidor web normal y la adición de un backend fcgi/cgi/scgi a mi solicitud

La siguiente cosa que me vino a la cabeza fue el uso de un servidor web para adultos pero compacto (por ejemplo, lighttpd) y simple proporcionan un backend fcgi/scgi/cgi. Podría escribir la aplicación web usando un buen marco, como Pylons, PHP o RoR, (...) y simplemente tener un prefijo de URL, como /a/..., que me permite hablar directamente con el servidor.

Intenté implementar el libfcgi en mi aplicación, pero parece más desordenado de lo necesario (por ejemplo, tendría que implementar sus propios zócalos TCP/IP para pasar datos entre su aplicación y el servidor web y hacer un túnel la biblioteca FCGI, mEH)

idea 3: Creación de una línea de comando versión de mi aplicación que hace las cosas más básicas y usar un servidor web normal y marco para hacer el resto

Ésta es la tercera idea eso vino a mi cabeza. Básicamente se trata de crear una aplicación web de una manera tradicional (PHP, RoR, etc.) y usar una versión de línea de comando de mi aplicación para procesar datos y devolverlos cuando sea necesario.


Tengo un poco de experiencia con la creación de aplicaciones web, pero nunca he tenido que hacer algo como esto, así que me gustaría escuchar algunas ideas o sugerencias. Me gustaría utilizar JavaScript en los navegadores (es decir, AJAX) y pasar algunas construcciones JSON entre el navegador web y el servidor para que la experiencia del usuario sea un poco más fluida.

¿Cuáles son sus sugerencias, ideas sobre esto? No quiero reinventar la rueda, sinceramente.

Respuesta

4

Nunca exponer una aplicación escrita a la red como front-end, para que los servidores como apache o lighthttp sean compilados. Le brindan seguridad seria de manera inmediata.

En cuanto a la interacción de su aplicación con ese servidor web, depende un poco de la carga y el tipo de experiencia que tenga al escribir software en PHP, python u otros idiomas soportados por su servidor web (a través de un intérprete).

Una carga ligera, y una herramienta de línea de comandos accedida desde PHP podría funcionar perfectamente.

Una carga más pesada y es posible que desee implementar un servidor simple (SOAP?) Con Qt y acceder desde un script de python (o php).

De esta manera no necesita hacer diseño en su aplicación, y tampoco necesita implementar mucho la seguridad.

+0

Sinceramente, no quiero hacer cualquier cosa relacionada con el diseño en mi solicitud (ya que es lo clases de plantilla y tales son para). Solo quiero intercambiar información esencial entre el servidor web y mi aplicación central y usar tecnología más estable y segura para hacer el resto. Nunca miré a SOAP, voy a leer un poco más sobre eso. – BastiBen

3

Actualmente estoy investigando una situación similar (backend de aplicaciones web personalizadas usando Qt), y la opción menos mala es FastCGI. Encontrado algo que podría estar interesado en No listo para producción sin alguna prueba seria, pero esto podría ser un buen punto de partida para Qt - FastCGI interoperabilidad:. FastCGIQt

+0

Miré en FastCGI, pero la biblioteca "oficial" C/C++ es un verdadero desastre. Tal vez me perdí algo, pero la mayoría de los servidores web se conectan a las aplicaciones fastcgi usando TCP/IP; aunque la biblioteca official fastcgi no proporciona ningún soporte TCP/IP ...? – BastiBen

2

He utilizado el FastCGI Protocol Driver library para un proyecto similar (también una aplicación Qt), el enlace de descarga se encuentra al final de esa página [Libfastcgi]. La integración con la aplicación resultó en realidad relativamente fácil. Lighttpd + mod_fastcgi se usó como servidor web. Sin embargo, no puedo decir nada sobre FastCGIQt.

0

Usted Wt funciona bien para proporcionar una interfaz web para aplicaciones basadas en Qt. Ambos tienen un estilo de programación similar, y hay un ejemplo que demuestra la integración con Qt.

Cuestiones relacionadas