Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Aplicaciones móviles para ambientes descentralizados

963 views

Published on

Un ejercicio para telefonía móvil de centralización de información en ambientes inseguros y de poca conectividad. se muestran algunas ideas para llevarlo a cabo de manera idónea.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Aplicaciones móviles para ambientes descentralizados

  1. 1. Aplicaciones móviles en ambientes descentralizados vladimir dot calderon at infonexo dot net Rev. 00 03 – Junio - 2009
  2. 2. Problema <ul><li>En un ambiente descentralizado (muchas sucursales gemelas o no), obtener un reporte general de ventas de toda la organización en el teléfono celular. </li></ul>
  3. 3. Consideraciones <ul><li>En ambientes descentralizados se pueden tener estructuras como la siguiente: </li></ul>Oficina central Sucursal 1 Sucursal 2
  4. 4. Consideraciones 2 <ul><li>En el caso general, tenemos los siguientes problemas </li></ul><ul><ul><li>Sucursales grandemente separadas, por lo tanto comunicación esencialmente por Internet (más barato) </li></ul></ul><ul><ul><li>Conectividad no fiable entre sucursales y central </li></ul></ul><ul><ul><li>Sistemas potencialmente diferentes entre sucursales (piense en las sucursales como empresas distintas de una mega corporación) </li></ul></ul><ul><ul><li>Seguridad en el acceso a la información por parte de los participantes </li></ul></ul>
  5. 5. Propuesta de la solución <ul><li>Ataquemos cada una de las consideraciones </li></ul><ul><li>Seguridad: </li></ul><ul><ul><li>Se puede realizar la comunicación por canales seguros tipo HTTPS o por medio de VPNs, pero… </li></ul></ul><ul><ul><li>No se puede contar todo el tiempo con una conectividad fiable ni tampoco con una conectividad que se vea disminuida por los protocolos pesados de seguridad. </li></ul></ul><ul><ul><li>Solución propuesta: conexión a partir de mensajes con servicios web (aprovechando lo stateless de http) </li></ul></ul><ul><ul><li>TODOS los mensajes deben tener un argumento que sea un desafío construido a partir de los demás argumentos y un secreto. </li></ul></ul>
  6. 6. Solución: Seguridad <ul><li>Los stubs en las sucursales serán entones del estilo: </li></ul><ul><li>Donde activador deberá ser algo como: </li></ul><ul><li>El implementador debe cuidar la manera de administrar el secreto </li></ul>public ResumenFacturacion ventas( int nocia, DateTime fechaIni, DateTime fechaFin, string activador) activador = sha1(nocia + fechaIni + fechaFin + “s3cr3t0”)
  7. 7. Solución: Conectividad <ul><li>Se trata de obtener información de las sucursales. Información que las sucursales generan </li></ul><ul><ul><li>Aplicando OBSERVER, la sucursal comunicará sus nuevos registros a la central, así evitamos espera activa. </li></ul></ul><ul><ul><li>Crear una tabla de información que registre el estado de la última comunicación y que pida de nuevo la misma cuando ésta esté corrupta (inspirándose del protocolo ventana TCP) </li></ul></ul><ul><ul><li>Stubs en la central deben tener el mismo mecanismo de seguridad. </li></ul></ul><ul><ul><li>En caso de querer un poco de obfuscación, los argumentos pueden ir como complejos objetos en forma de XML serializados en un string. </li></ul></ul>
  8. 8. Conectividad <ul><li>Esquema obfuscación </li></ul>Oficina central Encabezado Detalle XML STRING Serializar bool f(string xml, string activador) Llama servicio Sucursal 1
  9. 9. Solución: Sistemas distintos <ul><li>Una siempre buena solución en el tema de coordinar la información entre sistemas distintos es el establecimiento de interfases </li></ul><ul><li>Se deben definir al principio de la comunicación y al final de la comunicación. </li></ul><ul><ul><li>Mientras más homogéneas las sucursales esto se desarrolla mucho más rápido. </li></ul></ul><ul><li>Por si acaso: consiste en definir: </li></ul><ul><ul><li>Estructuras XML de comunicación a los servicios web </li></ul></ul><ul><ul><li>La declaración de las funciones que se deberían implementar </li></ul></ul>
  10. 10. Implementando <ul><li>Se debe tener cuidado de definir claramente y desde el principio qué servicios van de dónde a dónde. </li></ul><ul><ul><li>Crucial para definir las tablas que tienen la información (las definimos en la sucursal, o en la central) </li></ul></ul><ul><li>Establecer contratos de servicios con el departamento de sistemas para conocer los límites aceptables en cuanto a conectividad y otros </li></ul><ul><ul><li>Esto para poder responder a: Cuándo es un ERROR? </li></ul></ul><ul><li>No olvidarse de atributos de calidad: logging, buenas prácticas, revisión de pares, etc, etc… </li></ul>
  11. 11. Resultado <ul><li>Se obtienen los datos a partir de la central, la cual a su vez pide los datos (si necesario) de las sucursales </li></ul>

×