miércoles, 27 de abril de 2011

Sistemas distribuidos

Semana 12
Clase de Programación Orientada a Objetos


Sistemas distribuidos
Se podría definir un sistema distribuido por un conjunto de computadoras que aunque están separadas físicamente y conectadas entre sí por una red, cada computadora tiene sus componentes de software y hardware que el usuario percibe como un solo sistema. El usuario puede acceder a recursos remotos de la misma forma que puede manejar recursos locales, o un conjunto de maquinas que usan un software para conseguir un objetivo común.

Los sistemas distribuidos tienen que ser confiables es por eso que si un componente del sistema de descompone otro componente debe poder reemplazarlo, a esto se le conoce como tolerancia a fallos.

Los tamaños de sistemas distribuidos pueden variar, a esto se le conoce como escalabilidad, es decir pueden ser para una red de área local, metropolitana o Internet.

Características
  • Seguridad en el sistema distribuido
  • Se ejecuta en muchas computadoras
  • Interacción entre los equipos
  • Software diseñado para ser compatible con varios usuarios y sistemas operativos
  • Compatibilidad entre los dispositivos conectados

RMI
RMI(Java Remote Method Invocation) es un mecanismo de Java que llama a un método de forma remota. Es parte de el entorno de ejecución en Java y proporciona una manera sencilla para la comunican de servidores en aplicaciones distribuidas basadas en Java.

En otros lenguajes se puede utilizar CORBA o SOAP en vez de RMI.

La característica de RMI es la facilidad de su uso en la programación por estar diseñado en Java, se puede pasar objetos por referencia, recolectar basura y paso de tipos arbitrarios.

Con RMI, un programa en Java puede exportar un objeto y así estar accesible en la red, entonces el programa permanece esperando peticiones de un puerto TCP. Con este método un cliente podrá conectarse i llamar métodos dados al objeto.

La invocación tiene los siguientes pasos:
  • Encapsulado de los parámetros.
  • Invocación del método.
  • El servidor manda alguna respuesta.
  • El cliente recibe la respuesta y puede utilizarlo.

Serialización
La serialización es un proceso de calificación de un objeto en un medio de almacenamiento ya sea un archivo o un buffer de memoria con el propósito de mandarlo a través de un conexión de red como cadenas de bytes o un formato mas legible como XML.

Esta es una forma muy común de para pasar objetos a través de la red, para hacer persistente un objeto en un archivo o base de datos, o para distribuir objetos idénticos a varias aplicaciones.

Algunas ventajas son:
Un método para checar el cambio en variables con respecto al tiempo
Un método de persistencia de objetos
Un método para la distribución de objetos.

Socket
El socket es concepto abstracto en el cual dos programas programas pueden pasarse datos de manera ordenada.
Un socket se constituye de dos direcciones, una IP y una REMOTA, un protocolo de transporte un par de números de puerto local y remoto.
Los sockets permiten implementar un cliente-servidor. La comunicación debe ser iniciada por uno de los programas que se denomina programa cliente y el segundo programa se mantiene esperando a que el programa cliente inicie por eso se llama servidor.

En mi proyecto
En mi proyecto puedo implementar un pequeño ejemplo que utilicé algunos de estos métodos, lo que se me ocurre es que varias personas puedan dibujar online al mismo tiempo, para esto quiero utilizar algunas propiedades de Javascript y HTML5 como son los socket utilizando Websockets y la serialización :
"Con HTML5 contamos con una nueva técnica para almacenar datos persistentes en el navegador cliente. Cuando HTML5 esté ampliamente extendido podremos hacer uso del API DOM Storage de HTML5 con el cúal los datos persistirán entre sesiones sin tener que usar las limitadas cookies (4KB por cookie). Con el API DOM Storage y los métodos JSON#stringify y JSON#parse podremos almacenar objetos complejos de un modo muy sencillo."

Este es un ejemplo de página en donde varias personas pueden dibujar online:
http://william.hoza.us/graffiti/




Bibliografía

http://es.wikipedia.org/wiki/Sistema_distribuido
http://es.wikipedia.org/wiki/Serializaci%C3%B3n
http://www.inmensia.com/blog/20110125/html5_web_sockets.html
http://notasweb.com/articulo/javascript/persistencia-de-objetos-javascript-en-html5.html



1 comentario:

  1. La cita que pones es sobre cómo lograr que el mismo dibujo persiga entre visitas al sitio, pero no tanto sobre la colaboración, para lo cual sí se ocupa algo tipo sockets para poner los elementos del dibujo (por ejemplo como objetos serializados) en un servidor central y de ahí pasar a los colaboradores o algo.

    +4.

    ResponderEliminar