2009-01-26 10 views
16

En nuestro dispositivo integrado, actualmente usamos PHP para su interfaz web, y desafortunadamente es bastante lento. Hemos estado experimentando con Python, pero parece (al menos en una arquitectura ARM sin FPU) ser tan lento como PHP.¿Hay marcos web para lenguajes compilados como C++?

Por lo tanto, estamos pensando en implementar la interfaz web en algún lenguaje compilado como C++, pero hasta ahora lo único que hemos encontrado es Wt, que se parece más al escritorio que a la web y su documentación es bastante complicada para un principiante .

Así que mi pregunta es: ¿conoces algún buen framework web para C/C++? Lo que me haría totalmente feliz sería algo así como C++ Django, pero dudo que tal cosa exista :-)

+2

¿Has hecho mucho procesamiento de cadenas en C++? Dado que la programación web es tanto procesamiento de cadenas, sería un verdadero dolor. Esto es POR QUÉ PERL y PHP y el resto fueron creados, porque son realmente buenos en cuanto a los tipos de cosas que la programación web necesita, y C++ simplemente no lo es. – Adam

+5

He realizado una gran cantidad de procesamiento de texto con C++. Solo use buenas bibliotecas (Boost string algo, regex, ...) y todo estará bien. –

+0

Oye, he estado trabajando incansablemente en este problema github.com/corvusoft/restbed. Me encantaría ver crecer a la comunidad. – Corvusoft

Respuesta

10

Si yo fuera usted, le daría una oportunidad al Wt. No creo que encuentre otra solución tan completa y fácil de usar como Wt con un rendimiento similar. La lista de correo está activa y tiene publicaciones regulares de personas que la usan en dispositivos integrados. El Wiki (here) del proyecto menciona algunos números para implementación integrada y rendimiento en ARM.

+1

Esta respuesta aceptada es bastante antigua. Cppcms, que era una muy buena alternativa, ha recorrido un largo camino desde entonces. Échale un vistazo: http://cppcms.com/ – augustin

+1

Excelente :-) Afortunadamente, Wt sigue evolucionando: WebSockets, WebGL 3D, video HTML5, inserción de servidor, certificados SSL del cliente, ... – user52875

2

Pruebe Lua. Hay un servidor web embebido de Xavante en algún lugar en LuaForge.

Es muy rápido, muy pequeño y muy extensible, como todo sobre lua.

Tiene la capacidad de usar Lua donde las secuencias de comandos se ajustan a betteer, y usan funciones de C++ donde necesitan más velocidad y conexión con el código nativo existente.

11

¿Cuál es la razón por la cual su sitio es lento en PHP? ¿Ha perfilado el código para descubrir los cuellos de botella? Reemplazar toda la base de código con otro idioma probablemente sea una herramienta demasiado grande para el trabajo.

Tal vez si alguna parte es computacionalmente intensiva, entonces tal vez pueda implementar un módulo PHP en C++ para hacer el trabajo.

+0

Hasta donde yo sé, la mayoría de los retrasos son causados ​​por la inclusión de archivos con clases que generan varios componentes de la página final. – che

+0

¿Estás seguro? Incluso los frameworks PHP complejos solo tienen un retraso de unos pocos MS al incluir su compleja red de archivos, y si está utilizando un PHP sin marcos, es probable que sea aún menor. – ryeguy

+0

En nuestra caja XScale ligeramente cargada, incluir cosas y crear objetos lleva entre 0,75 y 1,7 segundos. – che

6

¿Realmente necesita un marco web o simplemente una biblioteca de plantillas html?
Consulte aquí para opciones de plantilla: C++ HTML template framework, templatizing library, HTML generator library

+0

Gracias por el enlace, las plantillas son ciertamente útiles, pero tener algo que despache las solicitudes y proporcione una buena API para las solicitudes HTTP y resuelva también sería bueno. – che

+0

Pensé que si estuvieras en el mundo integrado querrías algo ligero –

3

¿Qué tal Nanogear. No lo he usado, así que no estoy seguro de si encaja bien. Aquí hay una cita del sitio web.

C++ es un grande, de propósito general lenguaje de programación, pero no hay modernos web marcos, fácil de usar y potente C++ se hicieron durante estos años . Tratamos de llenar el vacío con Nanogear. Inspirado por el Zend Framework and Rails, queremos traer C++ a la web, fácilmente.

Aquí hay un enlace al sitio anterior googlecode Google Code Nanogear Parece que hay más información allí.

+2

Nono-gear es en su mayoría "borrador" del proyecto. Incluye muy pocos códigos – Artyom

+1

Parece que no se actualiza más:/ – Klaim

+2

Parece muerto ahora. –

1

Como nadie más lo ha dicho, lo haré. Prueba Java. Java es un lenguaje compilado con un buen marco web. También es muy escalable. Cada colaboración para la que he trabajado usa Java como su principal tecnología web, y esto se debe principalmente a este factor de escalabilidad. No estoy seguro si funcionará con su arquitectura, pero responde la pregunta:

¿Hay algún marco web para los lenguajes compilados como C++?

+0

Java apenas es un lenguaje compilado. Compila el código de bytes, y luego la JVM lo interpreta (o tal vez los JIT). –

+0

El rendimiento de Java es casi 1: 1 con C++ una vez que el código se ha optimizado. Si bien es cierto que bytecode no es cierto el rendimiento de compilación de código nativo fue el punto importante aquí. – Alex

+0

A menos que se utilicen herramientas de desarrollo muy costosas, Java será muy lento en estos procesadores ARM. No hay JVM compiladas en byte disponibles afaik (y aun así, espero que la compilación de bytes en esa arquitectura también sea muy lenta). – user52875

10

Puede echar un vistazo a CppCMS. No sé qué tan maduro o bueno es, pero suena como lo que estás buscando.

Otra opción es escribir la aplicación principal en Python/PHP y luego reescribir las partes críticas en C, lo que me parece más sensato.

+1

+1 para cppcms. a. – augustin

4

Una cosa a tener en cuenta aquí es usar C++ para algún tipo de servicio web en lugar de un entorno de desarrollo de aplicaciones web reales. En uno de mis proyectos actuales generamos JSON (y analizamos las solicitudes) y luego dejamos que el cliente (navegador web) se encargue del resto. Usted tiene una gran cantidad de poder de cómputo disponible para usted en la máquina cliente, mezcla algo de magia oculta y auge, ahora su dispositivo integrado puede volver a hacer lo que se supone que debe hacer. Personalmente me gusta Wt y creo que es tu mejor apuesta si quieres desarrollar toda la "aplicación web" en C++.

En cuanto a los detalles de cómo obtener su código C++ para empezar a servir a los servicios web, puede utilizar la biblioteca boost.asio increíble (tienen un ejemplo de servidor http) y json_spirit (creo que es el CodeProject)

7

Acabo de ver este enlace como referencia en CppCMS. Varias preguntas/respuestas al respecto.

P. ¿Cómo es maduro?
A. Hay un Wiki 100% basado en él. El blog de desarrolladores también se ejecuta en CppCMS. Entonces puedes ver que funciona bastante. bien. Al menos para el autor.
P. "Lo que me haría totalmente feliz sería algo así como C++ Django"
A. En realidad es "C++ Django". Muchas Ideas se tomaron directamente de Django, como los formularios , la herencia de plantillas y algunos más. Entonces probablemente se sienta como en casa
Q. Nanogear
A. He echado un vistazo ... Tiene muchos planes pero no demasiado código.
P. Cuántos proyectos lo usan.
A. No muchos. Es un proyecto bastante nuevo.
P. ¿Quién soy?
A. Para ser honesto, soy el desarrollador de CppCMS.

+0

No puedo obtener el sitio para cargar :( – crashmstr

+1

intente esto http://cppcms.sourceforge.net/ – Artyom

1

Puede probar embedded version de CppCMS.

Es un desarrollo bastante nuevo y experimental pero parece que es mucho más adecuado que Wt porque está orientado a la web de mineral (más cerca de Django) y no como GUI.

1

Puedes echar un vistazo a Tntnet. Utiliza su propio lenguaje de plantilla que se parece un poco a PHP, solo que con muchas más etiquetas adicionales.

Cuestiones relacionadas