Migrando VFP a .NET
Tips y Sugerencias
Experiencia de una migración en la
Aduana de Costa Rica
Enrique Almeida – Concepto
[email protected]
Gustavo Morales – Aduana de Costa Rica
[email protected]
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
Cliente/
Servidor
Oracle
WEB
.NET
Tres Capas
SQLServer
Y nos pedían….
WIN
.NET
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.
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
TIP II – Como ver programas
externos usados en mi KB?
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
TIP III: Que objetos usan el
comando DBASE?
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 .NET
Tips y Sugerencias
¿Preguntas?
Enrique Almeida – Concepto
[email protected]
Gustavo Morales – Aduana de Costa Rica
[email protected]
Descargar

Migrando VFP a .NET Tips y Sugerencias