Sei sulla pagina 1di 6

RMI presenta una serie de ventajas e inconvenientes:

VENTAJAS

 RMI facilita la elaboración de aplicaciones que sigan el modelo cliente-servidor. Dada su


naturaleza, resulta muy sencillo integrar RMI con la versión empresarial del lenguaje
Java (J2EE); con el objetivo de desplegar, por ejemplo, los muy extendidos servicios
web.RMI proporciona un mecanismo para la elaboración de aplicaciones con objetos
Java distribuidos. Al estar integrado dentro de la jerarquía de paquetes oficiales del
lenguaje de programación Java, se adapta perfectamente al modelo de programación
del mismo.
 Entre sus principales ventajas destaca su sencillez, con RMI los objetos remotos se
manejan como si fueran locales.
 Por otro lado, al existir una separación entre interfaces e implementaciones, en una
aplicación con objetos distribuidos se pueden aprovechar las ventajas de la
programación orientada a objetos.
 La carga dinámica de clases permite, por ejemplo, que los clientes se conviertan
en applets interpretados en un navegador. RMI proporciona un servicio de
registro, rmiregistry, que facilita la localización por nombre de los servicios. Por último,
existe la posibilidad de añadir a las comunicaciones RMI protocolos de seguridad, como
SSL o HTTPS.

Desventajas:

 En contrapartida, uno de sus principales inconvenientes es el uso exclusivo de Java;


problema parcialmente resuelto con la posibilidad, incorporada en las últimas versiones,
de trabajar con nuevos protocolos que proporcionan interoperabilidad.
 Por otro lado, RMI no proporciona metainformación, es decir, no dispone de un sistema
que informe de los servicios disponibles y sus APIs (nombre de métodos, valores de
retorno, etc.). Cierta consideración merece el hecho de que, al realizar el paso de
objetos por valor, cuando se serializa un objeto hay que hacerlo junto con todos aquellos
de los que tiene referencias. Cuanto mayor sea el tamaño de estos objetos, mayor será
el tráfico entre máquinas.
 Por último, no existe un mecanismo que controle las transacciones realizadas y actúe
cuando no se completen.
 Disminuye el rendimiento con el crecimiento del sistema

SOCKETS

Definición: Un socket es el extremo de un enlace de comunicación de dos-vías


entre dos programas que se ejecutan en la red. Un socket se asocia a un número
de puerto, para que TCP pueda identificar la aplicación a la cual se están enviando
los datos.
Un conector de red es similar a un conector eléctrico. Hay distintos enchufes en la red
eléctrica que tienen una forma estándar de entregar la energía. Cualquier cosa que
entienda el protocolo estándar puede enchufarse al conector y enviar información. En los
enchufes eléctricos no importa si se conecta una lámpara o un tostador, ya que siempre
que trabajen con el voltaje adecuado, ambos funcionarán correctamente.
Pensemos cómo se crea la factura del servicio de energía eléctrica: En algún lugar entre
su casa y la red eléctrica hay un contador. Cada kilovatio que pasa a través del contador
se queda registrado y periódicamente la factura llega a nuestra “dirección”. Por eso,
aunque la electricidad fluya libremente a través de la red, todos los conectores de la casa
tienen una dirección particular. De la misma forma funcionan los conectores de la red,
excepto en que en lugar de electrones y de calles se trabaja con paquetes TCP/IP y
direcciones IP.
La noción de conector permite a un único computador atender a diferentes clientes a la
vez, además de proporcionar diferentes tipos de información. Esto se consigue utilizando
lo que se conoce como puerto, que es un conector numerado en una máquina particular.
Se dice que un proceso servidor "escucha” en un puerto hasta que un cliente se conecta a
él. Un servidor puede aceptar múltiples clientes conectados todos ellos por el mismo
número de puerto, aunque cada sesión es única. Para gestionar las conexiones de varios
clientes, el proceso servidor debe ser un proceso multihilo o disponer de otros mecanismo
para manejar las E/S simultáneas.
Normalmente, un servidor se ejecuta en un computador específico y tiene un socket
enlazado a un número específico de puerto. El servidor sólo espera, escuchando en el
socket, hasta que el cliente realice una solicitud de conexión.
En el lado del cliente: El cliente conoce el nombre de host de la máquina en la cual se
está ejecutando el servidor, y el número de puerto en el cual se encuentra conectado el
servidor. Para realizar la solicitud de conexión, el cliente trata de “reunirse” con el
servidor utilizando el nombre del computador donde esté se está ejecutando y el número
de puerto.

Si todo funciona adecuadamente, el servidor acepta la conexión. Durante la aceptación, el


servidor obtiene un socket enlazado a un puerto diferente. Requiere un nuevo socket (y por tanto
un nuevo puerto), para poder continuar escuchando en el socket original por
otras solicitudes de conexión, mientras atiende las solicitudes del cliente conectado.

En el lado del cliente, si la conexión es aceptada, se crea un socket, que puede ser
utilizado para comunicarse con el servidor. El socket en el lado del cliente no se enlaza
al número de puerto utilizado para establecer la conexión con el servidor. En lugar de
esto, al cliente se le asigna un número de puerto local, en la máquina en la cual se está
ejecutando.
Ahora el cliente y el servidor pueden comunicarse, escribiendo o leyendo en sus
respectivos sockets.
Desde la arquitectura TCP/IP los sockets están representado por dos elementos importantes y
fundamentales: La dirección IP del equipo que permite identificar la ubicación del ordenador y el
número de puerto que identifica un posible proceso a ejecutar.
Los sockets se clasifican en dos tipos: En orientadas a conexión y no orientadas a conexión, esto
depende del protocolo que utilizara para la comunicación.

CONEXIONES POR PROTOCOLO

Conexión de socket con protocolo UDP:


1.El programa que proporciona el servicio (servidor) crea una instancia de la clase
DatagramSocket, indicando el puerto asociado al servicio:
DatagramSocket MiSocket = new DatagramSocket(4000);
2.El programa servidor crea una instancia de la clase DatagramPacket, donde se guardarán los
datos recibidos:
DatagramPacket(buffer, buffer.length);
3.hasta que llegan los datos: El programa servidor invoca el método receive sobre el socket de
tipo DatagramSocket. Este método, por defecto, bloquea el programa MiSocket.receive(Paquete);
4.El programa cliente crea una instancia de tipo DatagramSocket;
DatagramSocket MiSocket = new DatagramSocket();

5.El programa cliente crea una instancia de tipo DatagramPacket, proporcionándole los datos,
además de la dirección y puerto destino.
DatagramPacket Paquete = new DatagramPacket(buffer, Mensaje.length(),
InetAddress.getByName(“localhost”),4000)
6.El programa que utiliza el servicio (programa cliente) invoca el método send sobre el socket de
tipo DatagramSocket:
MiSocket.send(Paquete);

Conexión de socket con protocolo UDP:


TIPOS DE SOCKET

Sock_dgram: socket de comunicación en modo no conectado, utiliza el protocolo udp que no


verifica ni valida que los paquetes lleguen completos.
Sock_stream: para comunicación en modo conectado, utiliza el protocolo TCP que garantiza y
verifica que los paquetes lleguen completos
Sock_raw: utiliza el protocolo de capa 3 (nivel de red), permite el acceso a protocolos de más bajo
nivel como el IP ( nivel de red )
Sock_seqpacket: similar al sock_stream, pero los mensajes tienen tamaño fijo.

Ventajas del Uso de Sockets:

Su principal ventaja radica en que son muy eficientes a la hora de enviar un número elevado de
mensajes y datos.

- Optimización del ancho de banda.


- Compatible con casi todos los lenguajes de Programación
- Disponible en casi todos los sistemas operativos (Windows, Unix, MacOs)
- Permite intercambiar flujo de datos entre un cliente – servidor de manera fiable y ordenada.
- Se beneficia de la funcionalidad API.

Desventajas del uso de Sockets:

- Complicado de desarrollo
- Necesario determinar direcciones ip, puertos y protocolos.
- Es dependiente de la respuesta del servidor.
- En el tipo de sockets no orientado a la conexión, el protocolo UPD no garantiza que los datos
lleguen en el mismo orden en que se enviaron.
REFERECIAS BIBLIOGRAFICAS:

 http://www.iuma.ulpgc.es/users/lhdez/inves/pfcs/memoria-domingo/node6.html
 http://profesores.elo.utfsm.cl/~agv/elo330/2s05/projects/CesarVasquez/sitio_web/compar
acion02.html
 http://tedhygarcia.blogspot.com/2012/06/los-sockets-son-utilizados-como-medios.html
 http://wilsonvidal19.blogspot.com/p/sockets-caracteristicas-principales-los.html
 https://ccnadesdecero.es/protocolo-tcp-y-udp-comparacion/

Potrebbero piacerti anche