Xavier Lawrence

20
Xavier Lawrence Xavier Lawrence March 2005

description

Xavier Lawrence. March 2005. Presentation Overview. Introduction Project Objectives Standards & Specifications used Open-Source Components (UwCal & Sync4j) Data Synchronization in General Our Synchronization Framework. Presentation Overview (2). Architecture of the System Implementation - PowerPoint PPT Presentation

Transcript of Xavier Lawrence

Page 1: Xavier Lawrence

Xavier LawrenceXavier Lawrence

March 2005

Page 2: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 2 / 20

Presentation Overview

Introduction Project Objectives Standards & Specifications used Open-Source Components (UwCal &

Sync4j) Data Synchronization in General Our Synchronization Framework

Page 3: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 3 / 20

Presentation Overview (2)

Architecture of the System Implementation Possible Improvements Conclusion

Page 4: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 4 / 20

Introduction

Without a Calendar Server Decentralized System Calendars can be anywhere User struggles to make his/her timetable

Personal Calendar Sports Calendar Academic Calendar Conference Calendar

Page 5: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 5 / 20

Introduction (2)

With a Calendar Server Centralized System Distinction: Personal – Public Calendars Need Synchronization Support

Calendar ServerClient Applications

Page 6: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 6 / 20

Project Objectives

Study and find an open-source calendar server that meets all requirements

Study data synchronization and existing synchronization frameworks

Design and implement a little framework defining how the calendar server and synchronization layer should communicate

Develop Portlets allowing the user to access his or her calendar from the web

Page 7: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 7 / 20

Standards & Specifications used

Internet Calendaring and Scheduling Core Object Specification or iCalendar (RFC-2445)

SyncML Portlet API (JSR-168) Apache Struts Framework JMS

Page 8: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 8 / 20

ICalendar (RFC-2445) SampleBEGIN:VCALENDARPRODID:-//Jahia Solutions//iCalendar SyncClient 1.0 MIMEDIR//ENVERSION:2.0METHOD:PUBLISHBEGIN:VEVENTCATEGORIES:SportsCLASS:PUBLICDESCRIPTION:Champions League 8th final Inter Milan – FC PortoDTEND:20050301T200000DTSTART:20050301T230000LOCATION:San Siro, MilanORGANIZER:caladminSUMMARY:CL Inter Milan – FC PortoUID:[email protected]:VEVENTEND:VCALENDAR

Page 9: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 9 / 20

SyncML

The Synchronization Markup Language enables smooth, efficient synchronization of remote data and personal information across devices, platforms, and multiple networks.

Language and platform independent Widely used in the industry

Page 10: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 10 / 20

SyncML (2)

Server

SyncEngine

SyncServerAgent

Client

ClientAgent

SyncMLI/F

SyncMLI/F

Adapter Adapter

SyncMLFramework

SyncMLXML Objects

HTTP / WSP / OBEX / SMTP

WSP: Wireless Session Protocol OBEX: Bluetooth, IrDA

Page 11: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 11 / 20

SyncML (3)

Requires a change log Security Device capabilities

detection

<SyncML> <SyncHdr> <VerDTD>1.0</VerDTD> <VerProto>SyncML/1.0</VerProto> <SessionID>1</SessionID> <MsgID>2</MsgID> <Target> <LocURI>http://www.syncml.org/sync-server</LocURI> </Target> <Source> <LocURI>IMEI:493005100592800</LocURI> </Source> <Cred> <Meta> <Type xmlns='syncml:metinf'>syncml:auth-basic</Type> </Meta> <!—base64 formatting of "userid:password"--> <Data>QnJ1Y2UyOk9oQmVoYXZl</Data> </Cred> </SyncHdr> <SyncBody> ... </SyncBody> </SyncML>

Page 12: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 12 / 20

UwCal (http://www.washington.edu/ucal/)

Calendar server implementing RFC-2445 Built around a service interface

Page 13: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 13 / 20

Sync4j (http://sync4j.funambol.com/)

Sync4j is a synchronization platform based on SyncML

It contains:A Synchronization ServerAn API for implementing SyncML

synchronization clientsSynchronization clients for existing products

such as MS-Outlook, Palms or Pocket PCs

Page 14: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 14 / 20

Data Synchronization

Process of putting 2 sets of data in the same state Generally based on:

ID handling (GUID – LUID mapping) A change detection mechanism (change log + item

state) A modification exchange protocol (Add, Modify &

Delete command) A conflict resolution policy (“Server wins”)

Page 15: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 15 / 20

Our Synchronization Framework

Make the calendar server and the synchronization engine independent:Possible to re-use existing servers Improve performance (minimize network

latency, calendar cache)Avoid incompatible license problems

Framework

CalendarServer

SyncServer

Page 16: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 16 / 20

Our Synchronization Framework (2)

Framework architecture

Storable

SyncManager

Transport Transport

TransportReceiver

Calendar

Manager

TransportSender

Calendar

Server

SyncServer

Network

Behaves as a cache

Connection to the Calendar Server

Isolates events being synchronized(Transaction Manager)

1. Calendar Manager fetches the calendar to synchronize2. SyncManager asks Storable instance to get the calendar3. SyncManager locks all events of the calendar4. SyncManager sends calendar5. Sync Server uses Calendar copy of the Calendar6. Calendar Manager sends back the updated calendar7. Storable instance stores the modified calendar8. SyncManager unlocks the events

Page 17: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 17 / 20

Architecture of the System

Calendar

Server(uwCal)

Client(MS-

Outlook)

Client(PDA)

Client(Cell

phone)

SynchronizationServer

(Sync4j)

DataBase

DataBase

WEBBrowser

Client(Palm)

SyncMLSyncFramework

Jetspeed2PortletContainer

Page 18: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 18 / 20

Implementation

Implementation of the Synchronization Framework:Calendar server & Synchronization serverTransport layer: JMS

Implementation of a synchronization client able to synchronize any iCalendar fileParses the calendar file, extracts the events

and synchronizes them

Page 19: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 19 / 20

Possible Improvements

No recurrence rule support Support of more device applications E-Mail/SMS notification Produce a production release

Page 20: Xavier Lawrence

X. Lawrence - Synchronization of Calendars with a Calendar Server - 20 / 20

Conclusion

Objectives accomplished Gained experience in data synchronization,

calendar representation, Portlets & Java programming

Interesting and concrete project Valuable work experience