0 votos
Hola, que tal? Ante todo muchas gracias por compartir el conocimiento por este medio, y además (ya demasiado cariño al lector jaja) brindar el soporte de preguntas.

En cuanto a la pregunta en si es la siguiente:

Me encuentro desarrollando junto a mi grupo de desarrollo una aplicación que se compone básicamente de 3 modulos:

-Modulo PHP que utilizarán los usuarios de la empresa (empleados, gerentes,etc). El mismo correrá sobre un apache.

-Módulo python que correrá en un servidor Linux, que dara servicio básicamente a los clientes mobile.

-Modulo Android que se comunicará con el modulo python tanto para autenticación como para el resto de la comunicación utilizando JSON.

La duda concreta es si utilizar Socket-TCP o webservices (Rest).

Creemos que podría ser más eficiente el TCP en el uso de los datos (son cadenas muy pequeñas de datos) y no vemos la necesidad de implementar un webservice. Pero encontramos la mayoría de la información y documentación para autenticación y comunicación en general implementada con webservices por lo cual se nos sembró la duda. Yo en mi caso estoy a favor de los WS por su facilidad de implementación y por su soporte. Además no creo que sea tanta la diferencia en eficiencia de comunicación. Como ultimo punto a favor de los WS puedo citar el hecho de que grandes compañias lo utilicen.

Desde ya muchas gracias y espero puedan darme una mano. Gracias.

Cristian
preguntado por CristianEF10 Ago 18, 2015 en Android

2 Respuestas

+1 voto
Hola Cristian, la pregunta es muy buena, aunque todo dependerá de las necesidades.

Siempre que se pueda mejor utilizar webservices (JSON al ser posible) pues tienen muy poca carga, gastan menos batería en dispositivos y consumen menos datos. Ha esto se le aplican muchos casos: Listados de datos (como este Foro), peticiones por acción de usuario, descarga de multimedia, etc

Si bien es cierto que no todo se puede hacer con servicios y hay que utilizar Sockets: cosas que tengan que ser en directo e interactivas vía AJAX, como pueden ser salas de Chats, juegos que requieran actualización inmediata, eventos inmediatos como llamadas a través de servidor, etc.

Los Sockets consumen algo más de recursos y de batería si hablamos de móviles. Facilita también la recepción de datos que no le sirvan al usuario y se pierdan, con el consiguiente gasto de datos. Además, que Sockets al ser eventos complican el testeo.

Es decir, mi recomendación, es que emplees una mezcla si la necesitas (para la mayoría de aplicaciones no necesitas Sockets): Sockets para cuando requieras de eventos inmediatos a través de servidor (y no se puedan hacer con webservices), y webservices para todo lo demás.

De cualquier manera, dependerá de tu sistema y lo solicitado por la empresa. Hacer las dos cosas complica y alarga el desarrollo.
respondido por Ramon [Admin] Ago 18, 2015
Muchas gracias por la respuesta tanto a Ramón como a Ricardo. De verdad es una duda que teníamos y es evitarnos mucho tiempo de pruebas (o todo el que implicaría tomar una mala decisión).

En este caso como comentaba, son JSON simples, pueden llegar a contener ID, booleanos, y algun que otro caso STRING. La idea es tener varios clientes. Por lo cual eso también era una duda, de si llegará a soportar la carga.

Nuevamente muchas gracias a ambos!!

 

 Cristian.
+1 voto
A parte de lo que comenta Ramón, he de añadir que muchas tecnologías en la actualidad tienden a comunicarse por medio de servicios REST y más en la utilización de tecnologías móviles.

Además (para que veas por donde van las tendencias) tecnologías como Angular pueden ser muy útilies y 100% compatibles con servicios REST ya que a partir de un servicio creado (en tu caso en python, pero puede ser también con Spring, Node, PHP, ...) puede ser utilizado tanto para Apps móbiles o Webs.

Mi recomendación y experiencia profesional me hacen recomendarte que siempre que sea posible se utilicen servicios REST (siempre no que haya un impedimento para ello) ya que la mayoria de las tecnologías (me atrevería a decir que todas) soportan parseo de JSON.

SALUD & SL2
respondido por Ricardo Moya [Admin] Ago 18, 2015