}w !"#$%&'()+,-./012345
M ASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Synchronizace dat webovych ´ aplikac´ı s mobiln´ımi zaˇr´ızen´ımi ´ D IPLOMOV A´ PR ACE
V´ıtˇezslav Homolka
Brno, podzim 2010
Prohl´asˇ en´ı ˚ Prohlaˇsuji, zˇ e tato diplomov´a pr´ace je mym ım autorskym ´ puvodn´ ´ d´ılem, kter´e jsem vypracoval samostatnˇe. Vˇsechny zdroje, prameny a literaturu, kter´e jsem pˇri vypracov´an´ı pouˇz´ıval nebo z nich cˇ erpal, v pr´aci rˇ a´ dnˇe cituji ´ s uveden´ım upln´ eho odkazu na pˇr´ısluˇsny´ zdroj.
Vedouc´ı pr´ace: Ing. Petr Ad´amek ii
Podˇekov´an´ı Dˇekuji vˇsem, a zejm´ena sv´e rodinˇe a Petru Ad´amkovi, za trpˇelivost.
iii
Shrnut´ı C´ılem t´eto pr´ace je prozkoumat problematiku synchronizace dat mobiln´ıch zaˇr´ızen´ı a analyzovat moˇznosti synchronizace tˇechto zaˇr´ızen´ı s webovymi ´ aplikacemi. Na z´akladˇe z´ıskanych poznatku˚ je navrˇzen koncept aplikaˇc´ n´ıho r´amce, ktery´ umoˇzn´ı implementaci synchronizace dat mobiln´ıch zaˇr´ızen´ı do webovych ´ aplikac´ı.
iv
Kl´ıcˇ ov´a slova mobiln´ı zaˇr´ızen´ı, OMA DS, SyncML, synchronizace, webov´e aplikace, Bluetooth, JABWT
v
Obsah 1 2
3
´ Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Synchronizace dat mobiln´ıch zaˇr´ızen´ı . . . . . . . . . . . . . 2.1 Probl´emy synchronizace dat mobiln´ıch zaˇr´ızen´ı . . . . 2.2 Pˇrehled synchronizaˇcn´ıch protokolu˚ . . . . . . . . . . . 2.2.1 IrMC . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 HotSync a Palm zaˇr´ızen´ı . . . . . . . . . . . . . . 2.2.3 ActiveSync, WMDC, Exchage ActiveSync . . . . 2.2.4 OMA DS (SyncML) . . . . . . . . . . . . . . . . . ˚ 2.3 Zpusoby pˇren´asˇ en´ı dat mobiln´ıch zaˇr´ızen´ı . . . . . . . 2.3.1 S´eriovy´ port . . . . . . . . . . . . . . . . . . . . . 2.3.2 Infraˇcerveny´ port . . . . . . . . . . . . . . . . . . Popis nˇekterych ´ specifikac´ı . . . . . . . . . . . . 2.3.3 Mobiln´ı internet . . . . . . . . . . . . . . . . . . . 2.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . Architektura Bluetooth . . . . . . . . . . . . . . Popis nˇekterych ´ protokolu˚ [19] . . . . . . . . . . Bluetooth profily . . . . . . . . . . . . . . . . . . Uk´azky standardn´ıch aplikaˇcn´ıch profilu˚ . . . . 2.3.5 USB rozhran´ı . . . . . . . . . . . . . . . . . . . . 2.3.6 WiFi . . . . . . . . . . . . . . . . . . . . . . . . . ˇ arov´e kody ´ 2.3.7 C´ . . . . . . . . . . . . . . . . . . . . . OMA Data Synchronization . . . . . . . . . . . . . . . . . . 3.1 Z´akladn´ı c´ıle n´avrhu OMA DS protokolu . . . . . . . . 3.1.1 Efektivita pˇrenosu dat . . . . . . . . . . . . . . . 3.1.2 Nez´avislost na pˇrenosov´em m´ediu a protokolu 3.1.3 Synchronizace libovolnych ´ dat . . . . . . . . . . 3.1.4 Nez´avislost na programovac´ım jazyce . . . . . . 3.2 Hlavn´ı vlastnosti protokolu . . . . . . . . . . . . . . . . 3.2.1 Synchronizaˇcn´ı kotvy . . . . . . . . . . . . . . . 3.2.2 Mapov´an´ı na LUID a GUID . . . . . . . . . . . . ˇ sen´ı konfliktu˚ . . . . . . . . . . . . . . . . . . . 3.2.3 Reˇ 3.2.4 Logov´an´ı informac´ı . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 2 2 4 4 4 4 5 6 6 6 6 7 8 9 9 10 11 12 12 12 13 13 13 14 15 15 15 15 16 16 16 vi
3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.17 3.2.18 3.2.19
Obnova vˇsech dat . . . . . . . . . . . . . . . . . . . . . Maz´an´ı dat . . . . . . . . . . . . . . . . . . . . . . . . Vymˇ ´ ena informac´ı o vlastnostech zaˇr´ızen´ı . . . . . . Adresa zdroje a c´ıle synchronizace . . . . . . . . . . . Spr´ava pamˇeti zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . Pˇrenos velkych ´ objemu˚ dat . . . . . . . . . . . . . . . Synchronizace hierarchickych ´ dat . . . . . . . . . . . Pˇreruˇsen´ı a obnova synchronizace . . . . . . . . . . . Signalizace pˇret´ızˇ en´ı serveru . . . . . . . . . . . . . . Typy synchronizac´ı . . . . . . . . . . . . . . . . . . . . Standardn´ı form´aty dat . . . . . . . . . . . . . . . . . ˚ eh synchronizace . . . . . . . . . . . . . . . . . . Prubˇ Elementy zpr´av synchronizace . . . . . . . . . . . . . WBXML a OMA DS . . . . . . . . . . . . . . . . . . . Protokol OMA DM . . . . . . . . . . . . . . . . . . . . Vyhody pro c´ılov´e skupiny uˇzivatelu˚ OMA DM . . . ´ 4 Integrace synchronizace dat do webovych ´ aplikac´ı . . . . . . . . 4.1 Neform´aln´ı popis aplikace a poˇzadavky . . . . . . . . . . . . 4.1.1 Hlavn´ı funkˇcn´ı poˇzadavky . . . . . . . . . . . . . . . 4.1.2 Hlavn´ı nefunkˇcn´ı poˇzadavky . . . . . . . . . . . . . . 4.2 Analyza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ´ 4.2.1 Data mobiln´ıch zaˇr´ızen´ı . . . . . . . . . . . . . . . . . 4.2.2 Volba protokolu . . . . . . . . . . . . . . . . . . . . . . 4.2.3 Pˇrenos dat mezi mobiln´ım zaˇr´ızen´ım a webovou aplikac´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.4 Podpora USB v Javˇe . . . . . . . . . . . . . . . . . . . 4.2.5 Podpora Bluetooth v Javˇe . . . . . . . . . . . . . . . . ´ 4.2.6 Spouˇstˇen´ı Java kodu pˇres webov´e rozhran´ı . . . . . . Java applety . . . . . . . . . . . . . . . . . . . . . . . Java Web Start . . . . . . . . . . . . . . . . . . . . . . 4.3 N´avrh a implementace Bluetooth modulu . . . . . . . . . . . 4.3.1 Integrace Bluetooth modulu do webov´e str´anky . . . 4.4 N´avrh a implementace vzd´alen´eho rozhran´ı . . . . . . . . . 4.5 Pozn´amky k implementaci . . . . . . . . . . . . . . . . . . . . 4.5.1 Pˇrevod binarn´ıho XML . . . . . . . . . . . . . . . . . . 4.5.2 Pr´ace s datovymi proudy . . . . . . . . . . . . . . . . ´ 5 Z´avˇer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Obsah CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17 17 17 18 18 19 19 19 20 20 21 21 22 22 23 24 25 25 25 26 26 26 26 27 28 28 29 29 29 30 31 32 32 32 32 34 37
vii
Kapitola 1
´ Uvod ˇ Zijeme v dobˇe, kdy st´ale v´ıce spol´eh´ame na chytr´a“ zaˇr´ızen´ı, kter´a n´as ” ˚ ehu cel´eho dne. Bˇehem podoprov´az´ı pˇri kaˇzdodenn´ıch cˇ innostech v prubˇ sledn´ıch let je patrny´ vyrazn y´ pokrok v oblasti elektronick´e komunikace ´ ´ a spr´avy dat. Mobiln´ı zaˇrızen´ı se rozv´ıj´ı neuvˇerˇ itelnou rychlost´ı podobnˇe ´ celovych jako jin´e souvisej´ıc´ı oblasti. Z velkych ´ a jednouˇ ´ zaˇr´ızen´ı se st´avaj´ı ˚ zeme nosit telekompaktn´ı, kter´a integruj´ı st´ale v´ıce funkc´ı. V kapse tak muˇ fon s plnohodnotnym ym ´ operaˇcn´ım syst´emem, vykonn ´ ´ procesorem a dotykovym ´ displejem. Instalovat lze nepˇrebern´e mnoˇzstv´ı aplikac´ı, kter´e rozsˇ iˇruj´ı moˇznosti, s jakymi daty lze i v malych ´ ´ zaˇr´ızen´ıch pracovat. Data, kter´e dnes uchov´av´ame v tˇechto mobiln´ıch zaˇr´ızen´ıch, existovala i v dob´ach pˇredelektronickych. Nen´ı tomu tak d´avno, kdy byl hlavn´ım zdro´ ˚ ejˇs´ıch podob´ach. Vzpomenme ˇ jem dat pap´ır v nejruznˇ na seˇsit vedle tele˚ zitymi fonu se vˇsemi duleˇ cˇ ´ısly roztˇr´ıdˇenymi na str´ankach podle abecedy, ´ ´ ´ na kapsy pln´e pap´ırku˚ s pozn´amkami nebo na tydenn´ ı kalend´arˇ s ukoly. ´ ˚ At’ uˇz je to zpusobeno osobn´ımi zvyklostmi cˇ i nevˇedomost´ı, pro hodnˇe ˚ av´a takov´e ukl´ad´an´ı dat st´ale nejefektivnˇejˇs´ı. Se zrychluj´ıc´ım se lid´ı zust´ ˚ zpusobem zˇ ivota vˇsak rostou poˇzadavky na vykonnost cˇ lovˇeka a s t´ım sou´ vis´ı i zmˇeny v nakl´ad´an´ı se z´ısk´avanymi informacemi. ´ ´ Spravov´an´ı elektronickych ktery´ ´ dat pˇredstavuje relativnˇe sloˇzity´ ukol, nemus´ı byt ´ K z´asadn´ım patˇr´ı rˇ eˇsen´ı probl´emu˚ ´ na prvn´ı pohled zˇrejmy. bezpeˇcnosti a ztr´aty dat. Synchronizace dat pom´ah´a k tomu, aby uˇzivatel mohl l´epe a jednoduˇseji vyuˇz´ıt potenci´al mobiln´ıch zaˇr´ızen´ı a z´arovenˇ doˇslo k omezen´ı nˇekterych ´ rizik spojenych ´ s jejich uˇz´ıv´an´ım. ˚ ych Synchronizace dovoluje udrˇzovat kopie dat na ruzn ´ m´ıstech. Tˇemi nejsou jen mobiln´ı zaˇr´ızen´ı a software poˇc´ıtaˇce, ale tak´e online sluˇzby a informaˇcn´ı syst´emy. V souvislosti s rozvojem webu a webovych techno´ logi´ı se vyznamn´ a cˇ a´ st aplikac´ı pˇresunula pr´avˇe do tohoto prostˇred´ı. To ´ zapˇr´ıcˇ inilo, zˇ e uˇzivatel´e cˇ asto nedok´azˇ ´ı rozliˇsit mezi nativn´ı a webovou aplikac´ı. Uˇzivatel´e si na prostˇred´ı webu zvykli. Bylo by proto vyhodn´ e ´ nab´ıdnout jim moˇznosti synchronizace integrovan´e pr´avˇe do webovych ´ aplikac´ı. 1
Kapitola 2
Synchronizace dat mobiln´ıch zaˇr´ızen´ı Synchronizace je proces, ktery´ zajist´ı, zˇ e dvˇe sady dat budou vypadat identicky. K dosaˇzen´ı tohoto c´ıle mus´ı doch´azet ke zmˇenˇe dat na jedn´e stranˇe na z´akladˇe zmˇeny dat na stranˇe druh´e [3]. Synchronizace se prov´ad´ı pomoc´ı synchronizaˇcn´ıho protokolu. Opaˇcnou filosofi´ı k tomu, jak nakl´adat ´ ziˇstˇe a pracuje se tak s daty, je cloud computing. Ten spol´eh´a na online uloˇ jen s jednou sadou dat. Tento smˇer zaˇz´ıv´a v posledn´ıch letech silny´ rozvoj. Je vidˇet tˇreba na srovn´an´ı vyraz u˚ cloud computing a synchronization v Go´ ogle Trends, ktery´ porovn´av´a cˇ etnost jejich hled´an´ı a dalˇs´ı statistiky1 . St´ale ˚ m´a vˇsak vyznam zabyvat se synchronizac´ı dat. Mezi hlavn´ı duvody, proˇc ´ ´ se nevydat cestou cloud computingu, patˇr´ı tyto: •
nemoˇznost byt ´ poˇra´ d pˇripojeny´ k s´ıti;
•
pomal´e pˇripojen´ı nebo pˇripojen´ı s vypadky; ´
•
cesty do zahraniˇc´ı;
•
neochota spol´ehat se na neust´al´e pˇripojen´ı;
•
nativn´ı aplikace mobiln´ıho zaˇr´ızen´ı rychlejˇs´ı neˇz webov´e aplikace;
•
lok´aln´ı aplikace se synchronizovanymi daty mohou byt ´ ´ efektivnˇejˇs´ı na pr´aci neˇz s´ıt’ov´e aplikace.
2.1
Probl´emy synchronizace dat mobiln´ıch zaˇr´ızen´ı
Pˇri synchronizaci dat mobiln´ıch zaˇr´ızen´ı nast´av´a spousta netrivi´aln´ıch ˇ ast se tyk´ ˚ kter´e je potˇreba rˇ eˇsit. C´ probl´emu, ´ a synchronizace dat obecnˇe a cˇ a´ st vznik´a vlivem specifick´eho prostˇred´ı mobiln´ıch zaˇr´ızen´ı. Pokus´ım se nast´ınit nˇekter´e z nich. 1.
http://goo.gl/MQ18m
2
2. S YNCHRONIZACE DAT MOBILN´I CH ZA Rˇ ´I ZEN´I •
Pˇri souˇcasn´e editaci jednoho z´aznamu na dvou m´ıstech z´arovenˇ ´ vznik´a konflikt. Ukolem synchronizaˇcn´ıho serveru je v prvn´ı rˇ adˇe takovy´ konflikt detekovat. Pokud by se tak nestalo, mohly by se oba zmˇenˇen´e z´aznamy pˇren´est na druhou stranu jako aktualizace dat. To by vedlo k tomu, zˇ e by jeden z´aznam neobsahoval stejn´a data ˚ ych ve dvou ruzn ´ datab´az´ıch. K tomu, aby bylo moˇzn´e detekce konfliktu˚ prov´adˇet, mus´ı kaˇzdy´ z´aznam obsahovat jednoznaˇcnou identifikaci.
•
´ esˇ n´e detekci konfliktu doch´az´ı k jeho rˇ eˇsen´ı. Server reaguje Po uspˇ ˚ podle zvolen´e strategie. Nejjednoduˇssˇ´ı zpusob, jak se s konfliktem vypoˇra´ dat, spoˇc´ıv´a v duplikaci dat. Nedojde k zˇ a´ dn´e ztr´atˇe a dovol´ı uˇzivateli dodateˇcnˇe rozhodnout, kterou verzi si ponech´a. Server ˚ ze vybrat pouze jednu variantu z´aznamu. Podle poˇzadavku˚ tak´e muˇ uˇzivatele vˇzdy z´aznam uloˇzeny´ na serveru, u klienta nebo ten, ktery´ ˚ byl aktualizov´an pozdˇeji. Tˇret´ım zpusobem, jak na konflikt zareagovat, je slouˇcen´ı dat dvou z´aznamu˚ do jednoho. V tomto pˇr´ıpadˇe mus´ı server zn´at strukturu a vlastnosti synchronizovanych ´ dat.
•
Aby mohl synchronizaˇcn´ı server spr´avnˇe porovn´avat strukturovan´a data, mus´ı byt ´ jasnˇe dany´ form´at, v jak´em se data odes´ılaj´ı k synchro´ nizaci. Tyk´ s telefonn´ım cˇ ´ıslem, kter´e lze zapsat ´ a se to tˇreba udaje ˚ nˇekolika zpusoby.
•
˚ ym Vzhledem k ruzn ´ vlastnostem zaˇr´ızen´ı zapojenych ´ do synchronizace je potˇreba rozliˇsovat, zda z´aznam obsahuje urˇcit´a data proto, ˚ ˚ Situaci zˇ e doˇslo k jejich zmˇenˇe uˇzivatelem, nebo z jinych u. ´ duvod ilustruje stav, kdy z´aznam kontaktu na serveru obsahuje foto, ale u klienta ne. Pˇri synchronizaci mus´ı server rozhodnout, zda bylo foto uˇzivatelem odstranˇeno nebo zaˇr´ızen´ı nepodporuje jejich ukl´ad´an´ı ke ˚ kontaktum.
•
Do procesu synchronizace dat mohou byt ´ zapojeny mobiln´ı zaˇr´ızen´ı, kter´e maj´ı k dispozici pouze omezen´e hardwarov´e prostˇredky. Tyk´ ´ a se to jak rychlosti procesoru, tak operaˇcn´ı pamˇeti a kapacity uloˇziˇstˇe dat. 3
2. S YNCHRONIZACE DAT MOBILN´I CH ZA Rˇ ´I ZEN´I
2.2
Pˇrehled synchronizaˇcn´ıch protokolu˚
2.2.1
IrMC
Protokol IrMC slouˇzil k vymˇ ´ enˇe informac´ı pˇres infraˇcerven´e rozhran´ı. De´ ´ finov´ano je pˇet urovn´ ı jak pˇren´asˇ et data [9]. Nejniˇzsˇ´ı urove nˇ obsahuje pouze logiku obyˇcejn´eho pˇrenosu objektu˚ mezi dvˇema zaˇr´ızen´ımi. Nejvyˇssˇ´ı ´ urove nˇ pˇredstavuje synchronizaci zaloˇzenou na OMA DS, kter´a byla do ´ specifikace pˇrid´ana pozdˇeji. Urovnˇ e jedna aˇz cˇ tyˇri podporuj´ı pr´aci pouze ´ s omezenym e pˇr´ıliˇs vhodn´e ´ rozsahem typu˚ dat. Tak´e nejsou tyto urovnˇ pro pˇrenos dat pˇres velk´e s´ıtˇe a hod´ı se hlavnˇe na lok´aln´ı synchronizaci s poˇc´ıtaˇcem. Pro komunikaci se vyuˇz´ıv´a protokol IrOBEX.
2.2.2
HotSync a Palm zaˇr´ızen´ı
HotSync vedle dalˇs´ıch funkc´ı slouˇz´ı k synchronizaci dat zaˇr´ızen´ı s Palm OS (oznaˇcovanych ´ tak´e jako Palm Classic) s daty v poˇc´ıtaˇci uˇzivatele [12]. Synchronizaci rˇ´ıd´ı klientsky´ propriet´arn´ı software – HotSync Manager. Ten mohl byt ´ rozˇsirov´an o tzv. conduity, kter´e otev´ıraly cestu jak libovolnˇe nakl´adat se synchronizovanymi daty. Existuje tedy napˇr. conduit pro MS Ex´ change, ktery´ data ukl´ad´a na centr´aln´ı server. U unixovych syst´emu˚ se ´ k synchronizaci vyuˇz´ıv´a knihovny pilot-link. S pˇr´ıchodem Palm zaˇr´ızen´ı postavenych ´ na nov´em operaˇcn´ım syst´emu webOS se od uˇzit´ı HotSync Manageru upustilo [13]. Syst´em standardnˇe podporuje pouze synchronizaci s online sluˇzbami, napˇr. soci´aln´ımi s´ıtˇemi. Synchronizaci s desktopem zajiˇst’uje software tˇret´ıch stran.
2.2.3
ActiveSync, WMDC, Exchage ActiveSync
ActiveSync a Windows Mobile Device Center je sada propriet´arn´ıch technologi´ı a softwaru pro synchronizaci dat z mobiln´ıch zaˇr´ızen´ı od firmy Microsoft [14]. ActiveSync pracuje pod operaˇcn´ımi syst´emy do Windows XP, WMDC od Windows Vista d´al. Po pˇrejmenov´an´ı klientsk´eho softwaru se pouˇz´ıv´a oznaˇcen´ı ActiveSync jen ve spojitosti s protokolem a synchronizac´ı dat proti MS Exchange. Kromˇe mobiln´ıch Windows najdeme ofici´aln´ı podporu protokolu Exchange ActiveSync tak´e u dalˇs´ıch firem, kter´e maj´ı tuto technologii licencovanou. 4
2. S YNCHRONIZACE DAT MOBILN´I CH ZA Rˇ ´I ZEN´I 2.2.4
OMA DS (SyncML)
OMA Data Synchronization, dˇr´ıve zn´amy´ jako SyncML, zaˇcal vznikat v roce 2000 s c´ılem vytvoˇrit otevˇreny´ a jednotny´ synchronizaˇcn´ı protokol pro data mobiln´ıch zaˇr´ızen´ı [4]. Pod hlaviˇcnou The SyncML Initiative se od poˇca´ tku se na vyvoji pod´ıl´ı siln´e firmy jako IBM, Nokia nebo Motorola. ´ Od roku 2002 zastˇreˇsuje protokol Open Mobile Aliance a doˇslo tak i k jeho pˇrejmenov´an´ı. Doposud vznikly tˇri verze [6].
Hlavn´ı vlastnosti verze 1.0: • • • • • • • • •
˚ e typy synchronizac´ı; ruzn´ pouˇzit´ı kotev; jednoznaˇcn´e identifik´atory objektu˚ na serveru a klientovi; ˚ rˇ eˇsen´ı konfliktu; autentizace; vymˇ ´ ena informac´ı o zaˇr´ızen´ı; spr´ava pamˇeti zaˇr´ızen´ı; synchronizace bez pˇredchoz´ı inicializace; singnalizace pˇret´ızˇ en´ı serveru.
Hlavn´ı zmˇeny ve verzi 1.1: • • • • •
pr´ace s velkymi objekty; ´ rozˇs´ırˇ en´ı autentizace; odes´ıl´an´ı informace o poˇctu zmˇen; oznaˇcen´ı signalizace pˇret´ızˇ en´ı jako nepovinn´e cˇ a´ sti; ˚ pˇren´asˇ en´ı velkych ´ objektu.
Hlavn´ı zmˇeny ve verzi 1.2: • • • • •
pˇreruˇsen´ı a obnova synchronizace; synchronizace zah´ajen´a serverem; synchonizace hierarchickych ´ dat; filtrov´an´ı u adresace dat; datov´e objekty pro sloˇzku, soubor a email. 5
2. S YNCHRONIZACE DAT MOBILN´I CH ZA Rˇ ´I ZEN´I
2.3
Zpusoby ˚ pˇren´asˇ en´ı dat mobiln´ıch zaˇr´ızen´ı
2.3.1
S´eriovy´ port
Jednou z prvn´ıch moˇznost´ı, jak pˇren´asˇ et data mobiln´ıch zaˇr´ızen´ı, bylo pˇripojen´ı kabelem pˇres s´eriovy´ port. Vyrobci mobiln´ıch zaˇr´ızen´ı obvykle po´ uˇz´ıvali kabely s vlastn´ımi nestandardn´ımi koncovkami a neexistoval tak jeden univerz´aln´ı. Vedle origin´aln´ıch vyrobk u˚ se objevovalo tak´e kompa´ ˇ tibiln´ı neorigin´aln´ı pˇr´ısluˇsenstv´ı, kter´e vˇsak umoˇznovalo prov´est nˇekter´e operace, napˇr. zmˇenu firmware. 2.3.2
Infraˇcerveny´ port
Pˇrenos pˇres infraˇcerveny´ port pˇredstavoval pro mobiln´ı zaˇr´ızen´ı prvn´ı ˚ Velk´a nevyhoda moˇznost, jak data pˇren´asˇ et bez kabelu. oproti dnes obvyk´ ˚ spoˇc´ıv´a v nutnosti pˇr´ım´e viditelnosti [11]. lejˇs´ım bezdr´atovym ´ pˇrenosum Vzd´alenost obou zaˇr´ızen´ı nesm´ı pˇresahovat jeden metr. U n´ızkoenergetickych zaˇr´ızen´ı typu mobiln´ı telefon se tato vzd´alenost nav´ıc zkracuje na ´ ˚ Za kladn´e vlastnosti bych uvedl pouˇzitelnost nˇekolik des´ıtek centimetru. v prostˇred´ıch, kde nelze vyuˇz´ıt pˇrenos po r´adiovych vln´ach. D´ale hard´ ware, ktery´ je levnˇejˇs´ı neˇz u Bluetooth. Odpad´a tak´e nutnost p´arov´an´ı zaˇr´ızen´ı (vyhoda napˇr. pro veˇrejn´e tisk´arny). ´ Pˇrenos pomoc´ı infraˇcerven´eho svˇetla pouˇz´ıvany´ v mobiln´ıch zaˇr´ızen´ıch navrhuje organizace IrDA, zaloˇzen´a v roce 1993. Doposud pod jejich hlaviˇckou vzniklo pˇres 30 specifikac´ı[10], pracuj´ıc´ıch na vˇsech vrstv´ach s´ıt’ov´e komunikace. Aˇckoliv doba nejvˇetˇs´ı popularity pˇrenosu dat pˇres infraˇcerveny´ port pominula, st´ale vznikaj´ı nov´e specifikace. Ned´a se vylouˇcit ani opˇetovny´ n´avrat popularity aktu´aln´ıch technologi´ı od IrDA – hlavnˇe gigabitov´eho pˇrenosu. Popis nˇekterych ´ specifikac´ı IrPHY Specifikace nejniˇzsˇ´ı komunikaˇcn´ı vrstvy – fyzick´e vrstvy. Definovan´e jsou parametry jako d´elka a intenzita vlnov´eho z´arˇ en´ı nebo vzd´alenosti a vz´ajemn´e natoˇcen´ı dvou zaˇr´ızen´ı. Pˇrenos vˇzdy prob´ıh´a pouze v reˇzimu half-duplex. Full-duplex se simuluje rychlym ´ pˇrep´ın´an´ım vys´ılaˇce a pˇrij´ımaˇce. Rychlost pˇrenosu se pohybuje od 9.6 kbps po 1 Gbps. ˚ zitˇejˇs´ı IrLAP Link access protocol pracuje na datov´e vrstvˇe. Mezi nejduleˇ funkce patˇr´ı vyhled´av´an´ı zaˇr´ızen´ı v okol´ı, navazov´an´ı spojen´ı a 6
2. S YNCHRONIZACE DAT MOBILN´I CH ZA Rˇ ´I ZEN´I rˇ´ızen´ı pˇr´ıstupu. Na t´eto vrstvˇe se zaˇr´ızen´ı rozdˇeluj´ı na prim´arn´ı, kter´a rˇ´ıd´ı ta sekund´arn´ı. Data mohou byt ´ vysl´ana pouze smˇerem od sekund´arn´ıho zaˇr´ızen´ı k prim´arn´ımu. ˚ IrLMP Link management protocol se star´a o spr´avu logickych kan´alu, ´ poskytovanych sluˇzeb a pˇrep´ın´an´ı prim´arn´ıho a sekund´arn´ıho ´ zaˇr´ızen´ı. Tiny TP Tiny Transport protocol zajiˇst’uje hlavnˇe pˇrenos velkych ´ zpr´av jejich rozdˇelen´ım na menˇs´ı a n´aslednym ´ sloˇzen´ım. IrObex Zkratka vznikla se slov Object Exchange, n´azev se vˇetˇsinou zkracuje jen na OBEX. Protokol se d´a pˇrirovnat k HTTP. Na rozd´ıl od nˇej se vˇsak jedn´a o bin´arn´ı form´at. Data se ukl´adaj´ı do hlaviˇcek, kter´e nesou i informaci o velikosti dat. Takovy´ pˇr´ıstup pom´ah´a snazˇs´ımu parsov´an´ı a je tedy vhodnˇejˇs´ı pro m´alo vykonn´ a mobiln´ı zaˇr´ızen´ı. ´ OBEX odporuje sezen´ı a nen´ı tedy bezstavovy´ jako HTTP. V jednom spojen´ı lze tedy prov´est nˇekolik nez´avislych ´ operac´ı. Protokol se stal obl´ıbenym ´ i v dalˇs´ıch oblastech komunikace a tak je OBEX implementovany´ napˇr. pro Bluetooth. ´ u. ˚ Ve IrMC Protokol na vymˇ udaj ´ enu vizitek, kontaktu˚ a podobnych ´ ´ vyvoji se d´ a le nepokraˇ c uje. M´ ı sto IrMC se pouˇ z ı v´ a k synchronizaci ´ SyncML. Giga-IR Standardizace pˇrenosu rychlost´ı 1 Gbps byla dokonˇcena v dubnu 2009. Pro dosaˇzen´ı t´eto rychlosti se upustilo od LED a vyuˇz´ıv´a se ˚ laserovych ´ paprsku. 2.3.3
Mobiln´ı internet
Poˇca´ tky rozvoje mobiln´ıho internetu spadaj´ı do konce devades´atych ´ let a obdob´ı 2G s´ıt´ı GSM. Pˇr´ıstup k internetu se poprv´e objevil v komunik´atoru Nokia 9000 v roce 1996 [15]. V´ıce se vˇsak mobiln´ı internet zaˇcal rozˇsiˇrovat aˇz o p´ar let pozdˇeji. Dalˇs´ı miln´ıky pˇriˇsly v roce 1999, kdy poprv´e pˇriˇsel na trh telefon s prohl´ızˇ eˇcem wapu (jednalo se o Nokii 7110, kter´a dalˇs´ıho prvenstv´ı dos´ahla tak´e integrov´an´ım infra portu). ˇ v souˇcasn´e dobˇe cˇ tyˇri oper´atoˇri, z nichˇz jeMobiln´ı internet nab´ız´ı v CR ´ den se orientuje pˇrev´azˇ nˇe na datov´e sluˇzby. Na vˇetˇsinˇe uzem´ ı je dostupn´e pˇripojen´ı pˇres GPRS a EDGE. To samo o sobˇe dostaˇcuje pro synchronizaci nevelkych ´ textovych ´ informac´ı (napˇr. seznamu kontaktu˚ nebo kalend´arˇ e). ´ Na velk´e cˇ a´ sti uzem´ ı tak´e celkem spolehlivˇe funguje CDMA pˇripojen´ı, kter´e 7
2. S YNCHRONIZACE DAT MOBILN´I CH ZA Rˇ ´I ZEN´I
ˇ Obr´azek 2.1: Mapa pokryt´ı Cesk´ e republiky mobiln´ı s´ıt´ı tˇret´ı generace. Zdroj: http://client0.cellmaps.com/viewer.html
dovol´ı sychnronizaci vˇetˇs´ıho objemu dat. St´ale v´ıce velkych mˇest je tak´e ´ pokryto s´ıt´ı tˇret´ı generace, jejichˇz pˇrenosov´e rychlosti uˇz nebr´an´ı synchroˇ nizaci i opravdu velk´eho mnoˇzstv´ı dat. Pokud se na mobiln´ı internet v CR ˚ tak z´akladn´ı datovy´ tarif m´a obvykle popod´ıv´ame z hlediska n´akladu, dobu GPRS pˇripojen´ı s placen´ım za pˇrenesen´a data. Platby se pohybuj´ı v rˇ a´ du hal´erˇ u˚ za jeden kilobyte, takˇze cena synchronizace textovych dat ´ pˇres mobiln´ı internet je vcelku pˇrijateln´a. Rozvoj 3G s´ıtˇe vˇsak za okoln´ımi st´aty dost zaost´av´a, jak je vidˇet na obr´azku 2.1.
2.3.4
Bluetooth
Technologie Bluetooth pˇrinesla velky´ posun ve sf´erˇ e bezdr´atov´eho pˇrenosu u PAN (Personal Area Network). Odpad´avaj´ı hlavn´ı nedostatky IrDA – zaˇr´ızen´ı mohou byt ´ od sebe vzd´alena aˇz nˇekolik des´ıtek metru˚ bez nutnosti pˇr´ım´e viditelnosti. Pˇrenos prob´ıh´a po r´adiovych ´ vln´ach na voln´em (nelicencovan´em) kmitoˇctu 2.4 Ghz a pˇrekon´av´a tak i pevn´e pˇrek´azˇ ky v cestˇe. Mezi hlavn´ı pˇrednosti t´eto technologie patˇr´ı otevˇren´a specifikace vˇcetnˇe voln´eho vyuˇzit´ı a moˇznost pˇrenosu dat i hlasu, pˇriˇcemˇz si zachov´av´a n´ızkou energetickou n´aroˇcnost. Proto Bluetooth najdeme nejen v mobiln´ıch zaˇr´ızen´ıch, ale tak´e u bezdr´atovych ´ kl´avesnic, myˇs´ı, sluch´atek, hands-free sad a dalˇs´ıch. Specifikace pˇripravuje sdruˇzen´ı firem nazvan´e Bluetooth SIG (Special Interest Group), kter´e bylo zaloˇzeno v roce 1998 [17]. V souˇcasn´e ˚ dobˇe m´a Bluetooth SIG tis´ıce cˇ lenu. Verze 1.0 vznikla v roce 1999. Rozˇs´ırˇ ila se vˇsak aˇz verze 1.1, kter´a opra8
2. S YNCHRONIZACE DAT MOBILN´I CH ZA Rˇ ´I ZEN´I vila spoustu probl´emu˚ nalezenych ´ v pˇredchoz´ıch verz´ıch [16]. Zlepˇsila se ˚ ejˇs´ıch zaˇr´ızen´ı. S verz´ı 1.2 pak hlavnˇe oblast vz´ajemn´e spolupr´ace nejruznˇ pˇriˇsly i nov´e vlastnosti, ale dbalo se na zpˇetnou kompatibilitu s pˇredchoz´ı specifikac´ı. Nejvyˇssˇ´ı pˇrenosov´e rychlosti u prvn´ıch variant dosahovaly 1Mbps. U druh´e rˇ ady doˇslo zejm´ena ke zvyˇ ´ sen´ı pˇrenosov´e rychlosti na 3Mbps. Specifikace byla vyd´ana v roce 2004. V zaˇr´ızen´ıch se zaˇcala podpora t´eto verze objevovat o rok pozdˇeji. Opˇet byla dodrˇzena zpˇetn´a kompatibilita. Kromˇe pˇrenosov´e rychlosti byla optimalizov´ana spotˇreba energie, pˇribyla podpora komunikace s v´ıce zaˇr´ızen´ımi najednou a tak´e broadcast a multicast. Verze 3.0 nese podtitul High Speed. Kromˇe podpory starˇs´ıch verz´ı Bluetooth obsahuje tak´e vysokorychlostn´ı pˇrenosy s rychlost´ı aˇz 24Mbps. Toho se dosahuje vyuˇzit´ım WiFi technologi´ı z rodiny standardu 802.11 spravovanych ´ organizac´ı IEEE. Verze 4.0 se objevila pˇribliˇznˇe rok po verzi 3.0. Zamˇerˇ uje se vˇsak na ˇ ıc´ı technologie. Hlavn´ı jin´e vyuˇzit´ı a jedn´a se tak o vz´ajemnˇe se doplnuj´ pˇrednost´ı t´eto verze je n´ızk´a spotˇreba energie. V tiskov´e zpr´avˇe se uv´ad´ı schopnost nˇekolikalet´eho provozu na knofl´ıkovou baterii a tedy zlomek energie oproti dnes rozˇs´ırˇ en´e verzi Bluetooth. Pˇrenosov´e rychlosti se vr´at´ı ´ na urove nˇ prvn´ıch verz´ı. Zlepˇsit by se vˇsak mˇela bezpeˇcnost pomoc´ı AES sˇ ifrov´an´ı. Podporov´an by mˇel byt ´ tak´e vˇetˇs´ı dosah a sn´ızˇ en´a latence. Architektura Bluetooth Architektura Bluetooth uveden´a na obr´azku 2.2 se vyuˇz´ıv´a u osobn´ıch poˇc´ıtaˇcu˚ a podobnych ´ zaˇr´ızen´ı. Objevuje se zde oddˇeleny´ hardware s firmwarem a ovladaˇce zvan´e Bluetooth stack. Ty byvaj´ ´ ı souˇca´ st´ı operaˇcn´ıho syst´emu nebo nainstalovan´e jako bˇezˇ ny´ software (lze je tedy v pˇr´ıpadˇe potˇreby vymˇenit za jin´e). Takovy´ software se snaˇz´ı byt ´ co nejv´ıce uni´ celovych verz´aln´ı. Naproti tomu stoj´ı pouˇzit´ı v jednouˇ zaˇr´ızen´ıch, napˇr. ´ kl´avesnici nebo hands-free. U nich cˇ asto chyb´ı HCI rozhran´ı a hardware i software tvoˇr´ı jeden celek. V takovych ´ pˇr´ıpadech samozˇrejmˇe podporuje software jen kokr´etn´ı Bluetooth profil, ktery´ potˇrebuje ke sv´emu provozu. Popis nˇekterych ´ protokolu˚ [19] SDP Protokol pouˇz´ıvany´ k vyhled´av´an´ı zaˇr´ızen´ı a podporovanych ´ sluˇzeb. ˚ Je pˇrevzaty´ ze speciOBEX Protokol slouˇz´ıc´ı k vymˇ ´ enˇe datovych ´ objektu. fikace IrOBEX. 9
2. S YNCHRONIZACE DAT MOBILN´I CH ZA Rˇ ´I ZEN´I
Obr´azek 2.2: Bluetooth stack s hlavn´ımi protokoly [18]
RFCOMM RFCOMM je protokol, ktery´ emuluje pˇrenos dat pˇres seriovy´ port (RS-232). Podporuje aˇz 60 spolehlivych ´ komunikaˇcn´ıch kan´alu˚ mezi dvˇema zaˇr´ızen´ımi. ˚ L2CAP Multiplexovac´ı vrstva, kter´a dovoluje protokolum na vyˇssˇ´ıch vrstv´ach pˇren´asˇ et data pˇres Bluetooth. L2CAP komunikuje pomoc´ı HCI s basebandem na stranˇe hardwaru. Star´a se tak´e o rozdˇelov´an´ı a skl´ad´an´ı packetu˚ nebo zajiˇst’ov´an´ı kvality sluˇzeb. HCI HCI poskytuje jednotn´e rozhran´ı komunikace s Bluetooth hardwarem. Skl´ad´a se ze tˇr´ı cˇ a´ st´ı: HCI firmwaru, ktery´ je souˇca´ st´ı Bluetooth hardwaru, HCI ovladaˇc, ktery´ poch´az´ı ze softwaru Bluetooth zaˇr´ızen´ı a transportn´ı vrstvu, kter´a propojuje tento firmware a software. LMP Pouˇz´ıv´a se k rˇ´ızen´ı a prov´adˇen´ı vˇsech operac´ı, kter´e se tykaj´ ´ ı spojen´ı dvou zaˇr´ızen´ı vˇcetnˇe autentizace, vyhled´av´an´ı jinych ´ LM, p´arov´an´ı a dalˇs´ıch. TCP Protokol, ktery´ nastavuje a rˇ´ıd´ı hovory mezi dvˇema zaˇr´ızen´ımi. Bluetooth profily ˚ zitou souˇca´ st´ı Bluetooth specifikace jsou profily. Ty pˇredstavuj´ı Dalˇs´ı duleˇ ˚ standardn´ı zpusob, jak vyuˇz´ıvat vybran´e sluˇzby. Definov´any jsou cˇ tyˇri 10
2. S YNCHRONIZACE DAT MOBILN´I CH ZA Rˇ ´I ZEN´I z´akladn´ı profily. Ty se nazyvaj´ ´ ı pˇrenosov´e profily [1]. Generic access profile Z´akladn´ı profil, na kter´em stav´ı vˇsechny ostatn´ı. GAP definuje funkcionalitu nutnou pro navazov´an´ı a spr´avu spojen´ı, vyhled´av´an´ı dalˇs´ıch zaˇr´ızen´ı a oˇsetˇren´ı bezpeˇcnosti. Service discovery application profile SDAP popisuje operace a postupy nutn´e k vyhled´an´ı sluˇzeb na vzd´alen´em zaˇr´ızen´ı. Serial port profile SPP emuluje pˇripojen´ı pˇres seriovy´ port pomoc´ı RFCOMM protokolu. Zastaral´e aplikace tak mohou transparentnˇe vyuˇz´ıvat pˇrenos pˇres Bluetooth m´ısto seriov´eho kabelu. Generic object exchange profile Jedn´a se o abstraktn´ı profil, ktery´ je z´akladem dalˇs´ıch profilu˚ vyuˇz´ıvaj´ıc´ıch OBEX. Profil obsahuje vˇsechnu logiku pr´ace s objekty pˇres OBEX, nutnou napˇr. pro pˇrenos souboru˚ nebo synchronizaci. D´ale existuje rˇ ada aplikaˇcn´ıch profilu˚ [8]. Pokud dvˇe zaˇr´ızen´ı chtˇej´ı mezi sebou napˇr. pˇren´asˇ et soubory, mus´ı obˇe obsahovat pˇr´ısluˇsny´ profil, ktery´ tuto funkcionalitu implementuje. Uk´azky standardn´ıch aplikaˇcn´ıch profilu˚ A2DP Advanced Audio Distribution Profile. Pˇrenos stereo zvuku. BIP Basic Imaging Profile. Definuje, jak pracovat na d´alku s grafickymi ´ soubory, jak je tisknout nebo pˇren´asˇ et. CTP Cordless Telephone Profile. Popisuje, jak mohou byt ´ bezdr´atov´e telefony implementov´any pˇres Bluetooth rozhran´ı. ˇ DUN Dial-Up Network Profile. Zpˇr´ıstupnuje mobiln´ı pˇripojen´ı k internetu jinym ´ zaˇr´ızen´ım. FTP File Transfer Profile. Definuje, jak mohou byt ´ proch´azeny adres´arˇ e a soubory. HID Human Interface Profile. Implementuje protokol a vlastnosti pˇr´ıstupu k zaˇr´ızen´ım jako kl´avesnice a myˇsi. PAN Personal Area Network. Popisuje, jak vytv´arˇ et ad-hoc s´ıtˇe mezi zaˇr´ızen´ımi. Pouˇz´ıv´a se tak´e pro zpˇr´ıstupnˇen´ı pˇripojen´ı k internetu. 11
2. S YNCHRONIZACE DAT MOBILN´I CH ZA Rˇ ´I ZEN´I 2.3.5
USB rozhran´ı
Univerz´aln´ı seriov´e rozhran´ı postupnˇe vytlaˇcilo kabely s propriet´arn´ımi konektory. Mal´a mobiln´ı zaˇr´ızen´ı obsahuj´ı nejˇcastˇeji variantu mini USB konektoru. Rozhran´ı cˇ asto slouˇz´ı i k nab´ıjen´ı nebo funkci Mass Storage. Pˇrenosov´e rychlosti dovoluj´ı snadn´e zaplnˇen´ı pamˇeti zaˇr´ızen´ı vˇcetnˇe gigabytovych ´ pˇr´ıdavnych ´ karet. 2.3.6
WiFi
WiFi se objevuje st´ale cˇ astˇeji i u malych ´ mobiln´ıch zaˇr´ızen´ı. Ty se pak mohou snadno pˇripojit do m´ıstn´ı s´ıtˇe a prov´est tˇreba pˇrenosy velkych ´ objemu˚ dat. Rychlost pˇrenosu a dalˇs´ı aspekty t´eto technologie vˇsak pˇrin´asˇ i i negativa. C´ılovou platformou WiFi nejsou mal´a zaˇr´ızen´ı nap´ajen´a z baterie, ˚ ze rychle spotˇrebovat takˇze i samotn´e vyhled´av´an´ı pˇr´ıstupovych ´ bodu˚ muˇ dostupnou energii. ˇ arov´e kody 2.3.7 C´ ´ ˚ Pomˇernˇe novy´ zpusob, jak pˇren´asˇ et data do mobiln´ıch zaˇr´ızen´ı vyba´ u. ˚ Ty se jednoduˇse venych ´ fotoapar´atem, spoˇc´ıv´a ve vyuˇzit´ı cˇ a´ rovych ´ kod ´ vyfot´ı a pomoc´ı specializovan´eho softwaru rozkoduj´ ı. Nelze takto pˇren´asˇ et ´ echem se t´eto metody uˇz´ıv´a napˇr. pro velk´a mnoˇzstv´ı dat, ale s uspˇ pˇrenos webov´e adresy nebo vizitky. C´ıl´ı se hlavnˇe na zaˇr´ızen´ı bez klasick´e kl´avesnice. Uˇzivatel tak nemus´ı zdlouhavˇe zad´avat data ruˇcnˇe.
12
Kapitola 3
OMA Data Synchronization 3.1
Z´akladn´ı c´ıle n´avrhu OMA DS protokolu
Pˇri n´avrhu protokolu bylo potˇreba vyˇreˇsit probl´emy vztahuj´ıc´ı se jak ˚ synchronizace, tak k ruzn ˚ ym k poˇzadovanym ´ vlastnostem a c´ılum ´ ome˚ ˚ ´ castnˇenych zen´ım zpusoben ym ı zuˇ zaˇr´ızen´ı ´ pˇrenosem dat a ruznorodost´ ´ [3]. V n´asleduj´ıc´ı cˇ a´ sti se nach´az´ı popis nˇekterych ´ vlastnost´ı SyncML protokolu. 3.1.1
Efektivita pˇrenosu dat
˚ ze pˇri synchronizaci slouˇzit bezdr´atov´a s´ıt’, jej´ızˇ Jako pˇrenosov´e m´edium muˇ ˚ ych ´ parametry byvaj´ se tud´ızˇ ´ ı znaˇcnˇe odliˇsn´e u ruzn ´ technologi´ı. V uvahu mus´ı vz´ıt mal´a pˇrenosov´a rychlost, vysok´a doba odezvy, n´ızk´a spolehlivost a tak´e cena za pˇrenesen´a data. S malou pˇrenosovou rychlost´ı se n´avrh vyrovn´av´a snahou o co nejmenˇs´ı objem dat komunikace klienta a serveru. OMA DS protokol je zaloˇzeny´ na ´ XML, kter´e vˇsak nebyv´ e. Proto existuje moˇznost pouˇz´ıt pro ´ a pˇr´ıliˇs usporn´ pˇrenos zpr´av bin´arn´ı verzi XML – WBXML. To bylo navrˇzeno organizac´ı ˚ Wap Forum puvodnˇ e pro potˇreby pˇrenosu dat pˇres WAP. WBXML sniˇzuje ˚ Hodnoty tagu˚ a atributu˚ se velikost nahrazen´ım rˇ etˇezcu˚ jednotlivych ´ tagu. pˇren´asˇ´ı beze zmˇeny. Podrobnˇeji je rozebr´ano mapov´an´ı SyncML na bin´arn´ı XML v cˇ a´ sti XY. ˚ Dalˇs´ı zpusob, jak sn´ızˇ it velikost pˇren´asˇ enych ´ dat, spoˇc´ıv´a v pˇrenosu jen novˇe pˇridanych ´ a zmˇenˇenych ´ poloˇzek, pokud to stav synchronizace dovo˚ luje. Tento zpusob vyˇzaduje vˇetˇs´ı n´aroky na implementovanou logiku, coˇz ˇ ovlivnuje hlavnˇe stranu klienta. U serveru obvykle nepotˇrebujeme sˇ etˇrit do´ stupnymi zdroji. Tato metoda se realizuje tak, zˇ e se uchov´avaj´ı udaje o datu ´ posledn´ı editace. Synchronizuj´ı se jen ty, u kterych ´ doˇslo k nˇejak´e zmˇenˇe od data posledn´ı synchronizace. Vˇsechny poloˇzky se pˇren´asˇ´ı jen pˇri prvn´ı synchronizaci nebo nestandardn´ı situaci, jako napˇr. chybn´e nebo pˇreruˇsen´e synchronizaci. Synchronizace vˇsech poloˇzek se nazyv´ ´ a pomal´a synchroni13
3. OMA D ATA S YNCHRONIZATION zace. Probl´em s vysokou dobou odezvy lze obecnˇe rˇ eˇsit sdruˇzov´an´ım komunikace do bal´ıku˚ odes´ılanych ´ najednou. Proto SyncML podporuje pˇrenos ˚ vˇetˇs´ıho mnoˇzstv´ı dat a operac´ı v jedn´e zpr´avˇe. Tento zpusob pˇrenosu vˇsak nar´azˇ ´ı na dalˇs´ı nepˇr´ıjemnou vlastnost – n´ızkou spolehlivost s´ıtˇe. Menˇs´ı pˇren´asˇ en´a zpr´ava m´a vˇetˇs´ı pravdˇepodobnost doruˇcen´ı k c´ıli neˇz zpr´ava vˇetˇs´ı. Nav´ıc nˇekter´e pˇrenosov´e protokoly mohou omezovat maxim´aln´ı velikost pˇren´asˇ en´e zpr´avy. SyncML obsahuje tak´e logiku rozdˇelov´an´ı velkych ´ logickych kter´e se pˇren´asˇ´ı samostatnˇe. Klient ´ celku˚ do menˇs´ıch fyzickych, ´ a server proto mus´ı zvl´adat logiku rozdˇelov´an´ı a sdruˇzov´an´ı zpr´av. Tato vlastnost pˇribyla ve verzi 1.1.
3.1.2
Nez´avislost na pˇrenosov´em m´ediu a protokolu
˚ stejnˇe jako velk´e mnoˇzstv´ı Existuje velk´e mnoˇzstv´ı pˇrenosovych ´ protokolu, pˇrenosovych ´ m´edi´ı. Dvˇema synchronizovanym ´ zaˇr´ızen´ım vˇsak nez´aleˇz´ı na tom, kudy a jak se data pˇren´asˇ´ı. Oni jen chtˇej´ı zn´at, jak´a data se nach´az´ı ˚ e sc´en´arˇ e pˇrenosu na druh´e stranˇe. Proto se pˇri n´avrhu uvaˇzovaly ruzn´ SyncML zpr´av: Persistentn´ı spojen´ı Dvˇe strany udrˇzuj´ı spojen´ı po celou dobu komunikace bˇehem synchronizace. Tento typ spojen´ı dovoluje efektivn´ı vymˇ ´ enu dat. Jedn´a se napˇr. o OBEX protokol. Synchronn´ı klient/server komunikace Komunikaci obvykle zahajuje klient, ktery´ odes´ıl´a poˇzadavek na server. Ten ihned reaguje a vrac´ı odpovˇed’. Typickym ´ pˇr´ıkladem je HTTP protokol. Spad´a sem tak´e WSP, ktery´ oproti HTTP podporuje tak´e komunikaci zah´ajenou serverem. ˚ ze dostat pokyn pro zah´ajen´ı synchronizace. Klient tak muˇ Asynchronn´ı klient/server komunikace Odpovˇed’ serveru nen´ı odes´ıl´ana v reakci na poˇzadavek klienta, ale aˇz po pˇredem neurˇcit´e dobˇe. Do t´eto kategorie spad´a napˇr. SMTP protokol. ˚ SyncML je navrˇzeno tak, zˇ e podporuje vˇsechny tˇri zpusoby komunikace, ale standardizov´ano je pouze mapov´an´ı na tˇri nejbˇezˇ nˇejˇs´ı pˇrenosov´e protokoly — HTTP, OBEX (napˇr. pˇrenos pˇres Bluetooth, IrDA a USB) a WSP (WAP). 14
3. OMA D ATA S YNCHRONIZATION 3.1.3
Synchronizace libovolnych ´ dat
OMA DS slouˇz´ı k popisu odes´ılanych ´ a z´ısk´avanych ´ dat, jejich zmˇen a aktualizac´ı. Popisuje tedy jak s daty nakl´adat. Nezaj´ım´a se vˇsak o data samotn´a. Nejbˇezˇ nˇeji se pˇren´asˇ´ı osobn´ı data, pro kter´a obsahuje specifikace doporuˇcen´e form´aty a jejich podpora je povinn´a. Pracovat vˇsak lze s libo´ volnymi e vlastn´ımi. ´ daty – jak s tˇemi s konkr´etn´ım MIME typem, tak s uplnˇ ´ Protokol se tedy v zˇ a´ dn´em pˇr´ıpadˇe neomezuje jen na osobn´ı udaje, resp. ´ PIM udaje, ale lze jej vyuˇz´ıt pro vyvoj libovoln´eho softwaru, ktery´ vyˇzaduje ´ synchronizaci. Standardn´ı form´aty pˇren´asˇ enych ´ dat popsanych ´ v SyncML specifikaci rozeb´ır´am v cˇ a´ sti XY. 3.1.4
Nez´avislost na programovac´ım jazyce
Nez´avislost na programovac´ım jazyce vych´az´ı z pouˇzit´ı XML a WBXML pro form´at zpr´av.
3.2
Hlavn´ı vlastnosti protokolu
3.2.1
Synchronizaˇcn´ı kotvy
Synchronizaˇcn´ı kotva je rˇ etˇezec reprezentuj´ıc´ı synchronizaˇcn´ı ud´alost. Nejˇcastˇeji se jedn´a o datum a cˇ as form´atovany´ podle ISO 8601 (napˇr. XXX). ˚ Duvod zaveden´ı tohoto mechanismu spoˇc´ıv´a v nutnosti kontroly konzistence dat obou stran – zejm´ena u typu˚ synchronizace, kdy chceme pˇren´est jen cˇ a´ sti dat. Pokud pˇri posledn´ı synchronizaci nebo i kdykoli pozdˇeji doˇslo k chybˇe, zjist´ı se tato skuteˇcnost bˇehem inicializace. Jedna nebo druh´a ˚ ze na situaci zareagovat, napˇr. pouˇzit´ım pomal´e synchronistrana tak muˇ zace – porovnaj´ı se vˇsechna data obou stran. V SyncML se pouˇz´ıvaj´ı dvˇe synchronizaˇcn´ı kotvy pojmenovan´e Last a Next. Kotva Last se vztahuje k posledn´ı synchonizaci, zat´ımco kotva Next reprezentuje aktu´aln´ı syn´ chronizaci. Oba udaje se vztahuj´ı k zaˇr´ızen´ı, kter´e data odes´ıl´a. Server i klient tedy odes´ılaj´ı jejich vlastn´ı kotvy. Pˇrijatou kotvu Next ukl´ad´a zaˇr´ızen´ı do doby neˇz nastane dalˇs´ı synchronizace. Pro server je tato vlastnost povinn´a. Pokud m´a zaˇr´ızen´ı pˇri inicializaci k dispozici kotvu Next z posledn´ı synchronizace, porovn´av´a jej´ı hodnotu s kotvou Last. Pˇredpokl´ad´a se, zˇ e v pˇr´ıpadˇe shody nedoˇslo od posledn´ı synchronizace k zˇ a´ dn´e chybˇe. Specifikace d´ale uv´ad´ı, zˇ e se kotvy mus´ı ukl´adat aˇz po zd´arn´em dokonˇcen´ı cel´e synchronizace. V dobˇe, kdy synchronizace probˇehla v poˇra´ dku, uˇz se tedy nemaj´ı pˇren´asˇ et dalˇs´ı zpr´avy a komunikaˇcn´ı kan´al je korektnˇe uzavˇren. 15
3. OMA D ATA S YNCHRONIZATION 3.2.2
Mapov´an´ı na LUID a GUID
SyncML nevyˇzaduje, aby datab´aze dvou synchronizovanych stran byly ´ identick´e. Liˇsit se mohou v podporovanych ´ vlastnostech, form´atov´an´ı dat a tak´e svoj´ı jednoznaˇcnou identifikac´ı v datab´azi serveru a klienta (tedy prim´arn´ım kl´ıcˇ em v datab´azov´e terminologii). V takov´em pˇr´ıpadˇe je vˇsak nutn´e uchov´avat informace o mapov´an´ı serverovych ´ dat na data klientsk´a. Mluv´ı se o glob´aln´ıch identifik´atorech dat (GUID), kter´e udrˇzuje server a lok´aln´ıch indentifik´atorech dat (LUID), kter´e udrˇzuje klient. Pˇri z´ısk´av´an´ı novych ´ dat vrac´ı klient serveru z´aznamy o tom, jak´e LUID pˇriˇradil k GUID zaslan´eho serverem. Server tuto informaci uchov´av´a a p´aruje podle toho z´aznamy pˇri dalˇs´ıch synchronizac´ıch. GUID byv´ ´ a hodnota s vˇetˇs´ım rozsahem neˇz LUID. Mus´ı to byt ´ jednoznaˇcny´ identifik´ator ve vˇsech datab´az´ıch klientskych dat na serveru. LUID mus´ı byt ´ ´ jednoznaˇcn´e jen pro jednoho ˚ konkr´etn´ıho klienta. Pokud server odes´ıl´a klientovi identifikaci z´aznamu, kter´e byly na jeho stranˇe od posledn´ı synchronizace zmˇenˇeny, mus´ı byt ´ pouˇzity hodnoty LUID. Server tak´e nesm´ı klientovi odes´ılat pˇri zˇ a´ dn´e operaci sv´e GUID, pokud by bylo vˇetˇs´ı neˇz to, s kterym ´ by dok´azal pracovat. ˇ V takov´em pˇr´ıpadˇe pouˇzije server doˇcasn´e GUID. Spefifikace d´ale zminuje cachov´an´ı mapovac´ıch operac´ıch jako nepovinn´e vlastnosti klienta. ˇ sen´ı konfliktu˚ 3.2.3 Reˇ Konflikt nast´av´a, pokud dojde ke zmˇenˇe alesponˇ jednoho stejn´eho z´aznamu v datab´az´ıch obou zaˇr´ızen´ı, kter´e maj´ı byt ´ synchronizov´any. O rˇ eˇsen´ı takovych ´ konfliktu˚ se obvykle star´a server. Klient dost´av´a pouze ˚ e ozn´amen´ı, zˇ e ke konfliktu doˇslo a jak je vyˇreˇseny. ´ SyncML podporuje ruzn´ ˚ ˚ ym ´ zpusoby rˇ eˇsen´ı konfliktu˚ rozliˇsenych ruzn Existuje ´ ´ stavovym ´ kodem. vˇsak moˇznost, jak informovat server o tom, zˇ e si klient pˇreje, aby konflikty rˇ esil s´am. V takov´em pˇr´ıpadˇe server vrac´ı pouze informaci o existuj´ıc´ım konfliktu. 3.2.4
Logov´an´ı informac´ı
Klient i server uchov´avaj´ı informace o zmˇen´ach ve svych datab´az´ıch od ´ posledn´ı synchronizace. Tato vlastnost je povinn´a. Zmˇenou se rozum´ı napˇr. pˇrid´an´ı, odstranˇen´ı nebo nahrazen´ı z´aznamu. Informace o zmˇen´ach se vyuˇz´ıvaj´ı pˇri urˇcitych ´ typech synchronizace, kdy nedoch´az´ı k vymˇ ´ enˇe vˇsech dat. Druh zmˇeny se pˇri odes´ıl´an´ı dat druh´e stranˇe popisuje pomoc´ı dan´e operace (Add, Replace, Delete,. . . ). Pokud doch´az´ı k synchronizaci 16
3. OMA D ATA S YNCHRONIZATION s v´ıce neˇz jedn´ım zaˇr´ızen´ım, mus´ı byt ´ moˇzn´e vr´atit pouze zmˇeny, kter´e maj´ı byt ´ vztaˇzeny ke kaˇzd´emu zaˇr´ızen´ı jednotlivˇe. 3.2.5
Obnova vˇsech dat
Obnova vˇsech dat nepatˇr´ı mezi typick´e operace pˇri synchronizaci, pˇresto ale byv´ ´ a nˇekdy potˇreba pˇren´est celou datab´azi z jedn´e strany na druhou. St´av´a se tak typicky po hav´ari´ıch hardwaru nebo ztr´atˇe dat. SyncML tuto vlastnost podporuje skrze refresh Alert pˇr´ıkaz. 3.2.6
Maz´an´ı dat
Maz´an´ı dat se v SyncML prov´ad´ı pˇr´ıkazem delete. Pˇri bˇezˇ n´em uˇzit´ı doch´az´ı ke smaz´an´ı dat z datab´aze pˇr´ıjemce a z´arovenˇ by mˇelo doj´ıt ke zruˇsen´ı vazby na data odes´ılatele (napˇr. pˇri pˇresunu vymazanych ´ dat do jin´e da˚ tab´aze). Tento zpusob se oznaˇcuje jako hard delete“. K nˇemu tedy exis” ˇ tuje jeˇstˇe soft delete“, ktery´ umoˇznuje smazat data z klientsk´e cˇ a´ sti s t´ım, ” ˚ zˇ e st´ale zustanou dostupn´a v serverov´e cˇ a´ sti. N´avrh t´eto vlastnosti je motivov´an mobiln´ımi zaˇr´ızen´ımi s malou kapacitou pamˇeti, kdy existuje ˚ zitˇejˇs´ı data. Zaˇr´ızen´ı s dostateˇcnou kapamoˇznost uvolnit pamˇet’ pro duleˇ ˚ citou pamˇeti vˇsak maj´ı pˇr´ıstup ke vˇsem datum, protoˇze nedoˇslo k jejich smaz´an´ı ze serveru. Pokud klient vyvol´a soft delete na datech, kter´e uˇz jsou vˇsak v t´e dobˇe hard deleted na serveru, dojde k vyvol´an´ı Soft-Delete konfliktu. Specifikace pˇr´ımo neurˇcuje, jak v takov´e situaci pokraˇcovat a z´aleˇz´ı tedy na synchronizaˇcn´ım softwaru, zda a jak tento probl´em vyˇreˇs´ı. Pˇr´ıkaz ˚ ze obsahovat pokyn k archivaci dat pˇred samotnym delete muˇ ´ odstranˇen´ım dat. Tato vlastnost vˇsak nen´ı povinn´a. 3.2.7
Vymˇ ´ ena informac´ı o vlastnostech zaˇr´ızen´ı
SyncML je navrhov´an jako univerz´aln´ı jazyk pro synchronizace dat. ˚ ze prob´ıhat mezi nejruznˇ ˚ ejˇs´ımi zaˇr´ızen´ımi. JeVz´ajemn´a synchronizace muˇ ˇ jich podporovan´e vlastnosti se mohou velmi vyraznˇ e liˇsit a ovlivnovat ´ ˚ eh synchronizace. Proto doch´az´ı mezi zaˇr´ızen´ımi k vymˇ prubˇ ´ enˇe informac´ı ˚ o jejich vlastnostech. To nab´ız´ı zaˇr´ızen´ım moˇznost pˇrizpusobit se vlastnos´ esˇ n´e dokonˇcen´ı synchronitem druh´e strany. T´ım se zvyˇsuj´ı sˇ ance na uspˇ zace. ´ Informace zas´ıl´a klient povinnˇe pˇri uplnˇ e prvn´ı synchronizaci s danym ´ serverem, pˇri zmˇenˇe tˇechto informac´ı nebo na poˇza´ d´an´ı. Klient vˇsak nemus´ı podporovat pˇr´ıjem takovych ´ informac´ı ze serveru. Pokud klient indi17
3. OMA D ATA S YNCHRONIZATION kuje, zˇ e tˇemto informac´ım rozum´ı, mus´ı se jimi rˇ´ıdit. D´ale se doporuˇcuje zv´azˇ it, kdy je nutn´e informace o vlastnostech zaˇr´ızen´ı odes´ılat, protoˇze tak doch´az´ı k pˇrenosu vyznamn´ eho mnoˇzstv´ı dat. Zaˇr´ızen´ı by napˇr. nemˇelo ´ vyˇzadovat informace o druh´e stranˇe pˇri kaˇzd´e synchronizaci. Nemˇelo by tak´e doch´azet k odes´ıl´an´ı informac´ı, u kterych ´ je zn´amo, zˇ e je druh´a strana nezpracuje nebo nevyuˇzije (nem´a vyznam odes´ılat podrobnosti o vlastnos´ tech, kterym ´ v dan´em form´atu server rozum´ı, pokud klient tento form´at ˚ nepodporuje vubec). 3.2.8
Adresa zdroje a c´ıle synchronizace
Vˇetˇsina/kaˇzd´a zpr´ava bˇehem synchronizace obsahuje adresu zdroje a c´ıle dat – tedy adresu klienta a serveru. Nejˇcastˇeji se zde objevuje URI objektu ve tvaru absolutn´ı nebo relativn´ı adresy. V pˇr´ıkladu XY to je adresa webov´eho serveru, ktery´ prov´ad´ı sychronizaci a unik´atn´ı identifikace telefonu.
http://localhost:8080/sync <Source>
IMEI:1234567890
ˇ ıc´ı informace. AdTyto poloˇzky vˇsak mohou obsahovat i dalˇs´ı upˇresnuj´ ˚ ze pˇr´ımo odkazovat na konkr´etn´ı datab´azi dat nebo pˇr´ımo na resa se muˇ jednu poloˇzku v datab´azi. Adresa kontaktu cˇ ´ıslo 1234 v datab´azi urˇcit´eho telefonu. <Source>
IMEI:1234567890/contacts/1234
V nˇekterych ´ pˇr´ıpadech byv´ ´ a uˇziteˇcn´e adresovat jen cˇ a´ st datab´aze dat. ´ celu slouˇz´ı filtrov´an´ı dat identifikovanych K tomu uˇ ´ tˇemito adresami. Spe˚ ych ˚ cifikace obsahuje popis, jak z´ıskat data podle ruzn ´ hodnot atributu. 3.2.9
Spr´ava pamˇeti zaˇr´ızen´ı
Nˇekter´a zaˇr´ızen´ı disponuj´ı omezenou pamˇet´ı pro ukl´ad´an´ı dat a proto byla zavedena vymˇ ´ ena informac´ı o jej´ı voln´e kapacitˇe. Pˇredch´az´ı se tak ´ esˇ nym ˚ neuspˇ synchronizac´ım z duvodu mal´e kapacity pamˇeti. Velikost ´ voln´eho m´ısta se pˇren´asˇ´ı pˇri inicializaci. Pˇren´asˇ´ı se jak velikost voln´eho ˚ m´ısta v bytech, tak volny´ poˇcet z´aznamu. 18
3. OMA D ATA S YNCHRONIZATION <Sync>
1 \ldots <Meta> <Mem xmlns=’syncml:metinf’>
8100 81 \ldots
3.2.10 Pˇrenos velkych ´ objemu˚ dat ´ Pˇri pˇrenosech velk´eho objemu dat mus´ı zdrojov´e zaˇr´ızen´ı respektovat udaj o maxim´aln´ı velikosti zpr´avy a obsaˇzenych ´ datech. Tyto informace mohou byt ´ odeslan´e bˇehem inicializace v elementech MaxMsgSize a MaxObjSize. Pokud objemy dat pˇresahuj´ı tyto hodnoty, mus´ı doj´ıt k rozdˇelen´ı do v´ıce ´ SyncML zpr´av. Prvn´ı pˇren´asˇ eny´ d´ıl dat obsahuje udaj o zbyvaj´ ´ ıc´ı velikosti a pˇr´ıkaz MoreData, podle kter´eho c´ılov´e zaˇr´ızen´ı pozn´a, zˇ e budou n´asledovat dalˇs´ı cˇ a´ sti. Po pˇrijet´ı posledn´ı cˇ a´ sti dat c´ılov´e zaˇr´ızen´ı spoj´ı vˇsechny do˚ ze hromady a pracuje s nimi jako by je pˇrijal najednou. V jednu chv´ıli muˇ ˚ byt rozdˇeleny. ´ pˇren´asˇ en pouze jeden objekt t´ımto zpusobem ´ Tak´e mus´ı byt ´ ˇ pˇreneseny vˇsechny cˇ a´ sti za sebou. Z´adn´e dalˇs´ı zpr´avy, kter´e by nesouvisely ´ s pˇrenosem cˇ a´ st´ı dat, nesm´ı byt o zbyvaj´ ´ odes´ıl´any. Udaj ´ ıc´ı velikosti slouˇz´ı tak´e k zamezen´ı pˇrenose vˇsech dat pˇr´ı pˇreruˇsen´ı synchronizace. 3.2.11 Synchronizace hierarchickych ´ dat Od verze 1.2 podporuje protokol synchronizaci hierarchickych dat. Rea´ lizuje se pomoc´ı elementu˚ SourceParent a TargetParent. Klient v pˇr´ıpadˇe existence rodiˇcovsk´eho z´aznamu odes´ıl´a jeho LUID vˇzdy v SourceParent. Server pouˇz´ıv´a tento element v situaci, kdy rodiˇcovsky´ z´aznam jeˇstˇe u klienta neexistuje a odes´ıl´a doˇcasn´e GUID. TargetParent slouˇz´ı v opaˇcnych ´ situac´ıch – pak server odes´ıl´a LUID klientsk´e datab´aze. 3.2.12 Pˇreruˇsen´ı a obnova synchronizace Klient a server mohou podporovat pˇreruˇsen´ı a obnoven´ı dˇr´ıvˇejˇs´ı synchronizace. K pˇreruˇsen´ı synchronizace doch´az´ı bud’ c´ılenˇe na z´akladˇe poˇzadavku ˚ ˚ ze uˇzivatele nebo v dusledku nˇejak´e chyby, napˇr. pˇreruˇsen´ı spojen´ı. Muˇ k nˇemu doj´ıt bˇehem kter´ekoliv f´aze. Z´amˇerem t´eto vlastnosti protokolu je zamezit odes´ıl´an´ı dat, kter´e uˇz byly jednou pˇreneseny bˇehem pˇredchoz´ı synchronizace. Pˇri poˇzadavku na c´ılen´ı pˇreruˇsen´ı by mˇel klient odeslat 19
3. OMA D ATA S YNCHRONIZATION z´arovenˇ potvrzen´ı o vˇsech uspˇesˇ nˇe dokonˇcenych ´ operac´ıch, aby se pˇredeˇslo jejich opakov´an´ı pˇri obnovˇe synchronizace. Pˇri tomto pˇreruˇsen´ı nedoch´az´ı k aktualizaci kotvy Last. Klient i server si tak´e mus´ı pamatovat, zˇ e byla synchronizace pˇreruˇsena. Obnova zapoˇcat´e synchronizace prob´ıh´a stejnˇe pro oba druhy pˇreruˇsen´ı i pro vˇsechny typy sychronizac´ı. Provedeny jsou znovu vˇsechny operace, kter´e se nepodaˇrilo dˇr´ıve dokonˇcit. Klient vˇsak mus´ı o obnoven´ı zapoˇcat´e synchronizace poˇza´ dat, pˇriˇcemˇz server ˚ ze obnoven´ı odm´ıtnout. Po pˇreruˇsen´e synchronizaci, kter´a se neobnov´ı, muˇ n´asleduje pomal´a synchronizace.
3.2.13 Signalizace pˇret´ızˇ en´ı serveru ˚ ze nastat situace, kdy server pˇrij´ım´a data od kliBˇehem synchronizace muˇ enta, ale nezvl´ad´a odpovˇedˇet v rozumn´em intervalu. V takovych ´ pˇr´ıpadech by mˇel server o tomto stavu informovat klienta – odpovˇedˇet se zpr´avou ´ ˚ ze s pˇr´ısluˇsnym bez vlastn´ıho obsahu, na ktery´ klient cˇ ek´a. Ten si muˇ ´ kodem ’ vybrat, jestli pozdˇeji poˇza´ d´a server o odpovˇed na starˇs´ı zpr´avu nebo zah´aj´ı ˚ ze odpov´ıdat signalizac´ı zanepr´azdnˇen´eho novou synchronizaci. Server muˇ stavu v´ıcekr´at za sebou.
3.2.14 Typy synchronizac´ı Dvousmˇern´a synchronizace Klient a server si vymˇen´ı zmˇenˇen´a data od posledn´ı synchronizace mezi tˇemito zaˇr´ızen´ımi. Jednosmˇern´a synchronizace Data zmˇenˇen´a od posledn´ı synchronizace se odes´ılaj´ı jen jedn´ım smˇerem od klienta nebo serveru. Jednosmˇerny´ export/import dat Vˇsechna data jsou odesl´ana pr´avˇe jen jedn´ım smˇerem od klienta nebo serveru. Pomal´a synchronizace Typ obousmˇern´e synchronizace, kdy doch´az´ı k porovn´an´ı vˇsech dat mezi serverem a klientem. Pouˇz´ıv´a se pˇri prvn´ı synchronizaci nebo ´ esˇ n´e synchronizaci. po neuspˇ 20
3. OMA D ATA S YNCHRONIZATION 3.2.15 Standardn´ı form´aty dat ˇ K tomu, aby zaˇr´ızen´ı splnovalo specifikaci OMA DS, mus´ı podporovat pˇredepsan´e form´aty ze specifikace vObject Minimum Interoperability Proˇ ˚ zda je jejich podpora file [7]. Specifikace zminuje u konkr´etn´ıch atributu, nutn´a nebo vhodn´a. Jedn´a se o tyto objekty: vCard 2.1 BEGIN:VCARD VERSION:2.1 FNKE MCGRATH N:MCGRATH, MIKE TEL;WORK;VOICE:+1-919-555-3456 END:VCARD vCalendar 1.0 BEGIN:VCALENDAR VERSION:2.0 METHOD:REQUEST BEGIN:VEVENT UID:12345-19991015T133000Z SEQUENCE:1 DTSTART:19991026T110000Z DTEND:19991026T190000Z SUMMARY:Technical Committee Meeting CATEGORIES:Appointment ORGANIZER:
[email protected] ATTENDEES:
[email protected] END:VEVENT END:VCALENDAR vBookmark 1.0 3.2.16 Prubˇ ˚ eh synchronizace Synchronizaˇcn´ı protokol definuje, jak spolu komunikuj´ı klient a server s c´ılem synchronizovat data [6]. Vyuˇz´ıv´a se pˇritom ve velk´e m´ırˇ e funkcionality ostatn´ıch komponent SyncML protokolu. Komunikace mezi klientem a serverem se dˇel´ı na tyto f´aze: Inicializace synchronizace •
autentizace mezi klientem a serverem 21
3. OMA D ATA S YNCHRONIZATION • • •
vymˇ ´ ena informac´ı o schopnostech zaˇr´ızen´ı a poskytovanych ´ sluˇzb´ach popis typu˚ synchronizovan´eho obsahu ´ esˇ n´e synchrovymˇ ´ ena a odsouhlasen´ı informace o posledn´ı uspˇ nizaci
Vymˇ ´ ena dat •
ˇ ı samotn´a vymˇ ´ ena dat. Podle typu synchronizace se vymˇenuj´ vˇsechna nebo jen upraven´a data.
Ukonˇcen´ı sezen´ı • • •
klient informuje server o vysledku zpracov´an´ı zmˇen ode´ slanych ´ serverem klient odeˇsle zpˇet serveru informace o mapov´an´ı pˇridanych ´ poloˇzek server informuje klienta o dokonˇcen´ı sezen´ı
3.2.17 Elementy zpr´av synchronizace Reprezentaˇcn´ı protokol obsahuje sadu elementu˚ XML zpr´av, ke kterym ´ definuje oblast pouˇzit´ı, form´at a vyˇ ´ cet moˇznych ´ odpovˇed´ı. Elementy se dˇel´ı do tˇechto z´akladn´ıch skupin: • • • • •
ob´alka; rˇ´ıd´ıc´ı elementy; pˇr´ıkazy; obecn´e elementy; popis dat.
3.2.18 WBXML a OMA DS ´ XML form´at s´am o sobˇe nepatˇr´ı mezi pˇr´ıliˇs usporn´ e z hlediska objemu dat. Proto organizace WapForum vytvoˇrila specifikaci bin´arn´ı formy XML jako vhodnˇejˇs´ı varianty pro pˇrenos pˇres linky s omezenou sˇ´ırˇ kou p´asma. ˚ Puvodnˇ e byl tento form´at navrˇzeny´ pro WAP. Pozdˇeji se vˇsak objevila bin´arn´ı varianta i dalˇs´ıch protokolu˚ zaloˇzenych ´ na XML vˇcetnˇe SyncML. Tato bin´arn´ı forma XML je navrˇzena tak, aby zachov´avala strukturu a s´emantiku dokumentu [3]. Pˇrevod se prov´ad´ı nahrazen´ım n´azvu˚ tagu˚ a atributu˚ bin´arn´ımi hodnotami. Pokud chceme dany´ XML soubor pˇrev´est 22
3. OMA D ATA S YNCHRONIZATION do bin´arn´ı podoby, mus´ıme m´ıt k dispozici mapov´an´ı tˇechto jmen na ˚ ych bin´arn´ı hodnoty. Mapov´an´ı lze rozdˇelit do v´ıce cˇ a´ st´ı – mluv´ı se o ruzn ´ ´ kodovac´ ıch str´ank´ach. Tato vlastnost je nutn´a pro pˇrevod dokumentu˚ ˚ vˇetˇs´ım poˇctem n´azvu˚ a hod´ı se pro rozdˇelen´ı hodnot do logickych ´ celku. Meta informace jako napˇr. definice typu dokumentu nebo znakov´a sada se tak´e pˇrekl´adaj´ı do bin´arn´ı podoby. Samotny´ obsah atributu˚ a tagu˚ tak ˚ av´a jako jediny´ nezmˇenˇeny. zust´ ´ 3.2.19 Protokol OMA DM ´ Protokol OMA Device Management je uzce spojen s protokolem OMA DS. Ve svych ´ poˇca´ tc´ıch byly oba vyv´ıjeny spoleˇcnˇe pod n´azvem SyncML. Teprve s pˇrechodem SyncML pod organizaci Open Mobile Aliance doˇslo k rozdˇelen´ı na dva nez´avisl´e protokoly. Pˇr´ıbuznost k OMA DS lze ˚ kter´e se od dob SyncML nezmˇenily vidˇet tˇreba na n´azvech XML tagu, ˚ avaj´ı u obou protokolu˚ st´ale (pouze pˇribyly nov´e). Nˇekter´e moduly zust´ stejn´e, napˇr. autentizace. Naproti tomu nejvˇetˇs´ı rozd´ıly spoˇc´ıvaj´ı v jin´em pˇrenosu informac´ı o zaˇr´ızen´ı, vˇetˇs´ıch poˇzadavc´ıch na bezpeˇcnost a vlastn´ım ˚ zpusobu pˇrenosu dat. Posledn´ı verze s cˇ ´ıslem 1.2.1 poch´az´ı z roku 2008. Pracuje se na verzi 1.3 a tak´e na 2.0. ´ cel protokolu spoˇc´ıv´a ve spr´avˇe mobiln´ıch zaˇr´ızen´ı na d´alku. Hlavn´ı uˇ Rozdˇelen´ı je moˇzn´e do tˇrech logickych ´ komponent: [3] •
Bootstrapping – inicializaˇcn´ı f´aze nutn´a pro zah´ajen´ı spr´avy zaˇr´ızen´ı.
•
Device management protocol – vlastn´ı pˇrenos operac´ı pro spr´avu.
•
˚ kter´e lze spraDevice description framework – popis vˇsech objektu, vovat. Hlavn´ı vlastnosti protokolu se neliˇs´ı od spr´avy bˇezˇ n´eho PC:
•
Zmˇena parametru˚ (napˇr. nastaven´ı data a cˇ asu, konfigurace Wi-Fi ˚ nebo VPN, pˇrid´av´an´ı a maz´an´ı dostupnych ´ certifik´atu).
•
Diagnostika zaˇr´ızen´ı (napˇr. rˇ eˇsen´ı probl´emu, monitoring vykonnosti ´ s´ıtˇe).
•
Spr´ava softwaru (napˇr. instalace aplikac´ı, aktualizace firmwaru zaˇr´ızen´ı). 23
3. OMA D ATA S YNCHRONIZATION Vyhody pro c´ılov´e skupiny uˇzivatelu˚ OMA DM ´ Koncovy´ uˇzivatel Pro koncov´eho uˇzivatele se vyraznˇ e zvyˇsuje pohodl´ı ´ pˇri pouˇz´ıv´an´ı zaˇr´ızen´ı, kdyˇz nutn´e zmˇeny nastaven´ı, aktualizace a jin´e operace prob´ıhaj´ı automaticky nebo po jednoduch´em odsou˚ ze pomoct pˇri rˇ eˇsen´ı hlasen´ı na d´alku. Tak´e monitoring zaˇr´ızen´ı muˇ probl´emu bez nutnosti n´avˇstˇevy technick´eho oddˇelen´ı. Mobiln´ı oper´atoˇri a podnikov´e prostˇred´ı Mobiln´ı oper´atoˇri spravuj´ı rozs´ahl´e s´ıtˇe, podniky zase velk´e mnoˇzstv´ı zaˇr´ızen´ı, kter´e vyuˇz´ıvaj´ı zamˇestnanci. Implementace spr´avy pˇres OMA DM nab´ız´ı jednotny´ ˚ ˚ ejˇs´ıch cˇ a´ st´ı s´ıtˇe i zaˇr´ızen´ı. a efektivn´ı zpusob obsluhy nejruznˇ Poskytovatel´e sluˇzeb Pro poskytovatele sluˇzeb vˇcetnˇe tˇech internetovych, ´ softwarovych ´ i podnikovych ´ existuje rˇ eˇsen´ı, jak zajistit, aby zaˇr´ızen´ı z´akazn´ıka vˇzdy obsahovalo spr´avnou verzi softwaru, resp. firmwaru a jeho konfiguraci. Vyrobci zaˇr´ızen´ı Pro uˇzivatele se st´av´a zaˇr´ızen´ı s implementac´ı protokolu ´ ˚ ze asociovat spr´avy atraktivnˇejˇs´ı a jednoduˇssˇ´ı a tuto skuteˇcnost si muˇ s dalˇs´ımi vyrobky. Nav´ıc OMA DM pˇredstavuje jednotny´ protokol ´ pro vˇsechny zm´ınˇen´e skupiny a tedy nen´ı potˇreba jich implemento˚ ze m´ıt pozitivn´ı vliv na velikost kodu. ´ vat v´ıce, coˇz muˇ
24
Kapitola 4
Integrace synchronizace dat do webovych ´ aplikac´ı V n´asleduj´ıc´ı cˇ a´ sti pr´ace se budu vˇenovat analyze, n´avrhu a implemen´ taci prototypu r´amce, ktery´ umoˇzn´ı integraci synchronizace dat mobiln´ıch ˇ sit tedy budu, jak zpˇr´ıstupnit data z mozaˇr´ızen´ı do webovych ´ aplikac´ı. Reˇ biln´ıho zaˇr´ızen´ı pˇres webov´e rozhran´ı, ne vˇsak cely´ proces sychnronizace. Zjednoduˇsenˇe se d´a r´amec oznaˇcit za prostˇredn´ıka mezi mobiln´ım zaˇr´ızen´ım a synchronizaˇcn´ım modulem.
4.1
Neform´aln´ı popis aplikace a poˇzadavky
ˇ ast zad´an´ı, tykaj´ C´ eho r´amce, nebyla stanovena ´ ıc´ı se podoby vysledn´ ´ ´ konkr´etnˇe. Ukolem tedy bylo zamyslet se nad moˇznostmi pˇri vytv´arˇ en´ı r´amce a nad vlastnostmi, kter´e bude moˇzn´e implementovat. Stanoven byl programovac´ı jazyk, ve kter´em bude aplikace naps´ana — Java. Webov´e ´ prohl´ızˇ eˇce podporuj´ı spouˇstˇen´ı javov´eho kodu rˇ adu let a oˇcek´avali jsme ˚ emu hardwaru. Nav´ıc by mˇel byt moˇzny´ pˇr´ıstup k ruzn´ ´ r´amec navrˇzen tak, aby mohl byt ´ zaˇclenˇen v budoucnu do prostˇred´ı firemn´ıho port´alu psan´eho v Javˇe. 4.1.1
Hlavn´ı funkˇcn´ı poˇzadavky
•
Mus´ı umoˇznit synchronizaci bˇezˇ nych ´ dat mobiln´ıch zaˇr´ızen´ı s webovou aplikac´ı.
•
Mus´ı podporovat synchronizaci vzd´alenˇe pˇres mobiln´ı/bezdr´atovy´ internet.
•
Mus´ı podporovat synchronizaci lok´alnˇe pˇres poˇc´ıtaˇc pˇripojeny´ v s´ıti.
•
Mus´ı byt syn´ rozˇsiˇritelny´ o podporu pˇredem nespecifikovanych ´ ˚ chronizaˇcn´ıch serveru˚ a modulu. 25
´ 4. I NTEGRACE SYNCHRONIZACE DAT DO WEBOV YCH APLIKAC´I 4.1.2
Hlavn´ı nefunkˇcn´ı poˇzadavky
•
Pouˇzit´ı programovac´ıho jazyka Java.
•
Mus´ı podporat co nejˇsirˇs´ı poˇcet zaˇr´ızen´ı z hlediska pˇrenosov´eho m´edia.
•
Mus´ı podporat co nejˇsirˇs´ı poˇcet zaˇr´ızen´ı z hlediska synchronizaˇcn´ıho protokolu.
•
˚ e platformy na stranˇe uˇzivatele. Mus´ı podporovat ruzn´
4.2
Analyza ´
Bˇehem z´akladn´ı analyzy ´ bylo potˇreba naj´ıt odpovˇedi na tyto ot´azky: •
Jak´a data mobiln´ıch zaˇr´ızen´ı uˇzivatel´e standardnˇe uchov´avaj´ı a potˇrebuj´ı synchronizovat?
•
Jakym ´ protokolem pˇren´asˇ et data?
•
Jak pˇren´asˇ et data z mobiln´ıch zaˇz´ızen´ı k webov´e aplikaci?
4.2.1
Data mobiln´ıch zaˇr´ızen´ı
Spousta dat uchov´avanych v mobiln´ım zaˇr´ızen´ıch spadaj´ı do kategorie ´ PIM (Personal Information Management). Jedn´a se zejm´ena o kontakty, ka´ lend´arˇ s ukoly, pozn´amky, ale tak´e tˇreba z´aloˇzky prohl´ızˇ eˇce webu nebo wapu. D´ale to mohou byt ´ z´aznamy komunikace pˇres SMS, email nebo chat. U zaˇr´ızen´ı, kter´a mohou slouˇzit ve vˇetˇs´ı m´ırˇ e k vytv´arˇ en´ı obsahu, tak´e soubory s dokumenty. Pˇri testov´an´ı prototypu vytv´arˇ en´eho r´amce se zamˇerˇ´ım ˚ kalend´arˇ e a pozn´amek. hlavnˇe na synchronizaci osobn´ıch dat – kontaktu, Vˇetˇsina mobiln´ıch zaˇr´ızen´ı s nimi pracuje a cˇ asto je um´ı i synchronizovat. 4.2.2
Volba protokolu
Volba vlastn´ıho rˇ eˇsen´ı synchronizace by byla opodstatnˇen´a pouze ˚ Pro uˇ ´ cel v pˇr´ıpadˇe nevyhovuj´ıc´ıch vlastnost´ı jinych ´ dostupnych ´ protokolu. tohoto r´amce vˇsak potˇrebuji sp´ısˇ e rozˇs´ırˇ eny´ protokol pro synchronizaci bˇezˇ nych ´ dat bez speci´aln´ıch poˇzadavku˚ na chov´an´ı. N´avrh vlastn´ıho protokolu by vydal na samostatnou pr´aci. Hledal jsem proto existuj´ıc´ı protokol. V souˇcasn´e dobˇe existuje jediny´ rozˇs´ırˇ eny´ a otevˇreny´ synchronizaˇcn´ı protokol pro data mobiln´ıch zaˇr´ızen´ı – je j´ım OMA DS. Mezi vyhody patˇr´ı ´ 26
´ 4. I NTEGRACE SYNCHRONIZACE DAT DO WEBOV YCH APLIKAC´I relativnˇe velk´a podpora v podobˇe nativn´ıch klientskych aplikac´ı v mo´ biln´ıch zaˇr´ızen´ıch a serverovy´ synchronizaˇcn´ı software a sluˇzby. (TODO: Kolik zarizeni/sluzeb). Nav´ıc by bylo moˇzn´e v pˇr´ıpadˇe nutnosti synchronizace speci´aln´ıch typu˚ dat napsat vlastn´ı klientsky´ a serverovy´ software nebo pˇridat podporu do existuj´ıc´ıch. OMA DS neomezuje v tom, jak´a data se synchronizuj´ı. 4.2.3
Pˇrenos dat mezi mobiln´ım zaˇr´ızen´ım a webovou aplikac´ı
Existuj´ı dvˇe z´akladn´ı moˇznosti jak z mobiln´ıho zaˇr´ızen´ı pˇristupovat ´ celem synchronizace dat. Prvn´ı spoˇc´ıv´a v pˇr´ım´em k webov´e aplikaci za uˇ spojen´ı pˇres internet. Nez´aleˇzelo by na tom, zda se jedn´a o WiFi, pˇrenos dat ˚ pˇres mobiln´ı s´ıt’ nebo jiny´ zpusob. Zaˇr´ızen´ı by pˇr´ımo pˇristupovalo k synchronizaˇcn´ı sluˇzbˇe pomoc´ı pˇr´ısluˇsn´eho protokolu a klientsk´e aplikace. Nejednalo by se tedy o pˇr´ıstup k webov´e aplikaci pˇres webovy´ prohl´ızˇ eˇc. V druh´em pˇr´ıpadˇe se vyuˇz´ıv´a dalˇs´ıho zaˇr´ızen´ı, napˇr. poˇc´ıtaˇce, jako ˚ zitou roli rozhran´ı webov´e aplikace, meziˇcl´anku. Na nˇem uˇz hraje duleˇ kter´e se pˇri zobrazen´ı st´av´a rozhran´ım k synchronizaˇcn´ımu serveru. Mobiln´ı zaˇr´ızen´ı se pak pˇripojuje lok´alnˇe k tomuto rozhran´ı, kter´e poˇzadavky zpracov´av´a – napˇr. pˇrepos´ıl´a synchronizaˇcn´ımu serveru. Pˇr´ıstupu pˇres vzd´alen´e rozhran´ı lze jednoduˇse naimplementovat jako servlet, ktery´ pracuje podle specifikace s popisem mapov´an´ı SyncML zpr´av na HTTP poˇzadavky. Pˇrijat´e zpr´avy se pˇred´avaj´ı synchronizaˇcn´ımu modulu ke zpracov´an´ı a a odpovˇedi se vrac´ı mobiln´ımu zaˇr´ızen´ı. Lok´aln´ı pˇr´ıstup nab´ız´ı v´ıce variant zpracov´an´ı. C´ılem by se mˇelo byt, ´ ´ ktery´ aby uˇzivatel pˇri otevˇren´ı webov´eho rozhran´ı lok´alnˇe spustil kod, bude pracovat jako br´ana k synchronizaˇcn´ımu modulu webov´e aplikace. ´ mus´ı byt Kod ´ spuˇstˇen lok´alnˇe, protoˇze je potˇreba pˇristupovat k hard´ z webov´eho rozwaru poˇc´ıtaˇce. Ve svˇetˇe Javy lze lok´alnˇe spouˇstˇet kod hran´ı pˇres applety a protokol JNLP (Java Network Launching Protocol). ˚ ze teoreticky Proces pˇripojen´ı uˇzivatele k br´anˇe a zah´ajen´ı komunikace muˇ inicializovat jak klient, tak server. Po pˇripojen´ı br´ana pˇrepos´ıl´a SyncML zpr´avy obˇema smˇery. Pro odes´ıl´an´ı zpr´av z lok´aln´ıho rozhran´ı synchronizaˇcn´ımu modulu se pouˇz´ıv´a servlet urˇceny´ pro vzd´aleny´ pˇr´ıstup. Nejrozˇs´ırˇ enˇejˇs´ımi rozhran´ımi pro komunikaci mobiln´ıho zaˇr´ızen´ı a poˇc´ıtaˇce jsou v souˇcasnosti Bluetooth a USB. Vzd´alen´e rozhran´ı pro synchronizaci pˇr´ıstupn´e pˇres HTTP protokol ˚ avˇsak pˇr´ıstup pˇres byv´ ´ a standardn´ı souˇca´ st´ı synchronizaˇcn´ıch serveru, ´ esˇ n´a implementace lok´aln´ı rozhran´ı a Bluetooth nebo USB bˇezˇ ny´ nen´ı. Uspˇ takov´eho modulu pro lok´aln´ı pˇr´ıstup by pˇrinesla n´asleduj´ıc´ı vyhody: ´ 27
´ 4. I NTEGRACE SYNCHRONIZACE DAT DO WEBOV YCH APLIKAC´I •
Pˇr´ıstup pˇres Bluetooth nebo USB i k synchronizaˇcn´ım sluˇzb´am, kter´e toto rozhran´ı nativnˇe nepodporuj´ı.
•
´ ˚ Pro nˇekter´e uˇzivatele by mohla byt Uspora prostˇredku. ´ br´ana ´ ´ ´ lok´aln´ıho rozhran´ı vyhodnˇ e jˇ s ı , protoˇ z e vyuˇ z ı v´ a poˇ c ı taˇ c pˇ ripojeny´ ´ pˇres bˇezˇ ny´ internet, ktery´ je st´ale mnohem levnˇejˇs´ı neˇz ten mobiln´ı.
•
Webov´e rozhran´ı pouˇzit´e k otev´ır´an´ı modulu lok´aln´ıho rozhran´ı by mohlo slouˇzit tak´e k rˇ eˇsen´ı ud´alost´ı, kter´e vyˇzaduj´ı z´asah uˇzivatele (napˇr. rˇ eˇsen´ı konfliktu˚ pˇri souˇcasn´e editaci dat na obou stran´ach synchronizace).
4.2.4
Podpora USB v Javˇe
˚ Vedle nˇekolika komerˇcn´ıch propriet´arn´ıch zpusob u˚ pˇr´ıstupu k USB existuje standard JSR-80. Toto API poskytuje pˇr´ımy´ pˇr´ıstup k celkov´e topologii USB ´ ˇ e API, kter´e kop´ıruje a pˇripojenym nov´ ´ zaˇr´ızen´ım. Jedn´a se tedy o n´ızkourov topologii USB [21]. Tˇr´ıdy se nach´azej´ı v bal´ıku javax.usb. Aˇckoliv specifikace v koneˇcn´e verzi vznikla v roce 1995, nenaˇsel jsem jej´ı volnˇe pˇr´ıstupnou multiplatformn´ı implementaci. Referenˇcn´ı implementace tohoto API podporuje pouze Linux. ´ Vzhledem k t´eto ne uplnˇ e vyhovuj´ıc´ı podpoˇre USB v Javˇe se d´ale zamˇerˇ´ım pouze na Bluetooth rozhran´ı. R´amec se vˇsak budu snaˇzit navrhnout tak, aby bylo moˇzn´e pˇridat podporu USB a jinych ´ technologi´ı pozdˇeji. 4.2.5
Podpora Bluetooth v Javˇe
Specifikace podpory Bluetooth se skryv´ ´ a pod JSR-82. Jej´ı cely´ n´azev zn´ı Java ˇ API for Bluetooth Wireless Technology. Poskytovan´e API umoˇznuje aplikac´ım pracovat s touto technologi´ı jak v malych ´ mobiln´ıch zaˇr´ızen´ıch s Javou ME, tak na desktopu s Javou SE. Prim´arnˇe se vˇsak za c´ılovou skupinu ˇ povaˇzovala mobiln´ı Java. N´avrh API proto zohlednuje mal´a zaˇz´ızen´ı s omeˇ zenym a dostupnou energi´ı. JABWT zpˇr´ıstupnuje ´ vypoˇ ´ cetn´ım vykonem ´ API jen k nˇekterym ´ technologi´ım cel´eho Bluetooth stacku. Jsou to jmenovitˇe L2CAP, RFCOMM, SDP a OBEX. Podporov´an tak nen´ı napˇr. pˇrenos hlasu. ´ cely t´eto pr´ace se z JABWT vyuˇzuj´ı tyto cˇ a´ sti API: Pro uˇ • • •
vyhled´av´an´ı dostupnych ´ zaˇr´ızen´ı; vyhled´av´an´ı sluˇzeb zaˇr´ızen´ı; komunikace pˇres OBEX. 28
´ 4. I NTEGRACE SYNCHRONIZACE DAT DO WEBOV YCH APLIKAC´I Pro pˇr´ıstup k Bluetooth pˇres JABWT API jsem zvolil knihovnu BlueCove 1 distribuovanou pod Apache Licence 2.0. Podporuje Bluetooth stacky v syst´emech Windows, Linux i MacOS. Pod Linuxem je potˇreba pouˇz´ıt ˚ nekompatibilitˇe licence se stackem nav´ıc knihovnu bluecove-gpl.jar kvuli BlueZ. 4.2.6
Spouˇstˇen´ı Java kodu ´ pˇres webov´e rozhran´ı
Java applety Java aplety doprov´az´ı Javu od jej´ı prvn´ı verze. V dobˇe, kdy neexistoval ˚ ˚ Flash a jin´e RIA technologie, pˇredstavovaly applety jeden z m´ala zpusob u, ´ jak vˇclenit do webu sloˇzitˇejˇs´ı cˇ a´ st kodu, kter´a neˇsla ps´at v Javascriptu. O tuto pozici vˇsak vlivem nˇekolika faktoru˚ applety pˇriˇsly a s rozvojem RIA byly vytlaˇceny na okraj z´ajmu. V souˇcasn´e dobˇe se objevuj´ı jen zˇr´ıdka. ´ Applety mohou byt Nepodepsan´e se ´ spouˇstˇeny ve dvou modech. ˚ z bezpeˇcnostn´ıch duvod u˚ spouˇst´ı bez moˇznosti pˇr´ıstupu k poˇc´ıtaˇci. Pokud tato situace nevyhovuje, mus´ı doj´ıt k jejich podeps´an´ı certifikaˇcn´ı autoritou. Pˇri vyvoji a podobnych ´ ´ situac´ıch existuje tak´e moˇznost podepisovat applet sv´epomoc´ı bez certifikaˇcn´ı autority. Java Web Start ˇ Jedn´a se o framework, ktery´ umoˇznuje pˇr´ım´e spouˇstˇen´ı Java aplikac´ı z webov´eho prohl´ızˇ eˇce, aniˇz by se uˇzivatel musel starat o jejich stahov´an´ı a instalaci. Tento proces prob´ıh´a transparentnˇe. Automaticky lze tak´e stahovat bˇehov´e prostˇred´ı Javy, pokud nen´ı k dispozici nebo neodpov´ıd´a poˇzadovan´e verzi. Technologie se stala souˇca´ st´ı J2SE verze 1.4 pro 32bitov´e operaˇcn´ı syst´emy, u 64bitovych syst´emu aˇz od verze 1.6. Vedle t´eto ´ standardn´ı implementace od Sunu existuje nˇekolik dalˇs´ıch nez´avislych. ´ Samotn´e spouˇstˇen´ı aplikace se popisuje pomoc´ı JNLP souboru. Jedn´a se o XML soubor s popisem um´ıstˇen´ı jar archivu, hlavn´ı spouˇstˇec´ı tˇr´ıdy, verze ˚ m´a spouˇstˇen´ı pˇres JNLP dvˇe hlavn´ı a dalˇs´ıch informac´ı. Oproti appletum vyhody: nepotˇrebujeme Java plugin do webov´eho prohl´ızˇ eˇce a spouˇstˇet lze ´ ´ bˇezˇ nou aplikac´ı bez speci´aln´ıch uprav. Nepodepsan´a aplikace se chov´a podobnˇe jako applety – spust´ı se s omezenymi pr´avy. I nepodepsan´a vˇsak ´ ˚ ze m´ıt cˇ a´ steˇcny´ pˇr´ıstup k poˇc´ıtaˇci pomoc´ı API, kter´e JNLP vystavuje. muˇ ˚ muˇ ˚ ze byt Jednou malou nevyhodou oproti appletum ´ ´ to, zˇ e se nespust´ı v oknˇe prohl´ızˇ eˇce, ale samostatnˇe. 1.
http://bluecove.org/index.html
29
´ 4. I NTEGRACE SYNCHRONIZACE DAT DO WEBOV YCH APLIKAC´I
4.3
N´avrh a implementace Bluetooth modulu
Pˇri otevˇren´ı str´anky webov´e aplikace mus´ı doj´ıt ke spuˇstˇen´ı br´any, kter´a bude komunikovat s mobiln´ım zaˇr´ızen´ım. Ke komunikaci se pouˇz´ıv´a protokol OBEX. Pomoc´ı pˇr´ısluˇsn´eho API se nejprve vytvoˇr´ı SessionNotifier, ktery´ pˇred´av´a ud´alosti ke zpracov´an´ı instanci objektu ServerRequestHanˇ ezec, ktery´ se pouˇz´ıv´a k popisu tohoto serveru m´a tvar bˇezˇ n´eho dler. Retˇ URI. V pˇr´ıpadˇe tohoto r´amce se skl´ad´a z n´asleduj´ıc´ıch cˇ a´ st´ı: •
Jm´eno pˇrenosov´eho protokolu. Pro OBEX pˇren´asˇ eny´ po Bluetooth se pouˇz´ıv´a zkratky btgoep (Bluetooth Generic Object Exchange Protocol).
•
Jm´eno stroje, na kter´em server vznik´a. V naˇsem pˇr´ıpadˇe se jedn´a o n´asˇ vlastn´ı poˇc´ıtaˇc, tedy localhost.
•
Identifikaˇcn´ı oznaˇcen´ı sluˇzby. Pro OMA DS je tato hodnota standardizov´ana v dokumentu, ktery´ popisuje jeho mapov´an´ı na OBEX protokol.
Bluetooth synchronizaˇcn´ı br´ana se spouˇst´ı na adrese btgoep://localhost:000000010000100080000002EE000002. Obsluha ud´alost´ı je implementov´ana ve tˇr´ıdˇe SyncMLObexRequestHandler. V prototypu r´amce jsem implementoval metody pro obsluhu tˇechto ud´alost´ı: onPut Zpracov´an´ı dat odeslanych uˇzivatelem. Z objektu pˇredan´eho ob´ jektu Operation se nejprve z´ıskaj´ı hlaviˇcky zpr´avy a pot´e samotny´ obsah zpr´avy ze vstupn´ıho datov´eho proudu. Data se odes´ılaj´ı d´ale pˇres HTTP synchornizaˇcn´ımu serveru a vysledek se ukl´ad´a pro situ´ aci, kdy uˇzivatel poˇzaduje odpovˇed’. Pˇr´ımo se vrac´ı pouze stavovy´ ´ V pˇr´ıpadˇe chyby hodnota OBEX HTTP BAD REQUEST, jinak kod. OBEX HTTP OK. onGet Obsluha ud´alosti, kdy uˇzivatel poˇzaduje odpovˇed’ na zpr´avu zaslanou pˇres PUT operaci. Vytv´arˇ ej´ı se nejprve hlaviˇcky odpovˇedi. ´ esˇ n´eho odesl´an´ı se pˇres vystupn´ V pˇr´ıpadˇe jejich uspˇ ı proud vrac´ı i ´ ’ odpovˇed synchronizaˇcn´ıho modulu. Pokud tato odpovˇed’ nen´ı do´ se nastavuje na OBEX HTTP NO CONTENT, stupn´a, stavovy´ kod jinak OBEX HTTP OK. 30
´ 4. I NTEGRACE SYNCHRONIZACE DAT DO WEBOV YCH APLIKAC´I onDelete Nezjistil jsem proˇc, ala nativn´ı synchronizaˇcn´ı klient v operaˇcn´ım syst´emu Symbian Series 60 odes´ılal data i touto cestou. V t´eto metodˇe se nepracuje s datovymi proudy a tak se ´ SyncML zpr´ava objevuje v jedn´e OBEX hlaviˇcce s nestandardn´ı identifikac´ı. Se zpr´avou vˇsak pracuji stejnˇe jako u PUT operace. Pˇred´a se synchronizaˇcn´ımu modulu a odpovˇed’ se uloˇz´ı pro pozdˇejˇs´ı odesl´an´ı klientovi pˇres GET poˇzadavek.
Testov´an´ı Bluetooth modulu Pro klientskou cˇ a´ st testov´an´ı Bluetooth modulu jsem pouˇzil, jak jsem zm´ınil v odstavci vyˇ ´ se, synchronizaˇcn´ıho klienta v operaˇcn´ım systemu Symbian Series 60. Ten je standardn´ı souˇca´ st´ı vybavy ´ telefonu a nen´ı nutn´e ho instalovat dodateˇcnˇe. Bˇezˇ nˇe se pouˇz´ıv´a ke komuˇ nikaci se softwarovym data a ´ bal´ıkem Nokia PC Suite, ktery´ zpˇr´ıstupnuje obsluhu telefonu z poˇc´ıtaˇce. S daty telefonu se tedy nativnˇe pracuje pomoc´ı synchronizaˇcn´ıho protokolu OMA DS.
4.3.1
Integrace Bluetooth modulu do webov´e str´anky
Pro zaˇclenˇen´ı Bluetooth modulu do webov´e str´anky jsem pouˇzil Deployment Toolkit Script [22]. Je to Javascriptov´a knihovna k dospozici na ofici´aln´ıch str´ankach Javy pro spolehlivˇejˇs´ı pr´aci s applety a JNLP pˇri ´ vkl´ad´an´ı do HTML kodu. Pouˇzit´ı vypad´a n´asledovnˇe: <script src="http://www.java.com/js/deployJava.js"> <script> var attributes = {codebase:’http://localhost/thesis’, code:’cz.muni.fi.xhomolka.sync.gui.swing.SyncGatewayApplet.class’, archive:’thesis-ui-swing.jar’, width:710, height:540} ; var parameters = {fontSize:16} ; var version = ’1.6’ ; deployJava.runApplet(attributes, parameters, ’1.6’); var url = "http://localhost/thesis/launch.jnlp"; deployJava.createWebStartLaunchButton(url, ’1.6.0’);
´ vloˇz´ı do webov´e str´anky pˇr´ısluˇsny´ applet. D´ale vytvoˇr´ı Tento kod tlaˇc´ıtko pro spouˇstˇec´ı aplikace pˇres Java Web Start. 31
´ 4. I NTEGRACE SYNCHRONIZACE DAT DO WEBOV YCH APLIKAC´I
4.4
N´avrh a implementace vzd´alen´eho rozhran´ı
Vzd´alen´e rozhran´ı je implementov´ano jako servlet v tˇr´ıdˇe SyncServlet, ktery´ pˇrij´ım´a zpr´avy odeslan´e metou POST. Jako vystupn´ ı bod navrho´ van´eho r´amce slouˇz´ı i pro lok´aln´ıho rozhran´ı tento servlet vzd´alen´eho rozhran´ı. Pˇrenos zpr´av do synchronizaˇcn´ıho serveru zajiˇst’uje samostatny´ modul. Ten se implementuje jako rozˇs´ırˇ en´ı vzd´alen´eho rozhran´ı. Pro potˇreby t´eto pr´ace jsem vytvoˇrit napojen´ı synchronizaˇcn´ıho serveru Funambol. Na opaˇcnou stranu synchronizace jsem um´ıstil synchronizaˇcn´ı server Funambol. Stoj´ı za n´ım stejnojmenn´a firma, kter´a je perfektn´ı uk´azkou toho, ´ esˇ n´e muˇ ˚ ze byt jak uspˇ ´ podnik´an´ı zaloˇzen´e na open-source modelu. Ko´ cely, munitn´ı verze jejich softwaru je volnˇe k dispozici i pro komerˇcn´ı uˇ pokud se jedn´a tak´e o svobodny´ software. Jinak nab´ız´ı komerˇcn´ı verzi s rozˇs´ırˇ enymi funkcemi a podporou, kter´a je vhodn´a i pro nasazen´ı do ´ prostˇred´ı s velkym ´ zat´ızˇ en´ım.
4.5
Pozn´amky k implementaci
4.5.1
Pˇrevod binarn´ıho XML
´ Pˇrevod z bin´arn´ıho na cˇ ist´e XML a zpˇet se jev´ı jako ide´aln´ı ukol pro malou a ovˇerˇ enou knihovnu. Situace vˇsak tak ide´aln´ı nen´ı. Existuje knihovna wbxml4j s posledn´ı verz´ı z roku 1991 a kXML2 naposledy aktualizovan´a v roce 2005. Vyzkouˇsel jsem aˇz tu druhou jmenovanou. Jedn´a se o parser zaloˇzeny´ na XML Pull API 2 navrˇzeny´ hlavnˇe pro prostˇred´ı s omezenymi zdroji (napˇr. prostˇred´ı J2ME nebo applety). Pr´ace s WBXML zde ´ pˇredstavuje bonusovou vlastnost nav´ıc a pˇri testov´an´ı jsem narazil na ˚ SyncML zpr´avy, kter´e se nepodaˇrilo pˇrev´est bez chyby nebo i vubec. Jak jsem zjistil pozdˇeji, open source synchronizaˇcn´ı server Funambol pouˇz´ıv´a knihovnu kXML prvn´ı rˇ ady m´ısto t´eto z rˇ ady druh´e, avˇsak s cˇ etnymi ´ vlastn´ımi zmˇenami. Jejich verze uˇz fungovala dobˇre, ale vystup ve srovn´an´ı ´ s nativn´ı knihovnou libwbxml neobsahoval deklarace typu SyncML. Do ´ ˚ kodu jsem tedy zaˇclenil pˇrevod obˇema zpusoby. Jako vychoz´ ı pouˇz´ıv´am ´ pˇrevod nativn´ı knihovnou – vol´an´ım programu˚ wbxml2xml a xml2wbxml. 4.5.2
Pr´ace s datovymi proudy ´
Na vˇetˇs´ım poˇctu m´ıst tohoto r´amce se pracuje s datovymi proudy. Proto ´ jsem se rozhodl vyuˇz´ıt knihovnu Commons IO z rodiny Apache Com2.
http://xmlpull.org/
32
´ 4. I NTEGRACE SYNCHRONIZACE DAT DO WEBOV YCH APLIKAC´I ´ pro naˇc´ıt´an´ı a zapisov´an´ı dat proudu˚ se zkracuje na nˇekolik mons. Kod ˚ nejnutnˇejˇs´ıch rˇ a´ dku: InputStream in = new URL("http://localhost").openStream(); try { InputStreamReader inR = new InputStreamReader(in); BufferedReader buf = new BufferedReader(inR); String line; while (( line = buf.readLine()) != null ) { System.out.println(line); } } finally { in.close(); }
´ s pouˇzit´ım tˇr´ıdy IOUtils. Stejny´ kod InputStream in = new URL("http://localhost").openStream(); try { System.out.println(IOUtils.toString(in)); } finally { IOUtils.closeQuietly(in); }
33
Kapitola 5
Z´avˇer C´ılem t´eto pr´ace bylo prozkoumat moˇznosti pˇrenosu dat mezi mobiln´ımi zaˇr´ızen´ımi a webovou aplikac´ı a n´aslednˇe implementovat prototyp r´amce, ktery´ by tento pˇrenos dat realizoval. V prvn´ı cˇ a´ sti jsem proto rozebral tuto problematiku obecnˇe. Nejprve jsem se vˇenoval vyhod´ am a nevyhod´ am, ´ ´ ˚ ych kter´e pˇrin´asˇ´ı synchronizace pro udrˇzov´an´ı v´ıce kopi´ı dat v ruzn ´ zaˇr´ızen´ıch, sluˇzb´ach a syst´emech. D´ale jsem se zaj´ımal o moˇznosti pˇrenosu dat, kterymi dneˇsn´ı mobiln´ı zaˇr´ızen´ı disponuj´ı a mohly by pˇrispˇet k dosaˇzen´ı ´ c´ıle t´eto pr´ace. V prostˇredn´ı cˇ a´ sti se vˇenuji pˇredstaven´ı synchronizaˇcn´ıho protokolu OMA DS. Za dobu sv´e existence se stal mezi otevˇrenymi protokoly de facto ´ standardem. Svou perspektivu dokazuje i d´ıky zastˇreˇsuj´ıc´ı organizaci Open Mobile Alliance, kter´a se svymi v´ıce neˇz 150 cˇ leny zabezpeˇc´ı rozvoj a pod´ ˚ av´a, jakym poru i do budoucna. Ot´azkou vˇsak zust´ ´ smˇerem se bude pr´ace s daty ub´ırat. Rozmach cloud computingu se v nejbliˇzsˇ´ı dobˇe nezastav´ı. ˚ vyznam. ˚ ze I tak ale bude m´ıt synchronizace dat svuj Jej´ı podoba se vˇsak muˇ ´ zmˇenit. OMA DS je robustn´ı protokol pˇripraveny´ na velk´e mnoˇzstv´ı situac´ı. V posledn´ı cˇ a´ sti se zabyv´ n´avrhem a implementac´ı proto´ am analyzou, ´ typu r´amce, ktery´ by umoˇznil integraci synchronizace dat mobiln´ıch zaˇr´ızen´ı do webov´e aplikace. Tento prototyp se mi podaˇrilo vytvoˇrit a pouˇz´ıt k synchronizaci dat telefonu, a to jak pˇres lok´aln´ı Bluetooth rozhran´ı, tak pˇres vzd´alen´e rozhran´ı realizovan´e jako HTTP servlet. R´amec je pˇr´ıpraveny´ k rozˇsiˇrov´an´ı o dalˇs´ı synchronizaˇcn´ı moduly a nen´ı v´azany´ pouze na aktu´alnˇe pouˇzity´ server Funambol. Pokud by se uvaˇzovalo o rozvoji tohoto r´amce a jeho moˇzn´em nasazen´ı, muselo by tomu pˇredch´azet rozs´ahlejˇs´ı tes˚ ymi ˚ V pˇr´ıpadˇe dalˇs´ıho vyvoje tov´an´ı s ruzn typy synchronizaˇcn´ıch klientu. ´ ´ mˇe napadaj´ı dvˇe vlastnosti, kter´e by vyznamnˇ e pˇrispˇely k pouˇzitelnosti ´ r´amce. Tou prvn´ı je implementace synchronizace zah´ajen´e serverem (Server Alerted Notification). Ta by pak mohla probˇehnout, aniˇz by uˇzivatel spouˇstˇel jak´ekoli akce na mobiln´ım zaˇr´ızen´ı. Druhou vlastnost´ı je sofistikovanˇejˇs´ı integrace do webov´e aplikace vhodn´a pro koncov´e uˇzivatele.
34
Literatura [1] Thompson, Timothy J. - Kumar, C Bala - Kline, Paul J.: Bluetooth Application Programming with the Java APIs. Morgan Kaufmann, 2008. 304 s. ISBN 978-0-12-374342-8 [2] Joshua Bloch: Effective Java 2nd ed. Upper Saddle River, N.J.: AddisonWesley, 2008. xxi, 346 s. ISBN 978-0-321-35668 [3] Hansmann, Uwe - Mett¨al¨a, Riku - Purakayastha, Apratim - Peter, R Synchronizing and Managing Thompson - Phillipe, Kahn: SyncML : Your Mobile Data. 1st edition. Pearson Education, 2002. 320 s. ISBN 978-0-13-009369-1 [4] SyncML White Paper http://www.openmobilealliance.org/ tech/affiliates/syncml/syncml_whitepaper.html [5] Specifikace OMA DS 1.1.2 http://www.openmobilealliance. org/Technical/release_program/ds_v112.aspx [6] Specifikace OMA DS 1.2.2 http://www.openmobilealliance. org/Technical/release_program/ds_v1_2_2.aspx [7] OMA vObject Minimum Interoperability Profile http://www. openmobilealliance.org/Technical/release_program/ vObject_v1_0.aspx [8] Bluetooth Wireless Technology Profiles http://www.bluetooth. com/English/Technology/Works/Pages/Profiles_ Overview.aspx [9] IrMC http://www.traud.de/gsm/IrMC.htm [10] IrDA Library of Specifications and Technical Papershttp://www. irda.org/displaycommon.cfm?an=1\&subarticlenbr=7 [11] Wikipedia – Infrared Data Association http://en.wikipedia. org/wiki/Infrared_Data_Association 35
´ Eˇ R 5. Z AV [12] HotSync tajemstv´ı zbaveny, ´ d´ıl I. a II. http://www.svethardware. cz/art_doc-718AE99E77D4B080C12573C50031E014.html [13] Palm WebOS Sync software/sync.html
http://www.palm.com/us/products/
[14] Exchange ActiveSync Protocol http://www.microsoft.com/ about/legal/en/us/IntellectualProperty/IPLicensing/ Programs/ExchangeActiveSyncProtocol.aspx [15] Mobile Web http://en.wikipedia.org/wiki/Mobile_Web [16] Wikipedia Bluetooth
–
Bluetooth
http://en.wikipedia.org/wiki/
[17] BlueTomorrow – Bluetooth Versions http://www. bluetomorrow.com/about-bluetooth-technology/ general-bluetooth-information/bluetooth-versions. html [18] The Internet Protocol Journal, Volume 11, No. 4 – Wi-Fi, Bluetooth and WiMAX http://www.cisco.com/web/about/ac123/ ac147/archived_issues/ipj_11-4/114_wifi.html [19] Wikipedia – Bluetooth Protocols http://en.wikipedia.org/ wiki/Bluetooth_protocols [20] Wikipedia – Java Web Start http://en.wikipedia.org/wiki/ Java_web_start [21] JSR80 API Specification http://javax-usb.org/jsr80.pdf [22] Java Rich Internet Applications Deployment Advice http: //download.oracle.com/javase/6/docs/technotes/ guides/jweb/deployment_advice.html
36
Dodatek A
Obsah CD Obsah pˇriloˇzen´eho CD: •
´ zdrojov´e kody r´amce;
•
specifikace protokolu˚ OMA DS 1.1.2 a 1.2.2;
•
z´aznam zpr´av synchronizace kontaktu˚ pˇres lok´aln´ı Bluetooth rozhran´ı;
•
text diplomov´e pr´ace.
37