Está en la página 1de 3

SOCKET VS RMI

SOCKET VS RMI

Juan Camilo Reyes

Resumen
Los URL y las conexiones URL (URLConnection) proporcionan un mecanismo de un nivel relativamente alto (nivel
7 del modelo OSI) para acceder a los recursos de Internet. Algunas veces, los programas requieren una comunicacin
a travs de la red, a un nivel un poco ms bajo; por ejemplo, cuando se desea escribir una aplicacin cliente /
servidor. Para este tipo de programas, se utilizan las clases Socket y RMI, provenientes de java, que trabajan en los
niveles 3 y 4 del modelo OSI.

Palabras claves: Socket, RMI, OSI, conexin, cliente, servidor.


Abstract
URLs and URL connections (URLConnection) provide a mechanism of a relatively high level (level 7 of the OSI
model) to access Internet resources. Sometimes programs require communication over the network, a slightly lower
level; For example, when writing a client / server application. For this type of program, use the Java Socket and RMI
classes, which work at levels 3 and 4 of the OSI model.
Keywords: Socket, RMI, OSI, conection, client, server.

1. Introduccin. cliente y el programa servidor. Cada


programa enlaza un socket en su extremo de
En las aplicaciones cliente / servidor, el
la conexin. Para
servidor proporciona algn servicio, como
comunicarse, cliente y servidor leen y
por ejemplo: procesamiento de consultas a
escriben hacia el socket asociado a la
una base de datos o transmitir los precios
conexin. Cuando se escribe la parte del
actuales de inventario. El cliente utiliza el
programa correspondiente al servidor, se
servicio proporcionado por el servidor, ya
abre un conector (socket), normalmente
sea desplegando los datos de la consulta a la
utilizando un nmero de puerto conocido, y
base de datos o haciendo recomendaciones
se espera a que se conecte algn cliente. El
de compra a un inversionista, teniendo en
cliente llama desde algn nmero de puerto
cuenta los precios del inventario. La
no utilizado
comunicacin entre cliente y servidor debe
(conocido como puerto efmero). En cuanto
ser confiable; esto quiere decir que no se
se conectan el cliente y el servidor, es
pueden perder datos, y que stos deben
corriente que ste ltimo proponga que la
llegar al cliente en el mismo orden en el
conversacin contine en un puerto
cual fueron enviados por el servidor; por
diferente. Este diseo deja libre el nmero
esta razn se utiliza TCP/IP.
de puerto conocido, para manejar una nueva
TCP proporciona un canal de comunicacin
conexin. Una vez conectados el cliente y el
confiable, punto a punto, que las
servidor, hay un protocolo de ms alto nivel
aplicaciones cliente / servidor utilizan para
que es dependiente del puerto que se est
comunicarse entre ellas a travs de Internet.
Para comunicarse a travs de TCP, se utilizando. TCP/IP reserva los primeros
1024 puertos
establece una conexin entre el programa
SOCKET VS RMI

para sus protocolos especficos. La llamado Internet Inter-ORB Protocol o


siguiente tabla muestra algunos nmeros de IIOP.
puerto conocidos. Estos servicios se La opcin propuesta por Microsoft para
ofrecen tanto en puertos TCP como en comunicar objetos remotos es COM
puertos UDP. (Component Object Model). Hoy este
modelo parece haber sido superado por la
RMI es una tecnologa desarrollada por Sun tecnologa .NET.
para permitir la colaboracin de objetos que Cuando el cliente y servidor son escritos en
estn localizados remotamente. Esta Java, la generalidad y complejidad de
tecnologa se enmarca en la idea de permitir CORBA no es requerida. En este caso Sun
colaboracin entre Objetos Remotos. La desarroll RMI, un mecanismo ms simple
idea no es que los objetos se comuniquen a especialmente pensado para comunicacin
travs de la programacin del usuario de entre aplicaciones Java.
protocolos estndares de red. La idea es
tener un objeto cliente, donde podamos 2. Marco Terico.
podamos completar un requerimiento de
datos. El cliente luego prepara el Socket - usted tiene que manejar exactamente qu
requerimiento que enva a un objeto sockets se utilizan, se especifica TCP o UDP, que
ubicado en un servidor. El objeto remoto maneja todo el formato de los mensajes que
prepara la informacin requerida viajan entre el cliente y el servidor. Sin embargo,
(accediendo a bases de datos, otros objetos, si tiene un programa existente que habla sobre
etc). Finalmente el objeto remoto enva la sockets con los que desea interactuar, no importa
respuesta al cliente. En lo posible esta el idioma en el que est escrito, siempre y cuando
interaccin debera ser lo ms semejante coincidan los formatos de los mensajes.
posible a requerimientos hechos localmente. En los sockets dos programas establecen conexin
En principio se puede anhelar la y se envan mensajes. Estos mensajes pueden ser
colaboracin de objetos escritos en cualquier clase java que implemente la interface
cualquier lenguaje (no es el caso de RMI). Serializable
Esta idea no es simple de lograr, En rmi un programa (cliente) le pide al otro
corresponde al esfuerzo del grupo OMG (servidor) una instancia remota (objeto remoto) de
(Object Management Group, una clase y luego llama a sus mtodos. Los
www.omg.org) los cuales propusieron mtodos, aunque son llamados en el cdigo del
CORBA (Common Object Request Broker cliente, se ejecutan en el servidor. Los parmetros
Architecture), el cual define un mecanismo que se pasan a los mtodos y el resultado devuelto
comn para descubrir servicios e deben ser clases que implementen Serializable o
intercambiar datos. CORBA usa Object tipos primitivos de datos
Request Broker (ORB) como traductores RMI - oculta gran parte del cdigo especfico de
universales para la comunicacin entre la red, no tiene que preocuparse por los puertos
objetos. Los objetos remotos hablan a travs especficos utilizados (pero puede hacerlo si lo
de estos ORB. El protocolo de desea), RMI gestiona el formato de los mensajes
comunicacin entre objetos y ORB es entre cliente y servidor. Sin embargo, esta opcin
es realmente slo para la comunicacin entre los

2
SOCKET VS RMI

programas Java. (Usted * podra * interfaz de los Mensajes en broadcast. Los sockets permiten
programas Java RMI con los programas escritos enviar mensajes sin destinatario, de forma que
en otros idiomas, pero probablemente hay cualquiera puede recogerlo. Con rmi la
maneras ms fciles de hacerlo ...) comunicacin siempre es punto a punto.
RMI se construye en la parte superior de los Carga dinmica de clases. Rmi permite la carga
sockets, traduce llamadas de mtodo y devuelve dinmica de clases, es decir, el servidor puede
valores y los enva a travs de sockets. pasar al cliente clases que este no tenga en su
VENTAJAS E INCONVENIENTES CLASSPATH en tiempo de ejecucin y
Codificacin: El establecimiento de la conexin viceversa. Esto hace que ampliar dinmicamente
es similar en nmero de lneas de cdigo en el comportamiento de una aplicacin rmi sea ms
ambos casos (un par de lneas). sencillo.
Los sockets necesitan ms cdigo para identificar
qu mensaje llega y tratarlo en consecuencia
(sentencias switch-case o tantos if como tipos de CONCLUSIONES
mensaje distintos). En rmi se hace con llamadas a
mtodos, por lo que no es necesario ningn tipo CUNDO USAR SOCKETS Y CUNDO
de codificacin adicional. USAR RMI
En rmi se necesitan una serie de herramientas Si nuestro enlace fsico es lento (puerto RS232,
adicionales, compilar los objetos remotos adems modem, etc) es mejor usar sockets.
de con javac con rmic y finalmente tener lanzado Si tenemos pocos tipos de mensajes y se usan
el programa rmiregistry. para transmitir muchos datos (por ejemplo,
En los sockets se enva un mensaje y se debe transferencia de ficheros), es mejor sockets.
esperar por la respuesta, que puede llegar o no. Si el servidor ofrece muchas funcionalidades, es
Las lecturas de mensajes dejan bloqueado el hilo mejor rmi.
hasta que llegan. En rmi la llamada queda Si la aplicacin servidor va a modificarse con
bloqueada hasta recibir la respuesta. En ambos cierta frecuencia y no queremos tener que
casos suele ser necesario el uso de hilos si las actualizar todos los clientes uno a uno, la carga
respuestas pueden tardar. dinmica de clases de rmi puede ser una solucin.
Ancho de banda: En los sockets, por la red slo
se envan los mensajes que nosotros enviamos. En REFERENCIAS BIBLIOGRAFICAS
rmi, se enva adems todo el protocolo interno de
https://docs.oracle.com/javase/7/docs/api/java/net/
rmi, que suele ser de un tamao considerable. En
Socket.html
general, rmi consume ms ancho de banda de
nuestro enlace fsico que los sockets. https://cloud.google.com/appengine/docs/standard/
Comunicacin con otros lenguajes: rmi es java/sockets/
puramente java, as que slo puede integrarse
entre dos programas java. Con sockets podemos http://www.javaworld.com/article/2077322/core-
java/core-java-sockets-programming-in-java-a-
comunicarnos con cualquier otro programa hecho tutorial.html
en cualquier otro lenguaje, aunque tendremos que
enviar los mensajes campo a campo para hacerlos http://www.public.iastate.edu/~java/docs/guide/rmi
compatibles con el otro lenguaje. /index.html

También podría gustarte