En el artículo anterior vimos cómo integrar webhooks y WebSockets en una aplicación real usando las herramientas de PCSoft.

Hoy vamos un paso más allá.

Te voy a mostrar cómo convertir ese flujo técnico en un sistema completo de respaldos automáticos con:

  • Notificaciones en tiempo real,
  • UI reactiva,
  • Arquitectura desacoplada,
  • Y una sonrisa de alivio cada vez que aparece el toast “Respaldo completado”.

Sí, programador: ahora el sistema avisa solo.
Ya no hace falta que grites “¡YA ESTÁ!” desde el fondo de la oficina.

🔧 ¿Qué soluciona este sistema?

Este sistema ataca un problema muy común en sistemas legacy o hechos a las apuradas:

  • Se generan respaldos… pero nadie sabe si se completaron.
  • La única forma de saberlo es “preguntando”, revisando manualmente o refrescando tablas.
  • La comunicación entre partes (cliente, servidor, operador) depende de acciones manuales.

Con este proyecto, todo eso queda automatizado. Y mejor aún: lo hace aplicando patrones de diseño bien utilizados.


🧠 Arquitectura aplicada

El sistema está dividido en tres componentes principales:

  1. API REST
    • Recibe el webhook que dispara HFSQL al terminar un respaldo.
    • Guarda el contenido del JSON en una base de datos estructurada.
    • No necesita enviar mensajes WebSocket: el servidor se entera solo gracias a HWatch().
  2. Servidor WebSockets
    • Está suscripto a los cambios en la tabla respaldos con HWatch().
    • Cuando detecta un nuevo respaldo, lo comunica a todos los clientes conectados en tiempo real.
  3. Cliente Windows
    • Puede lanzar un nuevo respaldo manual.
    • Se actualiza automáticamente cuando un respaldo se completa, sin necesidad de refrescar.

🧩 Patrones de diseño usados

Esta implementación real pone en práctica varios patrones fundamentales para sistemas desacoplados:

PatrónAplicación en el proyecto
Factory MethodClase BackupFactory para crear objetos MRespaldos.
RepositoryBackupRepository encapsula el acceso a HFSQL.
ObserverWebSocketNotifier recibe eventos cuando termina un respaldo.
ThreadingProcessBackup() corre en segundo plano.
Event-drivenTodo el sistema reacciona a eventos, sin polling.
Separation of ConcernsCada parte hace una sola cosa y la hace bien.

🔥 Resultado final

  • Automatización total del flujo de respaldo.
  • Comunicación en tiempo real entre backend y cliente.
  • Código limpio, mantenible y extensible.

¿Querés que te avise por Discord cuando un respaldo se complete? Podés hacerlo.
¿Querés guardar un log o enviar un correo? Extendés un observer y listo.


🧪 ¿Querés probar algo parecido?

Te dejo el proyecto base documentado en el video para que lo adaptes:

🔗 Video en YouTube

Y si querés que te lo envíe por correo o tener acceso al código, podés escribirme.

📧 Contacto: juan@barbat.dev


🧠 Sobre el autor

Este artículo forma parte del proyecto HolaWindev, un espacio creado para compartir buenas prácticas, ideas locas y sistemas reales desarrollados con WinDev, WebDev y WinDev Mobile.

💼 Escrito por Juan Barbat
🎯 Mentor técnico – Barbat.Dev
🛠️ Distribuidor autorizado de PCSoft en América Latina
🤝 Comunidad Discord: https://discord.gg/9xDAJ6ugQr