Extender aplicaciones legacy

¿A quién no le ha tocado mantener (y extender) aplicaciones heredadas que llevan nosecuantos años purulando por la empresa?
¿Qué hacer cuando hay que agregar una nueva funcionalidad a la aplicación? Pues depende...
  • ¿El lenguaje en que se desarrolló la aplicación se sigue manteniendo?
  • ¿Las nuevas funcionalidades requeridas están soportadas por el lenguaje / plataforma de desarrollo?
  • El qué hacer también dependerá del tamaño, nº de usuarios de la aplicación y del presupuesto disponible para migrarla a otra tecnología: como siempre, del ROI
El caso que me ocupa en estos días (más bien meses):
Aunque en mi empresa empezamos a desarrollar en .net allá por el 2004, todavía seguimos manteniendo aplicaciones VBA desarrolladas antes y durante aquella época.
¿VBA? Si, muchas de las aplicaciones desarrolladas eran cliente/servidor con un sql server como servidor y Access como cliente.

Nos han pedido ampliar la funcionalidad de la aplicación que estamos manteniendo. Podríamos haber desarrollado todo en VBA, pero:
  • El lenguaje no admite ciertas necesidades, tendríamos que tirar del API de Windows; "forzar" el lenguaje para que admita construcciones para los que no está pensado: herencia, evaluar expresiones...
  • Tenemos claro que hay que reescribir la aplicación, por lo que seguir desarrollando en VBA es tirar el dinero
El reto es que el usuario no se entere del cambio de tecnología, que vea la aplicación como siempre. Pero por debajo, la aplicación Access se apoya en varios puntos sobre lógica de negocio desarrollada en .NET, muestra formularios WinForms e integra controles específicamente desarrollados en .NET para la aplicación.

La idea básica es sencilla: Desarrollar un par de librerías en .NET y publicarlas como COM
  • Por supuesto, alguna cosa hay que seguir desarrollando en VBA/Access
  • Parte de la lógica (solo un poco) la hemos transladado al servidor de SQL: esa parte ya no tendremos que tocarla el día que decidamos migrar.
  • En una de las librerías hemos metido la lógica de negocio y rutinas de apoyo que eran difíciles de implementar en VBA
  • En la otra librería publicamos los controles que se usarán dentro de los formularios de Access. Estos controles, a su vez se apoyan en la lógica de negocio.

En el próximo post, los detalles del proyecto

saludos

Comentarios

Entradas populares de este blog

Install NET Core 2.1 SDK on Rasapbian

Actualizar automáticamente la versión del ejecutable con el nº de build de Jenkins

Pasar parámetros dinámicos a Attributes