¿Hay algún inconveniente conceptual para crear una aplicación web con C ++ y MySQL?

10

Heredé un proyecto bastante interesante en el que hay una buena oportunidad para tomar un software existente y convertirlo en una aplicación web SaaS. A medida que se hereda el proyecto, el código base / framework ya está definido como C ++ y MySQL. La aplicación en sí se compila y se ejecuta como un EXE en Windows Server. La interfaz de usuario está basada en la web y la aplicación funciona como una especie de servidor. Por lo que sé de las aplicaciones web modernas, esta es quizás una opción inusual. En estos días, la mayoría de las personas parecen optar por un framework PHP o Ruby on Rails. Ciertamente esa es la impresión que obtengo al leer blogs sobre el tema. Entonces, estoy muy interesado en saber si un EXE C ++ respaldado por MySQL es una base sólida para una aplicación web, o si deberíamos buscar construir de otra manera.

jnthnclrk
fuente
Lo que describe suena más como un proceso de servidor y no como una aplicación web. Y para los procesos del servidor, PHP o RoR son ciertamente elecciones inusuales. ¿Qué tipo de problema tienes realmente?
Benjamin Bannier
¿El exe quizás usa el nuevo Hostable Web Core ( awesomeideas.net/page/IIS7-Hostable-WebCore.aspx ) o implementa realmente su propio servidor HTTP desde cero? Si lo primero, entonces tal vez realmente estaban tratando de hacer una aplicación muy rápida usando C ++ y autohospedando para la portabilidad a las máquinas cliente ...
Jimmy Hoffa
Por supuesto, cualquier persona en su sano juicio usaría algo como Net :: HTTPServer de POCO en lugar de escribir un servidor HTTP desde cero. Pero no es como RoR o, por ejemplo, los frameworks de Python no incluyen algunos servidores web.
Benjamin Bannier
44
No es inusual tener c ++ como back-end de una aplicación web. La búsqueda de Google está escrita en c ++. Muchas de las aplicaciones de yahoo son c ++. Casi todas las aplicaciones web AAA utilizadas por millones de personas están escritas en c ++.
Lord Tydus
Sí, la aplicación fue diseñada como un servidor web personalizado. Entonces, el lado de la aplicación web proviene de la interfaz de usuario y el conjunto de funciones del administrador HTML.
jnthnclrk

Respuestas:

20

Está bien hacer una aplicación web usando C ++ SI los beneficios superan el costo, obviamente. Google, Amazon, Facebook están construidos con C ++ para la eficiencia en velocidad, memoria y energía, también conocidos como costos de servidores.

Sin embargo, como adivinó, hay inconvenientes en el uso de C ++ para esto. Sin embargo, depende de tus herramientas.

Primero déjame citar el sitio web de cppcms sobre esto:

Cuándo se debe usar CppCMS

El lenguaje C ++ está lejos de ser popular para el desarrollo web por muchas razones: falta de herramientas apropiadas, habilidades de los desarrolladores y muchas más.

Sin embargo, hay áreas donde la programación web C ++ con CppCMS se vuelve muy útil y eficiente, y algunas son solo una pérdida de tiempo.

¿Cuándo se debe o se puede usar CppCMS?

1.Sitios web y aplicaciones de alta carga con cientos y miles de visitas por segundo, donde se requiere alto rendimiento, eficiencia y escalabilidad.

2.Aplicación que requiere tecnologías escalables Comet / Server Push --- CppCMS puede manejar eficientemente cientos y miles de conexiones HTTP simultáneas con un uso mínimo de recursos.

3.Incrustar la interfaz web en aplicaciones / servicios C ++ existentes con un pequeño costo de biblioteca adicional.

4.Dispositivos integrados de baja potencia: CppCMS permite la creación de aplicaciones ricas con un costo relativamente bajo de hardware que funcionaría razonablemente rápido.

¿Cuándo no usar?

Si crea pequeñas aplicaciones web que no requieren grandes cargas y requieren un período de comercialización muy corto, probablemente herramientas como Django o RoR serían más apropiadas para tales tareas.

Los inconvenientes específicos de C ++ son:

  • Los tiempos de compilación pueden ser muy muy muy lentos en comparación con otros idiomas. Esto podría afectar las iteraciones, el intervalo de lanzamiento, pero también la moral del desarrollador. Asegúrate de que valga la pena.
  • La mayoría de las veces, necesita compilar los cambios. Se puede evitar pero es lo habitual.
  • Escribir C ++ moderno lo hace fácil (aprender, leer, escribir, depurar, etc.), pero muchos desarrolladores de C ++ no saben qué es C ++ moderno. Entonces, si trabaja en equipo, debe tener un buen conocimiento de Modern C ++ de todo el equipo. De lo contrario, se encontrará fácilmente con errores muy complicados. Dicho esto, es más un problema de personas que un problema de idioma. Es solo que el historial de C ++ no ayudó a facilitar su comprensión. La buena enseñanza no es tan común como en los idiomas más modernos (históricamente).
  • Unicode todavía es poco compatible con el lenguaje central C ++, lo que lo convierte en una fuente potencial de gran dolor. Simplemente use UTF-8 en todas partes y algunas bibliotecas (busque en boost) para administrarlo.
  • El estándar C ++ no sabe qué es una biblioteca. Por lo tanto, utilizamos formas convencionales para administrarlos en diferentes compiladores / enlazadores / SO. Esto podría ser un problema si comienza a entrar en código multiplataforma que necesita cargar / descargar "sobre la marcha" algunos módulos.

Tal vez echar un vistazo a CPPCMS? ¿O tal vez wt si quieres hacer un sitio web estilo GUI?

También revise estas preguntas:

Klaim
fuente
3
Tengo entendido que Facebook está programado en PHP, pero también construyeron su propio compilador nativo para PHP en C ++ para Linux. La razón principal por la que Facebook desarrolló el compilador fue para reducir sus costos eléctricos para los servidores operativos. No era realmente velocidad (es más rápido) sino el hecho de que requiere menos uso de CPU por solicitud. Es un proyecto de código abierto que se puede encontrar aquí. developers.facebook.com/blog/post/2010/02/02/…
Reactgular
1
Sí, las razones varían, por eso mencioné el costo de la energía y los servidores. Dicho esto, Alexandrescu dijo recientemente en una entrevista, creo, que cada vez más código de Facebook está escrito directamente en C ++, pero no mencionó por qué, si mi memoria es correcta. También proporcionan una biblioteca de código abierto llena de utilidades / algoritmos de C ++: Folly facebook.com/notes/facebook-engineering/…
Klaim
También tenga en cuenta que incluso si el código se escribe primero en PHP y luego se convierte a C ++, 3 de los inconvenientes que señalé siguen siendo ciertos.
Klaim
2
Otro marco web C ++: wt (ingenioso). Es para personas que desean crear aplicaciones web que funcionen como aplicaciones de escritorio bajo el capó. Para portar, es una buena opción.
K.Steff
Creo que todos esos sitios tienen componentes escritos en varios idiomas. C ++ se usa muy probablemente como una optimización para secciones de código que requieren una administración de memoria ajustada.
Jiggy
3

Wordpress que se ejecuta en PHP con algunos complementos instalados pone de rodillas a mi servidor Winders. Así que no tengo ningún problema con la idea de implementar una aplicación web en C ++. La velocidad es una parte crítica de la experiencia web.

Carpas de diseño gráfico para impulsar la mayoría de los proyectos web. PHP es un lenguaje de script oscuro que se ejecuta dentro de HTML. Permitir que los autores de PHP escapen dentro y fuera de HTML. Como resultado, existen muchos beneficios al trabajar con HTML.

Aún así, podría implementar cualquier cantidad de soluciones de plantillas HTML en C ++.

Uno podría proporcionarle una larga lista de marcos de trabajo de Python y PHP que permiten un desarrollo rápido, pero si tiene mucho tiempo, entonces C ++ es definitivamente posible.

Lo que no entiendo es su decisión de hacer C ++ en Windows. jajaja

Reactgular
fuente
1
Argumento clásico del hombre de paja, hay muchas mejores alternativas rápidas a wordpress / php que no son C ++. No digo que C ++ no sea una opción relevante, solo su argumento no está realmente enmarcado muy bien.
Jimmy Hoffa
Estoy de acuerdo contigo. No creo que intentara hacer de WordPress una alternativa. Es solo que mi experiencia ha sido últimamente, ya que es difícil obtener un buen rendimiento de los marcos populares.
Reactgular
1
StackExchange se ejecuta en el marco ASP.NET MVC. Node.Js es de bajo peso y alto rendimiento y si realmente quieres algo ridículamente bueno , existen los marcos Snap o Yesod Haskell yesodweb.com/blog/2011/03/… , Haskell, JavaScript y C #, todos ellos son lenguajes recolectados de basura de alto nivel.
Jimmy Hoffa
1
Tenga en cuenta que la velocidad de ejecución de código en el servidor en muchos casos no es el factor limitante en una aplicación web. Se pasa gran parte del tiempo esperando algo (base de datos) o incluso en el front-end (buscar CSS, imágenes, hacer cosas JavaScript, renderizar HTML)
johannes
1

Ciertamente es una elección inusual. C ++ no se diseñó teniendo en cuenta las aplicaciones web, y aunque existen bibliotecas para escribir, digamos, aplicaciones FastCGI con C ++, debe hacer mucho más trabajo para poner en marcha su aplicación básica. Los "lenguajes web" generalmente hacen muchas cosas por usted que tiene que obtener de otras partes de C ++, como implementar el protocolo HTTP, generar HTML, etc.

Además, las aplicaciones web tratan principalmente de cadenas, que no es exactamente el lado más fuerte de C ++: no hay ningún tipo de cadena integrado en el lenguaje en sí, y esto lleva a algunas peculiaridades y hace que el procesamiento de cadenas sea más torpe de lo que sería lenguajes de nivel. Manejo de codificaciones de caracteres correctamente en bordes de C ++ en magia negra. Y C ++ puede bloquearse realmente duro, en un código de aspecto bastante inocente, que es mucho menos probable con un lenguaje de nivel superior (también pueden bloquearse, pero en la mayoría de los casos, el servidor web puede recuperarse con gracia, especialmente en plataformas que usan un -solicitar modelo de ciclo de vida, como PHP).

Dicho esto, si ya tiene la mayor parte de la base de código escrita, C ++ aún podría ser una opción viable. Necesitará encontrar algunas bibliotecas para cubrir todo tipo de cosas web (sobre todo, desea poder integrar un servidor web HTTP independiente en su programa, o conectarse a, por ejemplo, Apache, ya sea a través de FastCGI o compilando para un módulo; también querrá algún tipo de biblioteca de plantillas para hacer que la representación de documentos HTML sea sencilla).

Finalmente, está el problema del mercado de desarrolladores. Hay muchos desarrolladores de C ++ disponibles, e incluso más desarrolladores web, pero la superposición probablemente no sea tan grande, por lo que si alguna vez necesita contratar personas para trabajar en esto, tendrá más dificultades que, digamos, PHP

tdammers
fuente
1

Como otros han dicho, conceptualmente, C ++ es un buen entorno para el desarrollo de un servidor web. Sin embargo, hay varias consideraciones al tomar esa decisión.

La popularidad de los lenguajes de secuencias de comandos para el diseño del servidor web es un tiempo de vuelta. Se pueden hacer cambios simples fácilmente con la demostración de resultados casi inmediatos. Encontrará que cualquier buen diseño de servidor web ofrecerá capacidades similares. De hecho, C ++ es un excelente entorno para lograr ese objetivo.

La clave para construir un buen sistema de aplicación de servidor web es la separación de la IU del código. Un objetivo al crear un entorno de aplicación web es evitar que "su interfaz de usuario esté en mi código y su código esté en mi interfaz de usuario".

Me gustaría cuidadosamente en sistemas como cppcms. Esperaría que ofrezca algo similar.

No necesita un lenguaje de script para ofrecer flexibilidad y rendimiento.

Bill Door
fuente