jueves, 14 de noviembre de 2013

Services URL en aplicaciones Smart Devices

Cuando se desarrolla una aplicación Web muchas de las propiedades configuradas en el environment son grabadas en un archivo de configuración (ejemplo: web.config en el caso de .NET - WEB) para que puedan ser modificadas editando directamente el archivo (sin necesidad del IDE) cuando, por ejemplo, se instala la aplicación en un cliente o en otro ambiente.

Por ejemplo, se configuró el nombre del usuario de la DB en las propiedades del Environment en el IDE de Genexus, si se quiere que la aplicación acceda con otro usuario basta editar el archivo de configuración,

Luego la aplicación Web lee ese archivo de configuración para saber cómo comportarse (en el ejemplo: con qué usuario establece la conexión).

¿Qué pasa en el caso de aplicaciones para Smart Devices?
En las aplicaciones Smart Devices hay un componente del cliente (Java-Android, XCode-iOS, etc) que, en la mayoría de los casos, consume servicios del App Server (.NET, Java, etc). Puede leer más sobre dicha aquí.

¿De dónde se obtienen los servicios?
La capa que ejecuta en el device (APK, IPA, JAD) lo único que precisa saber es ¿dónde están los servicios a consumir?

Eso se configura en el IDE en la propiedad "Services URL" del generador Smart Devices:


Una vez configurada se incluye en la compilación del APK/IPA/JAD correspondiente el cual luego será distribuido directamente o vía las stores.

¿Es modificable la URL de los servicios?
El valor por defecto es el de la propiedad "Web root", sin embargo es modificable independientemente de esta.
Hay que considerar que luego de modificada hay que compilar nuevamente la aplicación para que en el APK/IPA/JAD se incluya esa información.

¿Qué sucede si no sé la URL en la cual quedarán definitivamente esos servicios?
Por ejemplo: soy una empresa de desarrollo que entrego al cliente el WAR y la APK correspondientes pero no sé dónde (servidor, URLs, etc) la instalará el cliente.

En este caso las posibilidades son dos:
1. Definir la URL como dinámica - se puede configurar la propiedad "Dynamic Services URL" en "True" con lo cual, una vez instalada la aplicación, el usuario puede configurar cual es la URL donde están los servicios.
Tiene la contra que agrega complejidad al usuario (cada usuario que la instale tendrá que configurar ese valor).

2. Definir una URL, por ejemplo: http://www.genexus.com/SalesApp, configurar esa como "Service URL" en la propiedad del Environmente, compilar la aplicación y configurar a nivel de App server que esa URL se resuelva en la Aplicación Web donde están los servicios instalados.
De este modo se puede resolver el dinamismo del lado del servidor sin necesidad de re-compilar la aplicación sin requerir que el usuario configure ese valor.


6 comentarios:

  1. Gustavo buenos días,

    Me puedes especificar como es el proceso del punto 2 para que la url se resuelva en la aplicación web donde están los servicios instalados. Espero tus comentarios Gracias.

    ResponderEliminar
  2. Buenos días.

    Quisiera saber si existe alguna forma para hacer que una aplicación móvil pueda conectarse a diferentes servidores sin necesidad de que el usuario ingrese manualmente una url al momento de la instalación.

    Podrias por favor ampliar el concepto del punto 2.

    ResponderEliminar
  3. Hola:
    Podria decirme si pudo resolver la pregunta que hizo mas arriba.

    Saludos y Gracias
    Alejandro

    ResponderEliminar
  4. hola no he podido configurar la url a la que se debe conectar el movil a la laptop, pongo la siguiente.http://192.168.2.135:8081/KnowledgeBase2NetSQLServer_SD/ la ip la tomo de la que me da la propiedad ipconfig en el CMD, agradezco de antemano su invaluable ayuda.

    ResponderEliminar
  5. Yata Garuzi intenta desactivando el firewall, hasta ayer tenia el mismo problema y asi lo solucione.saludos

    ResponderEliminar