Cuando un equipo de Delphi necesita exponer una aplicación de negocio en un navegador, la primera pregunta siempre es la misma: ¿qué framework web usar? En 2026 existen cinco opciones nativas para Delphi con credibilidad suficiente: IntraWeb, UniGUI, TMS WEB Core, TMS XData y sgcHTML. Cada una resuelve el problema de manera diferente y destaca en una situación distinta. Este artículo repasa cada una con honestidad y luego explica dónde sgcHTML ofrece una ventaja clara.
IntraWeb — el framework web original para Delphi
IntraWeb existe desde 2001. Su modelo es sencillo: formularios VCL renderizados en el servidor como HTML. Si conoces los formularios de Delphi, puedes construir una página con IntraWeb. El estado reside en el servidor; el navegador es esencialmente una capa de visualización ligera. Para herramientas internas con un número moderado de usuarios concurrentes, este enfoque sigue siendo válido.
Donde IntraWeb tiene dificultades es en la personalización visual y el diseño moderno. Genera su propio HTML y CSS, anteriores a Bootstrap y flexbox. Conseguir una página responsiva y adaptada a móviles requiere un trabajo considerable de sobreescritura de CSS. El marcado generado es verboso y difícil de integrar con sistemas de diseño modernos. IntraWeb también es completamente con estado: cada usuario mantiene un objeto de sesión en el servidor durante toda su visita, lo que limita la escalabilidad horizontal.
UniGUI — maduro, completo y con estado
UniGUI es el framework web más completo para Delphi. Su paleta de componentes es enorme (rejillas, gráficos, árboles, mapas, carga de archivos, editor de texto enriquecido, soporte táctil) y su sistema de temas es maduro. Internamente utiliza Sencha ExtJS, una potente biblioteca de componentes JavaScript que produce interfaces refinadas cercanas a la calidad de las aplicaciones de escritorio nativas.
La contrapartida es la complejidad y la arquitectura con estado. Las sesiones de UniGUI mantienen el estado completo de los componentes en el servidor. Una aplicación con muchos usuarios concurrentes necesita memoria considerable y una gestión cuidadosa de las sesiones. La capa de ExtJS, aunque potente, no es Bootstrap, lo que significa que cada nuevo desarrollador que conoce Bootstrap debe aprender un vocabulario paralelo. Las licencias son por desarrollador y por servidor, y el componente por servidor del coste de la licencia importa en despliegues en la nube.
TMS WEB Core — Pascal del lado del cliente compilado a JavaScript
TMS WEB Core adopta el enfoque contrario: compila tu aplicación Object Pascal a JavaScript usando un compilador compatible con WebAssembly. El resultado se ejecuta completamente en el navegador; los eventos de tu formulario Delphi se disparan como eventos JavaScript. La interfaz utiliza Bootstrap o Material Design, y TMS WEB Core incluye un conjunto creciente de componentes visuales.
Es una tecnología genuinamente ingeniosa que funciona bien para ciertos casos de uso, especialmente aplicaciones de navegador autocontenidas que necesitan capacidad sin conexión o una carga de servidor muy baja. La limitación es el modelo de despliegue. El resultado compilado es un conjunto de archivos JavaScript estáticos y recursos que deben construirse, versionarse y servirse. Añadir una funcionalidad implica recompilar y redesplegar el paquete del cliente. La lógica de negocio que antes residía de forma segura en el servidor ahora se ejecuta en el navegador, lo que plantea preguntas de seguridad para cálculos sensibles. Integrar un componente Delphi del lado del servidor existente (un TsgcWebSocketClient, una conexión FireDAC) requiere trabajo arquitectónico, porque el JavaScript compilado no puede llamar directamente a unidades nativas de Delphi.
TMS XData — un back end REST, no un framework de interfaz web
TMS XData merece mencionarse porque a menudo se compara con frameworks de interfaz web, pero no lo es. XData genera una API REST a partir de clases de servicio Delphi usando OpenAPI 3.0 y JSON. El front end debe construirse por separado — en TMS WEB Core, React, Angular o cualquier tecnología que hable HTTP. XData es excelente en lo que hace. Simplemente no elimina la necesidad de una tecnología de front end separada cuando se quiere una interfaz de navegador.
sgcHTML — componentes del lado del servidor sobre Bootstrap 5 estándar
sgcHTML adopta una posición diferente a todas las anteriores. Es una biblioteca de componentes del lado del servidor cuya salida es HTML estándar de Bootstrap 5. Los componentes en sí son clases Delphi (TsgcHTMLComponent_Chart, TsgcHTMLComponent_DataTable, etc.); se configuran mediante propiedades y se lee una cadena HTML. Esa cadena va en tu respuesta HTTP. El navegador la renderiza usando Bootstrap. htmx (una biblioteca de 14 KB, sin paso de construcción) gestiona la interactividad: los clics y los envíos de formularios vuelven a tu controlador Delphi, que responde con un fragmento HTML, y htmx reemplaza la sección relevante de la página.
La arquitectura es sin estado. Cada solicitud construye lo que necesita, devuelve el HTML y termina. No hay árbol de componentes por sesión que mantener. El escalado horizontal es trivial: pon un balanceador de carga delante de dos instancias del mismo .exe.
Comparación lado a lado
| Característica | IntraWeb | UniGUI | TMS WEB Core | sgcHTML |
|---|---|---|---|---|
| Arquitectura | Formularios de servidor con estado | Sesión ExtJS con estado | Pascal del lado del cliente→JS | HTML de servidor sin estado |
| Marcado de salida | HTML + CSS propietario | JSON/HTML de ExtJS | Bootstrap estándar | Bootstrap 5 estándar |
| Interactividad | Recarga de página completa o AJAX | AJAX de ExtJS | Se ejecuta en el navegador | Fragmentos htmx + WebSocket |
| Push WebSocket en tiempo real | No (complemento) | Limitado | Mediante API JS WebSocket | Sí — de primer nivel (sgcWebSockets) |
| Escalabilidad | Limitada por el estado de sesión | Limitada por el estado de sesión | Sin estado (archivos estáticos) | Sin estado, horizontal |
| JavaScript que escribes | Ninguno | Mínimo | Ninguno (compilado desde Pascal) | Ninguno |
| npm / Node.js necesario | No | No | Sí (paso de construcción) | No |
| Despliegue en un solo binario | Sí | Sí | No (paquete JS + recursos) | Sí |
| Vinculación con DataSet | Sí | Sí | Mediante puente JS | Sí (TDataSet/TDataSource directo) |
| Número de componentes de interfaz | ~40 | 80+ | 50+ | 60+ |
| Móvil/responsivo | Parcial | Sí (ExtJS Touch) | Sí (Bootstrap) | Sí (Bootstrap 5) |
| Edición .NET | No | No | No | Sí (.NET 6+) |
Dónde sgcHTML tiene una ventaja clara
Paneles de control en tiempo real. Dado que sgcHTML está construido sobre sgcWebSockets, el mismo servidor que sirve páginas HTML también gestiona conexiones WebSocket. Una actualización de precio de acción, una nueva lectura de sensor o una ejecución de producción completada puede enviar un fragmento HTML a cada pestaña del navegador conectada en una sola llamada a Broadcast. Sin sondeo, sin infraestructura de push separada, sin licencia adicional. Tanto IntraWeb como UniGUI tienen soporte WebSocket limitado que requiere trabajo de integración adicional. TMS WEB Core puede usar la API WebSocket nativa del navegador, pero requiere lógica JavaScript del lado del cliente para gestionar los mensajes entrantes.
Marcado estándar sin sobrecarga de personalización. Como la salida es HTML de Bootstrap 5, cualquier diseñador que conozca Bootstrap puede darle estilo. Los temas son temas Bootstrap estándar: existen cientos de temas gratuitos y de pago que se aplican al instante. IntraWeb y UniGUI generan marcado específico del framework que requiere aprender un sistema de estilos separado.
Sin estado y escalable horizontalmente. Cada solicitud de sgcHTML es independiente. No hay objeto de sesión por usuario en el servidor. Dos instancias del mismo ejecutable detrás de un balanceador de carga atienden solicitudes de forma intercambiable. IntraWeb y UniGUI enrutan las solicitudes de vuelta a la instancia específica del servidor que mantiene la sesión, lo que complica los despliegues en la nube.
Despliegue en un solo ejecutable. El CSS de Bootstrap, Chart.js y htmx son recursos embebidos dentro del binario Delphi. Desplegar sgcHTML significa copiar un solo .exe. TMS WEB Core produce un paquete JavaScript y un conjunto de recursos que deben versionarse y servirse por separado.
Sin cadena de construcción. No hay npm, ni webpack, ni Babel, ni Node.js. Compilas tu proyecto Delphi y distribuyes. Esto importa enormemente en entornos regulados y despliegues en instalaciones propias donde instalar una cadena de herramientas Node.js requiere la aprobación del departamento de TI.
Una comparación directa de código: una rejilla de datos
Para hacer concreta la diferencia, así es como se renderiza una rejilla de datos con búsqueda y paginación a partir de una consulta FireDAC, en sgcHTML:
uses
sgcHTML_Component_DataTable;
var
oTable: TsgcHTMLComponent_DataTable;
begin
oTable := TsgcHTMLComponent_DataTable.Create(nil);
oTable.PageBuilder := oPage.PageBuilder;
oTable.Section := 'data';
oTable.Title := 'Customers';
oTable.ShowSearch := True;
oTable.ShowExport := True;
oTable.LoadFromDataSet(fdqCustomers, 25); // 25 rows per page
// Read oTable.HTML and include it in your response
end;
El resultado es una tabla Bootstrap responsiva, con búsqueda y paginación, con indicadores de ordenación, un cuadro de búsqueda y un botón de exportación. El navegador la renderiza sin viajes adicionales al servidor para la carga inicial de la página. El filtrado y la paginación usan htmx para reemplazar únicamente el fragmento de la tabla, no la página completa.
Cuándo elegir las alternativas
sgcHTML no siempre es la elección correcta. Si tienes una aplicación IntraWeb o UniGUI grande con cientos de formularios y un sistema de temas bien establecido, migrarla tiene poco sentido. UniGUI es la mejor opción cuando necesitas capacidades de rejilla avanzadas (columnas fijas, editores de celda, agrupación de filas, tabla dinámica) que igualen o superen a Excel, o cuando quieres el refinamiento de ExtJS para una herramienta de back-office para usuarios avanzados. TMS WEB Core es la elección adecuada cuando necesitas una aplicación que funcione sin conexión en el navegador sin ningún servidor, o cuando quieres distribuir una aplicación de página única como archivos estáticos a través de una CDN.
sgcHTML es la opción más sólida cuando:
- Estás construyendo una nueva interfaz web junto a un back end Delphi existente y no quieres gestionar un proyecto JavaScript separado.
- La aplicación necesita datos en vivo enviados desde el servidor (pantallas de trading, paneles de logística, monitorización, chat).
- Necesitas una interfaz Bootstrap 5 responsiva y adaptada a móviles que los diseñadores de tu equipo puedan personalizar con las herramientas estándar de Bootstrap.
- El despliegue debe ser un solo ejecutable sin dependencias externas.
- Estás apuntando a .NET (C#) junto con Delphi y quieres la misma API de componentes en ambas plataformas.
Probando sgcHTML
Una versión de prueba gratuita con todos los 60+ componentes y sin restricciones de funcionalidades está disponible en esegece.com/products/sgchtml/download. La descarga incluye cuatro aplicaciones de demostración funcionales (ERP, Admin Console, Live Monitor y Customer Portal) que muestran la paleta de componentes en escenarios realistas.
¿Preguntas o una comparación con un proyecto existente específico? Contáctanos. Recibirás una respuesta de las personas que escribieron el código.
