Xavier Lawrence

Post on 12-Jan-2016

23 views 2 download

Tags:

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

Xavier LawrenceXavier Lawrence

March 2005

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

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

Presentation Overview (2)

Architecture of the System Implementation Possible Improvements Conclusion

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

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

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

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

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:12-uwcal-myCalendar@jahia.orgEND:VEVENTEND:VCALENDAR

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

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

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>

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

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

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”)

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

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

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

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

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

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