Controles de usuario GeneXus (User Controls): Úsese con precaución.

Desde la introducción de GeneXus X, tenemos a nuestra disposición los User Controls (en adelante los llamare UC, para abreviar) .  Con ellos, podemos agregar fácilmente a nuestra aplicación funcionalidades que nativamente no se tienen.
Ademas, con la llegada del GeneXus Marketplace, la instalación y manejo de los UC se vio muy simplificada, cosa muy buena.

Algunos de los UC son muy lindos y fáciles de usar, por lo que la tentación de incorporarlos a nuestra aplicación es muy grande. Al usar cualquier componente externo en nuestra aplicación, se agregan dependencias las cuales agregan complejidad a nuestra solución, por lo que es conveniente tomarse un tiempito para  hacer una evaluación de los user controls que pensamos usar.

Algunos de los criterios que me gusta usar para dicha evaluación son:

Costo
Este es el mas fácil de analizar, porque podemos ver si se necesita pagar para usarlo.

Licenciamiento
Algunas veces, si los UC usan licencias no muy conocidas, en necesario evaluarlas con profundidad, para saber si nosotros como desarrolladores o nuestro cliente como usuario no esta incurriendo en algún problema legal por usar dicho UC.
Por ejemplo, es fácil usar GXui Library, los componentes necesarios se encuentran disponibles para que todo el mundo los instale, pero al usarla en aplicaciones comerciales (que no sean GPL v3), necesitamos para desarrollar un licencia comercial de EXTjs.
Esto puede empeorar, si lo que usa GXui, es directamente GeneXus o algún pattern que tengamos instalado
Por ejemplo Workwithplus exige instalar GXUI el cual exige EXTJs, el cual necesita licencias. *

Volumen de uso.
Algunas preguntas que conviene hacerse :

  • El UC tiene buena performance ? Escala correctamente?
  • Soporta la cantidad de usuarios que tengo que manejar?
  • Cuantas veces lo voy a usar/invocar por dia?
  • Transmite mucha información/Usa mucho ancho de banda?

Es común que algunos servicios sean gratuitos hasta N invocaciones diarias (o mensuales/anuales) y luego de pasado dicho umbral hay que pagarlo. Conviene tener muy claro esto, para no tener sorpresas cuando me empiece a ir muy bien con mi aplicación.

Facilidad de Uso. 
Ademas de ver como queda la aplicación terminada, hay que ver que tanto trabajo da desarrollar con dicho control, cuantas horas de capacitación se necesitan para usarlos, si hay buenos ejemplos. A veces, no vale la pena el esfuerzo de programación necesario para agregar algún detalle estético  Otro caso es cuando hacer el primer desarrollo es razonablemente sencillo, pero luego al hacer cualquier cambio, demoro mucho en el mantenimiento de los programas.

Soporte y Mantenimiento 
Conviene evaluar si el control que estoy por empezar a usar, tiene soporte o no. Conviene pensar lo siguiente:

Una vez que tenga mi aplicación funcionando, me empieza a dar un problema relacionado con este user control:

  • Tengo a quien llamar?. Responden en un tiempo aceptable? 
  • Tengo alternativas de sustitución?
  • Puedo anular su funcionamiento y la aplicación puede seguir funcionando?
Si mi aplicación es de misión crítica o de uso intensivo y dependo de un UC externo en su ejecución  conviene tener respuestas para dichas preguntas. 


Versionado
Los UC como todo programa, evoluciona y tiene nuevas versiones. Casi siempre es opcional su instalación pero es común encontrarnos con pequeñas (o grandes) incompatibilidades entre las versiones de los UC.

  • Cuando sale una nueva versión, debo instalarla?
  • Se la debo instalar a mi cliente?
  • Como pruebo mi aplicación cuando hay una nueva versión de alguno de los UC que utilizo?
También es común, que se actualicen algunas de las bibliotecas que son utilizadas por los UC. 
Por ejemplo, si tengo 2 UC que dependen de jQuery y hay una nueva versión de la misma, debo instalarla?
Tengo forma de conocer dichas dependencias? Como pruebo los otros UC que dependen de dicha biblioteca?

Hay algunos UC que utilizan servicios online, por ejemplo el Google Gadget Control usa servicios online de Google.  En estos casos debemos preguntarnos:
  • Que pasa, cuando se cambian dichos programas y mis programas empiezan a mostrar mal los datos?
  • Tengo forma de enterarme?
  • Que hacer en caso de corte de comunicación con los servidores de la otra empresa (en este caso Google). ?
Incompatibilidades y manejo de instalaciones GeneXus. 
Hoy con GeneXus no podemos tener diferentes versiones de UC en la misma instalación  Esto implica que si un proyecto necesita un UC v1.0 y otro el UC v1.1, debo tener 2 instalaciones de GeneXus en mi maquina de desarrollo. Esto duplica el trabajo al instalar otros controles, o al instalar nuevas versiones de GeneXus. 
Cuando la combinación de controles es grande, se puede llegar a tener una instalación de GeneXus por cada KB personalizada que se tenga, lo cual no es demasiado productivo. Para quienes desarrollamos para varios clientes y en diferentes versiones, puede ser un dolor de cabeza. 

Concluyendo
El tema es bastante amplio y da para mas, pero creo que haciéndonos algunas estas preguntas sencillas, nos sera mas fácil poder evaluar si nos conviene usar un determinado control. Hay que usarlos, porque mejoran mucho nuestras aplicaciones, pero hay que usarlos con precaución.

UPDATE: Un tema que no inclui, es la integracion de controles en un mismo formulario.
No es extraño que controles funcionen por separado, pero tengan problemas cuando se usan en conjunto.
Hay que realizar pruebas de como se comportan los UC que van a ser usados en conjunto para no tener problemas Sobre todo, no tener problemas de javascript, que son dificiles de detectar y de solucionar.
Tambien hay que testear los UC con varios navegadores, pues el comportamiento de los mismos es diferente en los distintos navegadores.
Hay varios controles que se comportan bien diferente en Internet Explorer que en otros navegadores.


* Me comentaron que evalúan sacar una versión de WW+ que no tenga estas dependencias. 






Comentarios

  1. Hola, buen día. Me gusta el aporte, también me gusta crear algunos UC pero me ha costado encontrar información puntual de algunos temas sobre los UC. En el caso del Editor no se puede usar al 100%, ya que existen configuraciones que no se ven directamente el el editor, para ello tenemos que ir a los archivos .control y editar algunas propiedades a mano.

    Además de que existente muchas más implementaciones que no he encontrado tan fácil con la documentación expuesta por Artech.

    ResponderBorrar
    Respuestas
    1. Emamanuel, la documentacion que hay que de los UC es insuficiente y deberia mejorarase, pero la mayoria de ellos son desarrollados por terceros y no por GeneXus, por lo que es mas dificil pedirle a todos que tengan buena documentacion. Los ejemplos que se muestran son siempre los mas sencillos.
      Generar esta documentacion y ejemplos sofisticados, lleva muchas horas y es dificil que alguien ponga UC en el marketplace gratis, si su desarrollo lleva muchoas horas. Me da la sensacion que van a empezar a aparecer nuevos UC con costo, pero con mejor documentacion y soporte.

      Borrar

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

Entradas más populares de este blog

Aplicación monolítica o distribuida?

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.