/ / Sockets o RMI - rendimiento y escalabilidad - java, sockets, programación en red, rmi

Sockets o RMI - rendimiento y escalabilidad - java, sockets, programación en red, rmi

Actualmente estoy decidiendo qué tipo de comunicación.Método / protocolo de red que voy a utilizar para un nuevo proyecto. Lo que puedo decirles sobre este proyecto es que: - Es basado en Android / Java, usando X cantidad de dispositivos Android - Estos dispositivos deben poder enviarse cadenas a través de una red local. Estamos hablando de cuerdas pequeñas aquí. Pequeño como en menos de 100 caracteres. - La cantidad de paquetes / transmisiones que se envían puede variar "MUCHO". No puedo decir cuánto, desafortunadamente, pero el protocolo de red debe ser lo más escalable posible.

He investigado diferentes tipos de soluciones posibles y ahora estoy decidiendo si usar "Sockets" o "RMI"

Como he entendido sobre RMI:

  • Es más fácil que Java sockets para implementar y mantener (menor cantidad de código)
  • Es "un poco más lento" que los sockets, ya que es una nueva "capa" construida sobre los sockets
  • Puede haber algunos problemas de escalabilidad (si esto es cierto, ¿qué tan "grave" es?), Ya que crea muchos nuevos sockets, lo que da como resultado Excepciones.

Obviamente, el sistema debe funcionar lo más suavemente posible, pero el objetivo principal es hacerlo escalable para que pueda manejar más dispositivos Android.

EDITAR: El sistema que el sistema no es "peer-to-peer". Todos los dispositivos Android deben poder configurarse como el servidor.

Respuestas

0 para la respuesta № 1

Ninguna de sus preocupaciones es el problema real, en mi opinión.

RMI tiene un protocolo predefinido, sockets en bruto no lo hacen.

Si usa sockets sin procesar, debe hacer todo el trabajo para definir qué mensajes y protocolos intercambian el cliente y el servidor.

Hay tantos buenos protocolos existentes (RMI, HTTP, etc.) que me pregunto por qué sientes la necesidad de inventar los tuyos de nuevo.

Los dispositivos Android que se comunican a través de HTTP: dime por qué no será lo suficientemente rápido o escalable. HTTP es lo suficientemente bueno para Internet: ¿por qué no tú y tu solución?


0 para la respuesta № 2

Te sugiero que expongas algún tipo deServicio web (SOAP o REST) ​​en su servidor de aplicaciones. Por ejemplo, las personas exponen con frecuencia sus datos a dispositivos móviles como una API de servicio web REST que devuelve algún tipo de formato JSON para facilitar la recopilación de datos nuevamente en el dispositivo cliente.

De esta manera usted se beneficia del subyacente.Implementación de la comunicación HTTP en cada servidor de aplicaciones; De cualquier otra forma, tendría que escribir su propio grupo de subprocesos de trabajo utilizando las operaciones primitivas de nio para lograr el rendimiento ... No se debe hacer nada en un entorno de producción real, ¿quizás en un entorno académico?