2009-11-06 13 views
12

Actualmente estoy en la fase de investigación de mi proyecto de disertación.Opciones para Client Server Comunicación en Android

Mi proyecto es un sistema de reserva de boletos para un dispositivo móvil y he elegido apuntar a Android.

Anticipo la necesidad de una arquitectura cliente/servidor con un servidor central, y actualmente estoy viendo cómo Android podría comunicarse con dicho servidor. El servidor otorgaría al cliente acceso a información de ticketing, y el cliente enviaría información sobre reservas de boletos al servidor. Estoy buscando Java EE para el servidor, ya que Java es el idioma con el que tengo más experiencia.

Soy consciente de que Android viene con java.nio y java.net, así como algunos paquetes org.apache, pero también estoy buscando bibliotecas/tecnologías que se puedan usar con Android.

Hasta ahora no he encontrado nada de gran ayuda en Internet, por lo que estoy viendo lo que SO puede sugerir.

Específicamente Estoy interesado en saber:

  1. ¿Qué apoyo está ahí para diversas tecnologías de middleware en Android? p.ej.
    • RPC basado en middleware
    • CORBA
    • mensaje en función de middleware
    • servicios Web como XML-RPC, SOAP, REST
  2. ¿Qué tan bien (o no) Cómo funcionan las bibliotecas Java existentes cuando utilizado en la plataforma de Android? (Por ejemplo, si quería utilizar una biblioteca/API diseñada para Java SE en lugar de Android cuáles son los problemas que pueden surgir?)

Idealmente, como el foco de mi proyecto no está destinado a ser la comunicación entre el servidor y cliente, podría usar un middleware existente para manejar la comunicación, pero estoy preparado para el peor de los casos, que es tener que escribir el mío.

Respuesta

14

¿Qué soporte hay para varias tecnologías de middleware en Android?

Mi opinión personal, aunque no me siento solo al pensar de esta manera, es que solo los protocolos diseñados específicamente para ejecutar a través de Internet son remotamente adecuados para su uso con un cliente móvil. Por lo tanto, de su lista, el único que iba a entretener incluso sería:

servicios Web como XML-RPC, SOAP, REST

Algunas personas han venido manteniendo un puerto Android de kSOAP2 . Sin embargo, tengo la clara impresión de que la mayoría de los desarrolladores de Android que trabajan en esta área se han inclinado por los protocolos REST y REST-ish. Si nada más, eso es lo que todos los sitios web y servicios divertidos están usando para una API, particularmente en comparación con XML-RPC (antiguo) y SOAP (antiguo y repulsivo).

Utilicé con éxito las bibliotecas java.net.URLConnection y HTTPClient de Apache en Android para comunicarme con los puntos finales de estilo REST, tanto directamente como a través de JAR de terceros, sin problemas reales de Android.

¿Qué tan bien (o no) Cómo funcionan las bibliotecas existentes de Java cuando se utiliza en la plataforma Android ?

Es difícil responder a eso en abstracto. Android implementa un subconjunto sustancial de JavaSE, pero no todo JavaSE, por lo que existe la posibilidad de que un JAR determinado espere algo que Android no ofrezca. Del mismo modo, Android no utiliza variables de entorno, modificadores de línea de comandos ni una variedad de otras cosas que los desarrolladores enfocados en el escritorio podrían haber introducido como requisitos. Por lo tanto, algunas cosas han funcionado para mí con nada más que una recompilación (Beanshell), y algunas cosas me han funcionado después de eliminar las clases redundantes (JTwitter), y algunas cosas parecían ser espantosas para funcionar (JavaMail) .

+1

Esta pregunta ya es un poco vieja, pero aún atrae muchas vistas. ¿Su respuesta aún está actualizada o ha cambiado el entorno de Android en los últimos 3 años con respecto a la pregunta original? – chrisbunney

+2

@chrisbunney: Alguien tiene JavaMail funcionando, por lo que ya no es un problema. 'HttpUrlConnection' es el enfoque recomendado para clientes REST sobre Apache HTTPClient. De lo contrario, creo que mis recomendaciones desde entonces todavía son bastante precisas. – CommonsWare

Cuestiones relacionadas