Wt Framework de desarrollo web en C++
Wt es un framework de desarrollo web que incluye su propio servidor web, si eres un empedernido desarrollador de C posiblemente te sea útil.
Especialmente si eres alguien que no tiene interés alguno en aprender a utilizar lenguajes interpretados de los mortales (PHP, Ruby, Python, etc) o te importa poco lo que signifique DHTML, Javascript, CSS, AJAX, etc. Wt se encarga de la presentación y tu de la funcionalidad y los contenidos.
De los 11 beneficios que menciona el autor, el único que considero 100% válido es el portar viejas aplicaciones de escritorio en C++ a web fácilmente pero esto obviamente solo va a ser en casos muy puntuales.
También existen otras opciones, como Tntnet que es un servidor web que te permite crear templates con código de C++ embebido por medio de tags, tal como lo hace PHP o ASP.
Este es el código, de ejemplo en un simple Hello World
con un botón. Haz clic para verlo funcionando.
/*
* Copyright (C) 2006 Wim Dumon
*/
#include <wapplication>
#include <wcontainerwidget>
#include <wtext>
#include <wpushbutton>
using namespace Wt;
// Este es el punto de entrada para nuevas sesiones
//
// Esta funcion se ejecuta cuando un nuevo usuario navega en la aplicacion,
// y despues que la libreria ha negociado el soporte para el navegador.
// Debe regresar un nuevo objeto WApplication
WApplication *createApplication(const WEnvironment& env)
{
// Instanciando a la aplicacion Wt.
WApplication *appl = new WApplication(env);
// Estableciendo el titulo de la aplicacion
appl->setTitle("Hello world!");
// Se pueden agregar Widgets a un padre llamando addWidget()...
// WApplication::root() es un WContainerWidget que esta asociado con
// la ventana completa del navegador.
appl->root()->addWidget(new WText(L"Hello, World!"));
// .. o especificando un pariente en la construccion
WPushButton *Button = new WPushButton(L"Quit", appl->root());
// Escuchar eventos del usuario usando un mecanismo de señales.
Button->clicked.connect(SLOT(appl, WApplication::quit));
return appl;
}
int main(int argc, char **argv)
{
return WRun(argc, argv, &createApplication;);
}
Prefiero mil veces usar algo para lo que fue hecho originalmente en lugar de complicar las cosas, pero nunca esta de mas saberlo.