270 likes | 420 Views
Migrando VFP a .NET Tips y Sugerencias. Experiencia de una migración en la Aduana de Costa Rica Enrique Almeida – Concepto ealmeida@concepto.com.uy Gustavo Morales – Aduana de Costa Rica m oralescg@hacienda.go.cr. El proyecto. Adaptación del sistema a la realidad de Costa Rica.
E N D
Migrando VFP a .NETTips y Sugerencias Experiencia de una migración en la Aduana de Costa Rica Enrique Almeida – Concepto ealmeida@concepto.com.uy Gustavo Morales – Aduana de Costa Rica moralescg@hacienda.go.cr
El proyecto • Adaptación del sistema a la realidad de Costa Rica. • Transferencia tecnológica de Concepto al grupo de desarrollo de la Aduana de Costa Rica. • Migración de GeneXus 7.5 generando Visual FoxPro (Windows) y C/SQL (Web y WebServices) a GeneXus 8.0 y full .NET • 400 Tablas y 3200 objetos
Quienes somos?. CONCEPTO • 12 años trabajando con GeneXus. • Pertenecientes a la GxAlliance. • 2001 y 2002 Mejor BetaTester • 2001 Early adopter of new tecnologies .NET • Sistema de Calidad ISO-9001:2000
Quienes somos? ADUANA DE COSTA RICA. - 650 funcionarios. - Recaudación U$S 1.029.000.000 6% PBI de Costa Rica.
Porque .NET y Tres Capas? • Directiva de Ministerio de Hacienda de Costa Rica. • Seguridad • Escalabilidad • Necesidad de integración con otros organismos • Pensado para mantener la misma tecnología por los próximos 5 años.
Que teníamos? Un sistema funcionando, desarrollado con: WIN Visual Fox Pro WEB C/SQL Oracle Y nos pedían…. WIN .NET WEB .NET Tres Capas SQLServer Cliente/ Servidor • Cambios en • En generador WIN y WEB • La arquitectura de la aplicación • La base de datos • Lo cual implicaba además • La versión de GeneXus (7.5 a 8.0) • La forma de Acceso a datos (ODBC– ADO.NET)
Etapas. Acceso a datos Arquitectura Base de datos 4 GeneXus 8.0 WIN .NET WEB .NET ADO.Net Tres Capas SQLServer 3 GeneXus 8.0 WIN .NET WEB .NET ADO.Net Cliente/ Servidor SQLServer 2 GeneXus 8.0 WIN .NET WEB .NET ODBC Cliente/ Servidor SQLServer 1 GeneXus 7.5 WIN Visual Fox Pro WEB .NET ODBC Cliente/ Servidor SQLServer 0 GeneXus 7.5 WIN Visual Fox Pro WEB C/SQL ODBC Cliente/ Servidor Oracle
Sugerencia I:Planificar la migración!! • Etapas • Pasos simples y comprobables • Si se presenta un problema, siempre es fácil detectarlo y compararlo con algo que funcione bien. • Recursos • Definir los recursos necesarios para cada etapa
Sugerencia II:Grupo de trabajo focalizado en la migración • Equipo dedicado a la migración • Se adelanta a los problemas • Evalúa nuevas versiones • Encontrar soluciones a problemas “tipo” • Comunicar soluciones al resto del grupo de trabajo • Resto del equipo dedicado a programar nuevas funcionalidades.
Sugerencia III: Estudiar la plataforma destino • Si vamos a generar C#, que alguien en el grupo sepa programar en C#. • Armar un “laboratorio” con la plataforma destino para poder hacer pruebas y poder aprender
Sugerencia IV: Borrar todo lo que no sea necesario • Eliminar todo lo que no se use!! • Buscar todos los objetos no alcanzables desde mains y borrarlos.
TIP I: Como consigo el conjunto de objetos usados en mi aplicación? • Distribuir: • Todas las transacciones y Data Views • Todos los mains usados (Facil en 8.0) • Todos los objetos referenciados por esos main (ADD CALLED) • Objetos invocados en forma dinámica
Que me puede ocasionar problemas? Estudiar la KB buscando “cosas raras” • Programas Externos y Stored Procedures • Comandos “SQL”, “JAVA”, “DBASE”, “CSHARP”, “VB” • Funciones NO STANDARD • DataViews con otras bases de datos • Imágenes/Archivos leídos • Componentes ActiveX, DLL, etc. • Calls entre objetos que no son del mismo generador/environment. • Tablas DBF
Programas Externos • Racionalizar su uso • Unificar lo que hacen cosas parecidas • Ver si no hay alguna función de GeneXus para hacerlo. • Reprogramarlos en el nuevo lenguaje (C#) • Probarlos en el nuevo lenguaje y plataformas
Programas externos • En la migración a C# tuvimos que agregar parámetros utilizado por GeneXus pero no por la aplicación. • Versiones diferentes para Windows/WEB, por los parámetros.
Stored Procedures • En ADO.NET la llamada a SP hay que hacerla con el nombre de variable del parámetro. • Cambiar la programación.
Comandos “DBASE” • Buscar todos los objetos que tienen DBASE en el código GeneXus. • Por ejemplo: DBASE wait window 'Presione <ESC> para cancelar' TIMEOUT 5 if lastkey()=27 &SALGO='S' return Endif • Tratar de evitar esta forma de programar. • Sustituir DBASE por CSHARP, y programar código equivalente
Sugerencia V:Usar los archivos XPZ (Distribute) • Estudiar el formato de los archivos XML de distribución (dentro del XPZ) • Herramienta de “Search and Replace” con expresiones regulares • Grep • (SR) www.funduc.com. • Usarlas para buscar que objetos que contienen un string determinado
Funciones • Conocer la lista de funciones soportadas en la plataforma destino. • Detectar cuales son las funciones no soportadas o que cambiaron su significado en la plataforma destino. • Buscar funciones NO STANDARD, o no nativas de GeneXus, para buscarle una alternativa.
TIP IV: Como encontrar que objetos usan funciones no standard? • Consolidarlo en una KB vacía, con la propiedad Function para que no acepte funciones no standard DISEÑO PROTOTIPO • Revisar todo lo que da errores y warnings • Arreglarlo
Sugerencia VI: Estudiar las Releases Notes de los Upgrades • Buscar errores corregidos • Funcionalidades nuevas • Cambios en • Funciones • Propiedades • Comandos • Configuración
Controles ActiveX • No están soportados en el generador .NET • Reprogramarlos con controles nativos. • Mantener algunos programas en Visual FoxPro.
Proceso propuesto • Borrar todo lo que no se necesite migrar • Distribuir modelo original. • Consolidar en una KB vacía y arreglar problemas • Especificar y arreglar problemas • Generar, Compilar y arreglar problemas • Comparar ejecución con modelo anterior y arreglar diferencias • Documentar errores y reportarlos
Conclusiones • Migrar es inevitable • Pero…… • Da trabajo • Hay que planificar • Consume recursos • Posibilita la incorporación de nuevas funcionalidades
Migrando VFP a .NETTips y Sugerencias ¿Preguntas? Enrique Almeida – Concepto ealmeida@concepto.com.uy Gustavo Morales – Aduana de Costa Rica Moralescg@hacienda.go.cr