A continuación encontrarás traducido al castellano el artículo escrito por Ricardo Cruz y publicado originalmente en el Blog oficial de Xojo.
El rendimiento ha dado un gran salto hacia adelante, el soporte SEO también aterriza en esta versión, y también hay otras muchas otras mejoras de calidad de vida que permitirán que tu programación diaría sea más suave. Profundicemos en todo ello.
Rendimiento: más de 13.000 peticiones por segundo
Si has estado siguiendo los números sobre el rendimiento del framework web durante las diversas versiones, entonces sabrás que estas se han visto incrementadas de forma constante. En 2024r2 las pruebas mostraban en torno a 8-9k peticiones por segundo; en 2026r2 estamos más allá de los 13k. Este es un salto significativo y todo ello viene con un cambio fundamental en como el framework gestiona las conexiones bajo el capó.
Xojo Web es en esencia un proyecto de Consola creado sobre ServerSocket y TCPSocket. Anteriormente cada conexión entrante creaba un nuevo hilo, procesaba la petición y entonces se destruía dicho hilo. En 2026r2 los hilos se crean cuando el TCPSocket es creado, antes de que llegue la conexión. Cuando entra una petición, el hilo ya está creado, durmiendo, esperando. No hay necesidad de crear uno nuevo desde cero. Y cuando se reutiliza un TCPSocket, también ocurre así con su hilo, lo que significa menos llamadas al kernel y también una menor sobrecarga en general.
Con lo dicho, incluso con un 50% de incremento en esta prueba, la mayoría de los usuarios no advertirán una gran diferencia. Por ejemplo, cuando una aplicación ha de tratar con peticiones frecuentes a una base de datos, raspar unos pocos milisegundos en la gestión de la petición es como una gota en un cubo; pero cuando importa, importa mucho. Si tu aplicación es una API REST sirviendo datos para una app móvil con miles de usuarios concurrentes, o cuando se despliega en un entorno restringido, como pueda ser una Raspberry Pi, entonces este tipo de mejora supone una diferencia real.
Mejoras SEO bien hechas
En 2026r1 introdujimos la capacidad de llamar WebPage.Show desde el evento HandleURL, abriendo así la puera a servir páginas para las arañas utilizadas por los motores de búsqueda. Funcionaba, pero con un coste significativo: incluso para los usuarios que no estuviesen utilizando esta característica, las cifras de las pruebas bajaban desde las 7-8k peticiones por segundo a sólo 1-2k. Esto no resultaba aceptable (forzándonos a revisar el rendimiento del framework web en general para esta nueva versión), y también introducía casos extremos para bases de código en los que se esperaba que HandleURL funcionase sin un contexto de sesión activo, dado que crear un contexto de sesión sobre uno ya existente no está permitido.
En 2026r2 esto se ha solucionado correctamente. La penalización de rendimiento ya no está ahí. Si quieres utilizar WebPage.Shot desde HandleURL para propósitos dirigidos a SEO, entonces puedes hacerlo creando una instancia de WebSessionContext tu mismo, pasándole el requestparameter, antes de llamar a Show. Es un pequeño paso, pero hace que la intención resulte más clara y mantiene las cosas seguras para todos.
WebSessionContext cuenta con un nuevo Constructor, en el que se acepta un parámetro request As WebRequest.
No nos estamos deteniendo aquí. El SEO es importante, y ya estamos trabajando en un enrutador de URL apropiado para hacer que dichos flujos de trabajo resulten más sencillos y capaces. ¡Permanece atento!
DatabaseConnection añade el modo PerSession
Si utilizas una Database Connection en tu proyecto web, entonces probablemente ya estés familiarizado sobre el modo en el que funciona: la añades a tu proyecto en el Navegador, le asignas un nombre (pongamos que sea “MyDatabaseConnection”), y luego la referencias por dicho nombre desde el código para ejecutar las peticiones.
Por omisión, dicha conexión funciona como un Singleton. Cada sesión de tu app web comparte la misma instancia MyDatabaseConnection. Para la mayoría de los casos de sólo lectura eso está bien, pero en el momento en el que empieces a utilizar transacciones, puede que tengas problemas. La transacción de una sesión puede interferir con otra o, aun peor, los datos de una sesión pueden ser permeables en los resultados de otra.
La nueva propiedad PerSession de 2026r2 resuelve este problema en la fase de diseño. Cuando la activas en el Inspector, MyDatabaseConnection deja de compartir la instancia. En vez de ello cada sesión obtiene su propia conexión, creada de forma diferida la primera vez que sea necesaria por dicha sesión; y se destruye automáticamente cuando la sesión finaliza. Tu código no cambia, aun seguirás escribiendo MyDatabaseConnection.SelectSQL(…) tal y como estás acostumbrado, pero ahora puedes estar seguro de que cada sesión opera de forma independiente.
WebGraphics cuenta con DrawPath y FillPath
Ahora WebGraphics soporta tanto DrawPath como FillPath, estando así a la par con Desktop y Mobile. Si ya contabas con código de dibujado para otras plataformas en las que se utilizase Graphics.DrawPath o Graphics.FillPath, entonces podrás utilizar ahora dicho código también en tus proyectos web sin necesidad de modificarlo.
Este es exactamente el tipo de paridad multiplataforma que hace que Xojo resulte tan potente. Consulta la documentación sobre WebGraphics para obtener información adicional.
WebImageViewer: Adiós, parpadeo
Es una corrección pequeña pero útil. Cuando se actualiza la propiedad Picture en un WebImageViewer, las anteriores versiones podrían mostrar brevemente un parpadeo, donde la anterior imagen desaparecía por unos milisegundos antes de mostrar la nueva. En 2026r2 la nueva imagen se muestra directamente, sin parpadeos. Simplemente, funciona.
En resumen
Como es habitual, 2026r2 también contiene una buena cantidad de corrección de errores en el framework web. Consulta las Notas de Revisión para ver la lista completa. Esta es una versión enfocada en varios frentes: rendimiento en bruto, corrección y paridad entre plataformas, así como una mejor base para el SEO. Los cambios en la gestión de los hilos, por sí solos, hace que esta resulte una actualización atractiva para cualquiera que ejecute aplicaciones Xojo web bajo carga. Y con el enrutado apropiado de URL en el horizonte, el SEO sólo irá a mejor.