sincronización de objectos compartidos usando matchmaker a través de web services

13
Sincronización de Objectos Compartidos Sincronización de Objectos Compartidos usando MatchMaker usando MatchMaker a través de Web Services a través de Web Services Thomas Pieper DCC, Universidad de Chile

Upload: daria

Post on 05-Jan-2016

27 views

Category:

Documents


0 download

DESCRIPTION

Thomas Pieper DCC, Universidad de Chile. Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services. MatchMaker. MiddleWare creado por COLLIDE (COLlaborative Learning in Intelligent Distributed Environment) http://www.collide.info - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services

Sincronización de Objectos CompartidosSincronización de Objectos Compartidos

usando MatchMakerusando MatchMaker

a través de Web Servicesa través de Web Services

Thomas Pieper

DCC, Universidad de Chile

Page 2: Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services

MiddleWare creado por COLLIDE (COLlaborative Learning in Intelligent Distributed Environment)

http://www.collide.info

Pensado para facilitar el desarrollo de aplicaciones colaborativas en Java

El desarrollador no necesita diseñar un protocolo de comunicaciones ni el servidor. MatchMaker también maneja la concurrencia mediante monitores de Java

Clientes comparten objetos, típicamente asociados a elementos de interfaces gráficas

MatchMaker

Page 3: Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services

MatchMaker

Arquitectura de Servidor Central: clientes envían eventos al servidor y este los reparte al resto de los clientes

Servidor puede manejar varias sesiones simultáneamente. Cada sesión posee un “árbol de sincronización”

Tanto cliente como servidor tienen un árbol de sincronización que representa la lógica de la aplicación y mantiene el estado de la sesión

Clientes pueden: crear sesión, unirse a una sesión existente, salir de una sesión y seguir trabajando offline, destruir una sesión

Page 4: Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services

MatchMaker

El Árbol de Sincronización resuelve el problema de los latecomers ya que este se envia completo cuando un cliente se une a una sesión. Luego la sincronización es por eventos.

El Árbol de Sicronización permite también que hayan distintas versiones para un mismo cliente.

Ejemplo:

• Versión para alumno

• Versión para Profesor

• Versión para Palm

• ETC

Page 5: Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services

RMI

Versión más reciente de MatchMaker utiliza RMI como herramienta de comunicación

RMI (Remote Method Invocation): Implementación de CORBA exclusivo para aplicaciones Java.

Facilita la programación de aplicaciones en red a través del paradigma de objetos remotos y llamadas a procedimientos remotos (RPC).

Page 6: Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services

RMI

En un esquema muy resumido: El servidor pone objetos accesibles desde la red:

class Hello

{

public String Hola()

{

return "Hola Mundo";

}

}

Un programa cliente crea una referencia a esos objetos…

HelloInterface hello = (HelloInterface) Naming.lookup ("//localhost/Hello");

… e invoca métodos de ese objeto remoto como si fuera local:

String holamundo = hello.Hola();

Page 7: Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services

Web Services

El Web es a las Personas

como Web Services es a las Aplicaciones

Las personas sabemos leer; las aplicaciones saben parsear

Ejemplo: Consultar el nombre de una persona en el sitio del Registro Civil a través de su RUT

Web Services: mensajería en XML usando SOAP (Simple Object Access Protocol) como protocolo de RPC y HTTP como capa de comunicaciones.

Page 8: Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services

Web Services

Ejemplo de mensaje SOAP:

<?xml version='1.0' encoding='UTF-8'?>

<SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/09/soap-envelope"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<SOAP-ENV:Body>

<ns1:getWeatherResponse

xmlns:ns1="urn:examples:weatherservice"

SOAP-ENV:encodingStyle="http://www.w3.org/2001/09/soap-encoding">

<return xsi:type="xsd:int">65</return>

</ns1:getWeatherResponse>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Page 9: Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services

Web Services

Ejemplo de Web Service: API de Google http://www.google.com/api

http://www.googlefight.com

WSDL: Web Service Description Languaje. Documento XML que describe como podemos comunicarnos con el Web Service

WSDL: Describe los métodos disponibles, los argumentos que reciben y lo que retornan

Ejemplo de documento WSDL: http://api.google.com/GoogleSearch.wsdl

Page 10: Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services

Apache AXIS

AXIS: Apache EXtensible Interaction System

Framework para manejar SOAP y Web Services. Hay versiones para Java y C++

La versión para Java se instala como si fuera una aplicación web (conjunto de ServLets) dentro de un contenedor web.

Filosofía de AXIS: Crear web services de manera tan fácil como “arrastrar y soltar” clases Java dentro del contenedor web.

Page 11: Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services

Apache AXIS

Ejemplo de Web Service:

public class Calculadora

{

public int sumar (int i1, int i2)

{

return i1 + i2;

}

public int restar (int i1, int i2)

{

return i1 - i2;

}

}

Para programar Web Services más complejos, AXIS provee herramientas que facilitan mucho su desarrollo: Java2WSDL y WSDL2Java

Page 12: Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services

Apache AXIS

Ejemplo de cliente (sin AXIS):public class CalcClient

{

public static void main (String[] args) throws Exception

{

String endpoint = "http://localhost:8080/axis/Calculadora.jws";

Integer i1 = new Integer("1");

Integer i2 = new Integer("2");

Service service = new Service();

Call call = (Call) service.createCall();

call.setTargetEndpointAddress (new java.net.URL(endpoint) );

call.setOperationName ("sumar");

call.addParameter( "op1", XMLType.XSD_INT, ParameterMode.IN );

call.addParameter( "op2", XMLType.XSD_INT, ParameterMode.IN );

call.setReturnType( XMLType.XSD_INT );

Integer resultado = (Integer) call.invoke (new Object [] { i1, i2 });

System.out.println ("Resultado: " + resultado);

}

}

Page 13: Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services

Apache AXIS

Ejemplo de cliente (con AXIS):

public class CalcClient

{

public static void main (String[] args) throws Exception

{

CalculadoraService service =

new CalculadoraServiceLocator ("http://localhost:8080/axis/Calculadora.jws");

Calculadora calc = service.getcalculadora();

int resultado = calc.sumar (1, 2);

System.out.println ("Resultado: " + resultado);

}

}