Wt (pronunciado "ingenioso" ) es un marco web de código abierto centrado en widgets para el lenguaje de programación C ++ . Tiene una API que se parece a la del marco Qt (aunque se desarrolló con Boost y es incompatible cuando se mezcla con Qt), también usa un árbol de widgets y un sistema de señal / ranura controlado por eventos . [2]
Autor (es) original (es) | Emweb |
---|---|
Versión inicial | 1.0.0 / diciembre de 2005 |
Lanzamiento estable | 4.5.0 / 15 de diciembre de 2020 [1] |
Repositorio | Repositorio de peso |
Escrito en | C ++ |
Sistema operativo | Multiplataforma |
Tipo | Marco web |
Licencia | Licencia doble : |
Sitio web | www |
El objetivo de diseño de Wt es beneficiarse del modelo de componentes con estado utilizado en las API de aplicaciones de escritorio, aplicado al desarrollo web, en lugar del patrón de diseño tradicional MVC (modelo-vista-controlador). Entonces, en lugar de usar MVC a nivel de una página web , se empuja al nivel de componentes individuales. [3]
Si bien la biblioteca utiliza un proceso de desarrollo de software de escritorio , admite algunas características específicas de la web , que incluyen:
- URL semánticas
- Navegación del historial del navegador
Una de las características únicas de Wt es su capa de abstracción del modelo de renderizado del navegador . La biblioteca utiliza Ajax para comunicarse con los navegadores compatibles con ella, durante el uso normal de HTML - forma post-espaldas para otras aplicaciones de usuario . Usando un método de arranque progresivo , la interfaz de usuario se representa primero como un documento HTML simple , luego, siempre que sea compatible con el navegador, se actualiza automáticamente para usar Ajax para una mayor interactividad. De esta manera, Wt es por definición:
- El único marco del lado del servidor que implementa la estrategia de mejora progresiva automáticamente;
- El único marco Ajax con cualidades de optimización de motores de búsqueda (SEO).
Debido a la popularidad de C / C ++ en entornos de sistemas embebidos , Wt se usa a menudo en tales dispositivos y (como consecuencia) se ha optimizado mucho para el rendimiento .
Características principales
- Degradación elegante automática y mejora progresiva
- Admite eventos iniciados por el servidor ( Comet )
- Una API de renderizado unificada ( SVG , el elemento de lienzo HTML5 , VML )
- Validación del lado del cliente y del servidor
- Contiene varios seguridad características para evitar Cross-site scripting y solicitudes entre distintos sitios de falsificación vulnerabilidades (CSRF)
- Incluye una capa ORM de C ++ compacta ("Wt :: Dbo")
- Utiliza el protocolo de red WebSocket , si está disponible, para el modelo de comunicación cliente-servidor , con alternativas a Ajax o renderizado de páginas web simples .
Para obtener una descripción más detallada, consulte la sección Características del sitio web oficial.
Ejemplo de código
El mensaje "¡Hola, mundo!" programa en peso:
#include #include #include #include #include #include / * * Una clase de aplicación simple hola mundo que demuestra cómo reaccionar * a eventos, leer entradas y dar retroalimentación. * / class HelloApplication : public Wt :: WApplication { public : HelloApplication ( const Wt :: WEnvironment & env );privado : Wt :: WLineEdit * nameEdit_ ; En peso :: WText * greeting_ ; saludar vacío (); };/ * * El argumento env contiene información sobre la nueva sesión y * la solicitud inicial. Debe pasarse al constructor WApplication *, por lo que normalmente también es un argumento para el constructor de su aplicación personalizada *. * / HelloApplication :: HelloApplication ( const Wt :: WEnvironment & env ) : WApplication ( env ) { setTitle ( "Hola mundo" ); // Titulo de la aplicación root () -> addNew < Wt :: WText > ( "¿Su nombre, por favor?" ); // muestra algo de texto nameEdit_ = root () -> addNew < Wt :: WLineEdit > (); // permitir la entrada de texto nameEdit_ -> setFocus (); // dar enfoque auto button = root () -> addNew < Wt :: WPushButton > ( " Saludame ." ); // crea un botón button -> setMargin ( 5 , Wt :: Side :: Left ); // agrega un margen de 5 píxeles root () -> addNew < Wt :: WBreak > (); // inserta un salto de línea greeting_ = root () -> addNew < Wt :: WText > (); // texto vacío / * * Conectar señales con ranuras * * - Wt-way simple: especificar objeto y método * / botón -> clic en (). conectar ( esto , & HelloApplication :: saludar ); / * * - usando un objeto de función arbitrario, por ejemplo, útil para vincular * valores con std :: bind () a la llamada al método resultante * / nameEdit_ -> enterPressed (). conectar ( std :: bind ( & HelloApplication :: saludar , esto )); / * * - usando un lambda: * / botón -> clicked (). connect ([ = ] () { std :: cerr << "Hola," << nameEdit_ -> text () << " \ n " ; }); }void HelloApplication :: greet () { / * * Actualiza el texto, usando la entrada de texto en el campo nameEdit_. * / greeting_ -> setText ( "Hola," + nameEdit_ -> text ()); }int main ( int argc , char ** argv ) { / * * Su método principal puede configurar algunos recursos compartidos, pero luego debe * iniciar la aplicación del servidor (FastCGI o httpd) que comienza a escuchar * solicitudes y maneja todas las ciclos de vida de las aplicaciones. * * El último argumento de WRun especifica la función que instanciará * nuevos objetos de aplicación. Esa función se ejecuta cuando un nuevo usuario navega * a la aplicación Wt, y después de que la biblioteca ha negociado la compatibilidad con el navegador *. La función debería devolver un objeto de aplicación * recién instanciado . * / return Wt :: WRun ( argc , argv , [] ( const Wt :: WEnvironment & env ) { / * * Puede leer información del entorno para decidir si * el usuario tiene permiso para iniciar una nueva aplicación * / return std :: make_unique < HelloApplication > ( env ); }); }
Ver también
- Comparación de marcos web
- JWt (kit de herramientas web Java) , una versión nativa de Java de Wt
- Tntnet
Referencias
- ^ "Peso: Versión v4.5.0" . webtoolkit.eu . 15 de diciembre de 2020 . Consultado el 15 de diciembre de 2020 .
- ^ Dumon, Wim; Deforche, Koen (11 de febrero de 2008). "Peso: un kit de herramientas web" . Diario del Dr. Dobb . Consultado el 24 de enero de 2017 .
- ^ Volkman, Victor (6 de junio de 2008). "Wt: C ++ Web Toolkit Library le permite escribir aplicaciones web independientes de secuencias de comandos" . QuinStreet . Consultado el 24 de enero de 2017 .
enlaces externos
Página web oficial