(antes "Mi PowerServer") · Porque las malas prácticas a veces molan 😎
Mi caja de experimentos con PowerBuilder 2025: una app de mantenimiento de personas/facturas que se despliega como PowerClient, habla con una API genérica en .NET 10, pinta dashboards con Chart.js y mezcla un buen puñado de diversión web (Chart.js, AG-Grid, Tabulator…) dentro del cliente clásico.
Esto nació como demo para una conferencia y se ha ido convirtiendo en mi banco de pruebas favorito. La idea original: enseñar que PowerBuilder de hoy se lleva de maravilla con lo "moderno" aunque, a veces, para conseguirlo, haya que cometer alguna que otra mala práctica con mucho cariño 😏.
El proyecto empezó como "Mi PowerServer" (conferencia de España, abril 2025): una alternativa casera al PowerServer de Appeon pensada para desarrolladores independientes y proyectos con pocos recursos. Para la presentación de LATAM (febrero 2026) lo rebauticé como "Mi Cloud Framework" y, de paso, fui metiéndole código de varios artículos del blog. Así que lo que tenéis aquí es la demo completa acumulada, no un ejemplo de un solo tema.
Dentro encontraréis un poco de todo:
- CRUD clásico de mantenimiento (personas, facturas, listados y reports).
- Despliegue como PowerClient (instalador/actualización automática del cliente; versión
2025.2.6430.9). - Backend propio: una API genérica en .NET 10 (mi "Cloud Framework"), configurable en
CloudSetting.ini(entorno local o servidor), al estilo PowerServer pero montado a mi manera. - Dashboards HTML embebidos con Chart.js dentro de la propia aplicación.
- Una ventana de Consulta SQL asistida (
w_con_sql) con dos variantes de grid web que conviven: AG-Grid (React) y la 2.0 en HTML/JS puro (CodeMirror + Tabulator). La misma ventana sirve las dos, así que ninguna está jubilada: elijo la que me convenga. - Temas (incluido Flat Design Dark), ribbon menu y una ventana MDI con imagen de fondo.
El proyecto se reparte en varias librerías para mantener las piezas separadas:
persondemo.pbl→ la aplicación: ventanas de mantenimiento/consulta, login, frame MDI, fondo de MDI, reports, la ventana de consulta SQL asistida (w_con_sql)…api.pbl→ la capa que consume la API (peticiones, ejecución de SQL remoto víaSqlExecutor, carga de DataWindows por REST/JSON, etc.).dashboards.pbl→ los dashboards que renderizan los gráficos con Chart.js (clase basen_cst_dashboardque genera el HTML/CSS y clases especializadas que heredan).topwiz.pbl→ objetos de utilidad reutilizables.
La gracia "moderna" está en mezclar el cliente nativo con piezas web (HTML + JS) embebidas en un WebBrowser, y en apoyarse en una API en lugar de una conexión directa a base de datos. De ahí lo de "mi PowerServer / Cloud Framework": el patrón es el de PowerServer, montado a mano.
| Carpeta / fichero | Qué es | Stack |
|---|---|---|
dashboards.pbl (genera HTML) |
Dashboard de ventas con KPIs y gráfico comparativo año actual vs. anterior | Chart.js + Flexbox |
dist/index.html |
Build single-file de la Consulta SQL con AG-Grid (React) (~3 MB, sin servidor web) | React + AG-Grid Community + ExcelJS + jsPDF, empaquetado con vite-plugin-singlefile |
sqlviewer/ |
Consulta SQL asistida 2.0: editor + grid en HTML/JS puro, sin frameworks ni npm | CodeMirror 5 + Tabulator + SheetJS (xlsx) |
Las dos viven en el repo a propósito. AG-Grid sigue en pie (es una bestia y hace cosas que la 2.0 ni intenta); para la 2.0 simplemente me apeteció probar otra cosa más ligera —HTML/JS plano, sin npm, sin build— y, como reutilicé la misma ventana (
w_con_sql), AG-Grid se quedó ahí como alternativa. Quedaos con la que más os cuadre.
- PowerBuilder 2025 (compilado con el Runtime
25.1.0.6430). - Windows 10/11.
- El backend .NET 10 (mi Cloud Framework) accesible para la parte de datos, configurable en
CloudSetting.ini, apartado[Api]:UrlBaseLocal/UrlBaseServer. - Conexión a la base de datos correspondiente al backend.
Esto son dos piezas: este frontend de PowerBuilder y el backend .NET 10. Para probarlo en local necesitáis levantar las dos.
- Clona el repo del backend: 👉 https://github.com/rasanfe/MyPowerServer
- Restaura la base de datos: en la carpeta
database/del backend tienes la copia comprimida (PersonDemo03.rar→ backup de SQL Server 2022). Descomprímela y restáurala con el nombrePersonDemo03(el que esperaCloudSetting.ini). - Ajusta la cadena de conexión del backend en
appsettings.json(ConnectionStrings→PersonDemo03); tienes la plantilla enappsettings_example.json. - Arráncalo (con el IDE .NET que prefieras: Visual Studio, VS Code, Rider, SnapDevelop…). Por defecto queda escuchando en
https://localhost:7251/api.
- Clona este repositorio (viene en modo solución).
- Abre el workspace
persondemo.pbw/ targetpersondemo.pbtdesde el IDE de PowerBuilder. - Copia
CloudSetting_example.iniaCloudSetting.ini, ponEnvoirment = Local(apunta aUrlBaseLocal) y rellena tus credenciales. - Compila y ejecuta, o prueba directamente el
persondemo.exe. Como es PowerClient, también puedes desplegarlo y dejar que se actualice solo.
Este ejemplo ha ido creciendo artículo a artículo. Aquí tenéis el recorrido completo, en orden:
Madrid, 22 abril 2025 — La presentación original: PowerBuilder como frontend + API genérica en .NET (entonces .NET 8; hoy migrada a .NET 10), sin licencias extra. 👉 Artículo completo
22 julio 2025 — Logo de fondo en la ventana MDI (UserObject u_web_background con un WebBrowser) que aparece/desaparece según las hojas abiertas.
👉 Leer artículo
25 septiembre 2025 — Nueva ventana con Dashboard de Ventas: tarjetas KPI y gráfico comparativo mensual generados desde PowerBuilder, con interactividad bidireccional HTML↔PB. 👉 Ver artículo
11 febrero 2026 — La presentación se actualiza y se rebautiza como "Cloud Framework" para el público de Latinoamérica, ya con los dashboards integrados. 👉 Ver artículo actualizado
25 marzo 2026 — La ventana de Consulta SQL (w_con_sql) estrena grid web: AG-Grid Community dentro de un WebBrowser, alimentado con JSON vía EvaluateJavascriptSync(), en un build single-file de React (~3 MB, sin servidor). Filtros, orden multi-columna y export a Excel/PDF.
👉 Ver artículo
12 junio 2026 — Otra vuelta de tuerca a la misma ventana, esta vez "sin frameworks, sin npm": CodeMirror 5 + Tabulator en HTML/JS puro (conviviendo con la variante AG-Grid). Paneles de tablas y campos con autocompletado, SELECT generado automáticamente, modo editable (INSERT/UPDATE/DELETE), export a .xlsx real y temas sincronizados con PowerBuilder.
👉 Ver artículo
Tenéis el ejemplo publicado en modo solución aquí: 👉 https://github.com/rasanfe/PersonDemo03
Ramón San Félix Ramón
⭐ Si te gustan estos experimentos, dale una estrellita al repo y comparte.
¡Nos vemos en el próximo artículo! Y recuerda: en PowerBuilder, los límites solo están en nuestra imaginación. 🚀
📨 Blog: https://rsrsystem.blogspot.com/