Migrar de VB6 a .NET


Tal como ya lo había mencionado hace años, existen las siguientes opciones cuando se lidian con aplicaciones VB6 legadas:

  • Dejarla como está – Si la aplicación rara vez es actualizada o modificada y/o aún “funciona bien” tal y como está…
  • Extenderla con .NET (aka VB Fusion) – Añadiéndole nuevas funcionalidades utilizando el .NET Framework. Se pueden añadir WinForms y controles a una aplicación VB6 con la ayuda de Interop Form Toolkit 2.0 (PDF).
  • Actualizarla a .NET – Lo que puede abordarse de dos formas:
    • Migrándola a VB.NET – Con la ayuda de una herramienta de migración que convierta gran parte del código VB6 a su equivalente código .NET.
    • Reescribiéndola – Reescribir manualmente el código entero en .NET (en cuyo caso no solo a VB.NET sino a C#, o bien incluso a otro lenguaje/plataforma). Este es un enfoque viable cuando la aplicación VB6 inicial fue mal escrita y se desea una reingeniería y/o reescritura de la misma, o la aplicación necesita un cambio importante para satisfacer las nuevas necesidades; o bien el código fuente ya no se encuentra disponible.

Otra posible opción es remplazarla, si es que existe una aplicación empaquetada o un servicio que provea la misma funcionalidad. No obstante no es viable en la mayoría de las aplicaciones VB6, puesto que se tratan de “soluciones a la medida”.

Si la migración es el camino por recorrer, existen tres herramientas útiles:

Recientemente Microsoft ha publicado un caso de estudio destacando el éxito de la migración de 950,000 líneas de código VB6 a .NET. El proceso fue dirigido por SiS, una compañía austriaca de TI, usando Visual Basic Migration Partner durante un período de 9 meses. El proyecto fue un sistema ERP construido a lo largo de 10 años y que constaba de 33 aplicaciones.

  • 25,000 líneas de código “difíciles” fueron tomadas como prototipo de migración, las cuales “tomó 2.5 horas el obtener un proyecto que compile y se ejecute usando VB Migration Partner, y 13 horas con la de su competidor" (ouch! Artinsoft) dijo Otto Wiegele, Chief Executive Officer de SIS
  • El esfuerzo requerido para el proyecto incluyen 3,650 horas-desarrollador para migrar el código, 3,400 horas para la revisión de código y refactorización, y 1,300 horas para pruebas
  • Tres desarrolladores migraron 950,000 líneas de código de Visual Basic 6.0 a. NET Framework en sólo nueve meses
  • Costo para el cliente final fue € 750,000 contra un estimado de 3 a 5 millones de euros que habría costado implementar un sistema ERP comercial

Mayor información:

Acerca de Willy Mejia

Developer, Techie, Human... http://about.me/willyxoft
Esta entrada fue publicada en .NET, Visual Studio. Guarda el enlace permanente.

5 respuestas a Migrar de VB6 a .NET

  1. Willy Mejía dijo:

    Personalmente prefiero las opciones de extender (VB Fusion) o reescribir. La migración muchas veces también migra el “mal código”, y el tiempo que se lleva en resolver “problemas de migración” (código que no se puede migrar por el asistente, de incompatibilidad de plataforma, etc.) se pudiese haber empleado en hacer una reingeniería.
    Solo cuando la calidad del código legado es tal que valga la pena salvarlo, es cuando hay que migrarlo, espero haya sido el caso…

  2. hector ruiz dijo:

    Quiero migrar un sistema desarrollado e visual basic a una plataforma .net, de tal forma que ese programa quiero aplicarlo en una intranet, cuales son los pasos a seguir?

    • Willy Mejia dijo:

      Los asistentes de migración mencionados en el post llevan una Aplicación VB6 a una equivalente Aplicación Windows Forms en VB.NET. Pero si lo que deseas es llevar una aplicación Windows a una Intranet, entonces hablas de convertirla a una aplicación Web, y por ende lo que procede es portar / re-escribir, pero no tanto migrar.
      Por otra parte, generalmente una Intranet se usa mas para compartir contenido, apoyándose con un CMS (Content Management System), mas que para una aplicación de gestión, naturaleza común de las app VB6, y pasar una aplicación Windows a la Web no es nada trivial, y en ocasiones innecesario. Con esto no es estoy diciendo que no se pueda o deba, pero sí que hay que “sopesarlo” bien…

      En conclusión: Analiza bien si lo adecuado para la solución es portar la aplicación Windows a Web, de ser así tendrías que hacer una re-ingeniería ya que se trata de entornos muy distintos con sus propios detalles tecnológicos, tienes pues que re-pensar la aplicación como lo que será: una aplicación Web. Pero si decides que una aplicación Windows sigue siendo una mejor opción, entonces si podrías emplear algunos de los asistentes sugeridos para empezar a migrar la aplicación VB6 a una Windows Forms de .NET. No obstante si desearas usar cosas nuevas tales como WPF (Windows Presentation Foundation) -o Silverlight- entonces también estaríamos hablando de portar/re-escribir la aplicación.

      Saludos y suerte con el proyecto.

      • Willy Mejia dijo:

        Actualización:
        Desde hace un par de años dicen los herederos de Artinsoft que ya se puede migrar una aplicación VB6 a la web, e incluso migrarla a la nube y mobile o_0
        http://www.mobilize.net
        Personalmente no me gustan las migraciones vía asistentes, pero sin duda son una opción…

  3. Willy Mejia dijo:

    Últimamente esta entrada tiene muchas visitas… Me extraña que aún existan proyectos y profesionales en VB6… Para lo interesados en migrar lo único que queda está en:
    https://msdn.microsoft.com/vbrun/
    Lamentablemente dirigido hacia VB 2005… Por lo que habrá partes del código migrado a .NET que será “deprecated” y muchas características nuevas no estarán presentes… Así es la tecnología.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s