Title: MatchMaker
1MatchMaker
- A Framework to Support
- Collaborative Java Applications
Jens Hardings P.
2Introducción
- razones para un Groupware Toolkit
- número de computadores conectados a redes en
educación es creciente. - ayudar a desarollaradores a extender sus
aplicaciones stand-alone hacia aplicaciones
colaborativas - basado en RMI
- patrón Model-View-Controler permite agregar
colaboración fácilmente a aplicaciones
stand-alone - desarrollado en paralelo a herramientas de
colaboración (CoolModes, FreeStyler, Noteit) - MatchMaker combina dos paradigmas para desarrollo
de software colaborativo - arquitectura replicada
- servidor central
3- Se comparte el modelo que maneja cada aplicación
- Cada participante tiene una copia completa del
modelo
4MatchMaker Framework
- servidor centralizado mantiene los modelos
compartidos en árboles de sincronización - cada cliente registra listeners para sub-árboles
- creación de objetos
- cambios a objetos
- eliminación de objetos
- ejecución de acciones sobre objetos
- cada cliente puede modificar el árbol de acuerdo
con las acciones del usuario - el cliente elige si quiere recibir o no el evento
que envía - se permite sincronizar solo una parte del árbol
5SyncListener
java.io.Serializable
public interface SyncListener extends
java.util.EventListener public void
objectChanged(SyncEvent event) public void
objectDeleted(SyncEvent event) public void
objectChanged(SyncEvent event) public void
actionExecuted(SyncActionEvent event)
6Client
SyncLabel getSessions() throws
NotBoundException, RemoteException SyncLabel
joinSession(SyncLabel session) throws
RemoteException , UnknownHostException
SyncLabel createSession(SyncLabel session) throws
RemoteException , UnknownHostException
void leaveSession() throws RemoteException
void destroySession(SyncLabel session) throws
RemoteException SyncTree readSyncTree(SyncLabe
l label) void addSyncListener(SyncLabel
label,SyncListener listener) void
removeSyncListener(SyncLabel label,SyncListener
listener) void changeObject(SyncLabel label,
Serializable object, boolean sendToAll) void
deleteObject(SyncLabel label, boolean
sendToAll) void execAction(SyncLabel label,
String action, Serializable argument ,boolean
sendToAll)
7Árbol de Sincronización
8Árbol de Sincronización
9Árbol de Sincronización
10Logging
- logging client es un cliente adicional con un
listener en la raíz del árbol de sincronización - acciones pueden ser agrupadas (atomicity)
- logfiles son escritos en XML
- si el objeto permite ser serializado en XML, se
agrega en XML. De lo contrario, se escribe como
byte array - usos de logging client
- replay
- análisis posterior del trabajo colaborativo
11Replay
- logfiles son parseados
- cliente MatchMaker adicional que re-inyecta las
acciones al servidor - interfaz de usuario para administrar la
repetición de sesiones - dos modos de repetición
- por tiempo (incluyendo repetición rápida)
- paso a paso, usando el mecanismo de agrupación
del cliente de logging
12Undo / Redo
- manejador de Undo/Redo es un cliente adicional
conectado a la raíz del árbol de sincronización - permite undo/redo en toda la sesión
- diferentes modos de operación de undo/redo
- última acción
- últimas n acciones
- todas las acciones dentro de los n últimos
segundos - el sistema mantiene una historia de acciones
dehechas que permite rehacerlas
13Persistencia
- persistencia permite
- asegurar la permanencia de los datos durante la
ejecución - permitir reinicio del servidor sin perder datos
- Persistencia thread adicional que almacena el
árbol de sincronización cada n segundos - se guardan los datos de manera independiente del
logging - se puede simular persistencia a partir de los
logfiles si el servidor no fue iniciado en modo
persistente
14Arquitectura
15Trabajo Futuro
- modelo transaccional y extensión del modelo de
persistencia - comunicación entre servidores mediante SOAP
- comparar diferentes enfoques para seguridad de
datos - implementación de criptografía asimétrica para
asegurar la comunicación de los datos