SyncML
• Apresentação
– Introdução
• Motivação
• Iniciativa SyncML
–
–
–
–
XML (eXtensible Markup Language)
Protocolos SyncML
Sincronização em duas vias
Conclusões
Introdução
• Necessidade de sincronização
• Vários protocolos no mercado
– Nem todos os servidores de dados podem
sincronizar com qualquer aparelho.
– Nem todo aparelho pode sincronizar com
qualquer servidor de dados
– Inconvenientes para o usuário final
Introdução
• Ericsson, IBM, Lotus, Motorola, Nokia,
Palm Inc., Psion e Starfish Software
– Iniciativa SyncML
• Uma especificação de arquitetura
• Duas especificações de protocolo
• Interface em uma linguagem de programação
comum
Introdução
• Protocolo de sincronização
–
–
–
–
Conectar dados em um repositório
Atualizar dados
Reconectar a rede
Resolver Conflitos
• Um protocolo de sincronização de dados define
fluxo de trabalho para comunicação durante uma
sessão de sincronização de dados em que o aparelho
móvel está conectado à rede.
Introdução
• Benefícios de um protocolo de
sincronização comum
– Usuário final
– Empresas que fabricam os aparelhos
– Desenvolvedores de Aplicações
Introdução
• Características de um protocolo de
sincronização comum
– Operar efetivamente sobre rede fixa e rede
móvel
– Suportar uma variedade de protocolos de
transporte
– Suportar uma variedade de base de dados.
– Habilitar acessa de dados de uma variedade de
aplicações
Introdução
– Ser compatível com as limitações de recursos
de aparelhos móveis
– Ser construído sob uma tecnologia de internet e
web existentes.
eXtensible Markup Language
• XML é uma meta linguagem de marcação
• Fornece um formato padrão para a
descrição de dados estruturados.
• Vantagens
– Declarações mais precisas quanto ao conteúdo
– Resultados mais significativos para consultas
em diferentes plataformas.
eXtensible Markup Language
– A especificação XML descreve um dialeto
SGML extremamente simples.
•
<previsao_tempo>
<data>09 Mai 2000 </data>
<hora>08:00</hora>
<area>
<cidade>Rio de Janeiro </cidade>
<estado>RJ</estado>
<regiao>Sudeste</regiao>
<pais>Brasil</pais>
</area>
<medicao>
<tempo>parcialmente nublado</tempo>
<temperatura>25</temperatura>
<vento>
<direcao>SE</direcao>
<velocidade>6</ velocidade>
</vento>
<umidade>87</umidade>
<visibilidade>10</visibilidade>
</medicao>
</ previsao_tempo>
<DevI nf xml ns=’ syncml : devi nf ’ >
<Ver DTD>1. 1</ Ver DTD>
<Man>Bi g Fact or y, Lt d. </ Man>
<Mod>4119</ Mod>
<OEM>Jane’ s phones</ OEM>
<FwV>2. 0e</ FwV>
<SwV>2. 0</ SwV>
<HwV>1. 22I </ HwV>
<DevI D>1218182THD000001- 2</ DevI D>
<DevTyp>phone</ DevTyp>
</ UTC>
</ Suppor t Lar geObj s>
</ Suppor t Number Of Changes>
<Dat aSt or e>
<Sour ceRef >. / cont act s</ Sour ceRef >
<Di spl ayName>Phonebook</ Di spl ayName>
<MaxGUI DSi ze>32</ MaxGUI DSi ze>
<Rx- Pr ef >
<CTType>t ext / vcar d</ CTType>
<Ver CT>3. 0</ Ver CT>
</ Rx- Pr ef >
<Tx- Pr ef >
<CTType>t ext / vcar d</ CTType>
<Ver CT>3. 0</ Ver CT>
</ Tx- Pr ef >
<Tx>
<CTType>t ext / x- vcar d</ CTType>
<Ver CT>2. 1</ Ver CT>
</ Tx>
<DSMem>
<MaxMem>32650</ MaxMem>
<MaxI D>250</ MaxI D>
</ DSMem>
<SyncCap>
<SyncType>1</ SyncType>
<SyncType>7</ SyncType>
</ SyncCap>
......
</ Dat aSt or e>
</ DevI nf >
Protocolos SyncML
Protocolos SyncML
• Protocolo de representação
– Foca sob a organização dos conteúdos dos dados da
sincronização.
– Define métodos para identificar e nomear arquivos de
maneira única.
– Add, Alert, Atomic, Copy, Delete, Get, ...
• Protocolo de Sincronização
– Foca sob a administração das operações de
sincronização.
– Define fluxo de mensagens entre um SyncML cliente e
um servidor durante a sessão de sincronização de
dados.
Protocolos SyncML
• Protocolo de Representação
– Formato de dados
• MIME media Type
– Capacidade de Troca
• Get, Put
– Restaurando dados
• refresh
– Deleção Forte e suave
• Delete
– Arquivando dados
• Archive
– Substituindo Dados
• Replace
• Protocolo de representação
– Procurando dados
• Search
– Localização
– Endereço de Alvo e Fonte
• LocURI
– URI ou URN, ou ainda um identificador local único
– Display opcional
<SyncML>
<SyncHdr >
<Ver DTD>1. 0</ Ver DTD>
<Ver Pr ot o>SyncML/ 1. 0</ Ver Pr ot o>
<Sessi onI D>1</ Sessi onI D>
<MsgI D>2</ MsgI D>
<Tar get ><LocURI >my_phone</ LocURI ></ Tar get >
<Sour ce>
<LocURI >ht t p: / / www. webyu. com/ ser vl et s/ samsbook</ LocURI >
</ Sour ce>
</ SyncHdr >
<SyncBody>
<Sync>
<CmdI D>1</ CmdI D>
<Tar get ><LocURI >Cal endar DB</ LocURI ></ Tar get >
<Sour ce><LocURI >samsbook. nsf </ LocURI ></ Sour ce>
<! - - Add a new r ecor d t o t he Cal endar DB, r ecor d I D 2021 - - >
<Add>
<CmdI D>4</ CmdI D>
<Met a><mi : Type>t ext / x- vCal endar </ mi : Type></ Met a>
<I t em>
<Sour ce><LocURI >2021</ LocURI ></ Sour ce>
<Dat a><! - - The vCal endar dat a woul d be pl aced her e. - - >
BEGI N: VCALENDAR
VERSI ON: 1. 0
BEGI N: VEVENT
DTSTART: 20010510T063000Z
DTEND: 20010510T073000Z
SUMMARY: SyncML Test Checkpoi nt DB002021
DESCRI PTI ON; ENCODI NG=QUOTED- PRI NTABLE: John =
Smi t h i s st i l l t he pr esent er . =0D=0ASyncML =i s t he t opi c.
CLASS: PUBLI C
CATEGORI ES: APPOI NTMENT
AALARM: 20010510T061500Z
END: VEVENT
END: VCALENDAR
</ Dat a>
</ I t em>
<! - - Del et e a r ecor d, r ecor d I D 2022 - - >
<Del et e>
<CmdI D>5</ CmdI D>
<Met a><mi : Type>t ext / x- vCal endar </ mi : Type></ Met a>
<I t em>
<Sour ce><LocURI >2022</ LocURI ></ Sour ce>
</ I t em>
</ Del et e>
</ Sync>
</ SyncBody>
</ SyncML>
• Protocolo de Sincronização
– Tipos de Sincronização
• Duas vias
• Sincronização Lenta
• Uma via
– Servidor para cliente
– Cliente para servidor
• Revigorante
– Do cliente
– Do servidor
• Alertada pelo servidor.
• Resolução de Conflitos
– São resolvidas por uma máquina de
sincronização no aparelho servidor
– Notifica aos clientes a respeito dos conflitos
resolvidos
– A administração, e como a resolução de conflito
é configurada, não é tratada nos protocolos
SyncML
<St at us>
<MsgRef >1</ MsgRef >
<CmdRef >2</ CmdRef >
<Cmd>Repl ace<Cmd>
<Sour ceRef >1212</ Sour ceRef >
<Dat a>208</ Dat a>
</ St at us>
• Autenticação da sincronização
– Autenticação Básica ou MD5
– Exemplo:
<SyncML>
<SyncHdr >
<Ver DTD>1. 0</ Ver DTD>
<Ver Pr ot o>SyncML/ 1. 0</ Ver Pr ot o>
<Sessi onI D>1</ Sessi onI D>
<MsgI D>1</ MsgI D>
<Tar get ><LocURI >ht t p: / / www. syncml . or g/ sync- ser ver </ LocURI ></ Tar get >
<Sour ce><LocURI >I MEI : 493005100592800</ LocURI ></ Sour ce>
</ SyncHdr >
<SyncBody>
...
</ SyncBody>
</ SyncML>
<SyncML>
<SyncHdr >
<Ver DTD>1. 0</ Ver DTD>
<Ver Pr ot o>SyncML/ 1. 0</ Ver Pr ot o>
<Sessi onI D>1</ Sessi onI D>
<MsgI D>1</ MsgI D>
<Tar get ><LocURI >I MEI : 493005100592800</ LocURI ></ Tar get >
<Sour ce><LocURI >ht t p: / / www. syncml . or g/ sync- ser ver </ LocURI ></ Sour ce>
</ SyncHdr >
<SyncBody>
<St at us>
<MsgRef >1</ MsgRef ><CmdRef >0</ CmdRef ><Cmd>SyncHdr </ Cmd>
<Tar get Ref >ht t p: / / www. syncml . or g/ sync- ser ver </ Tar get Ref >
<Sour ceRef >I MEI : 493005100592800</ Sour ceRef >
<Chal >
<Met a>
<Type xml ns=’ syncml : met i nf ’ >syncml : aut h- basi c</ Type>
<For mat xml ns=’ syncml : met i nf ’ >b64</ For mat >
</ Met a>
</ Chal >
<Dat a>407</ Dat a> <! - - Cr edenci al per di da- - >
</ St at us>
...
</ SyncBody>
</ SyncML>
<SyncML>
<SyncHdr >
<Ver DTD>1. 0</ Ver DTD>
<Ver Pr ot o>SyncML/ 1. 0</ Ver Pr ot o>
<Sessi onI D>1</ Sessi onI D>
<MsgI D>2</ MsgI D>
<Tar get ><LocURI >ht t p: / / www. syncml . or g/ sync- ser ver </ LocURI ></ Tar get >
<Sour ce><LocURI >I MEI : 493005100592800</ LocURI ></ Sour ce>
<Cr ed>
<Met a><Type xml ns=’ syncml : met i nf ’ >syncml : aut h- basi c</ Type></ Met a>
<Dat a>QnJ1Y2UyOk9oQmVoYXZl </ Dat a>
<! - - - base64 f or mat t i ng of " user i d: passwor d" - - >
</ Cr ed>
</ SyncHdr >
<SyncBody>
...
</ SyncBody>
</ SyncML>
<SyncML>
<SyncHdr >
<Ver DTD>1. 0</ Ver DTD>
<Ver Pr ot o>SyncML/ 1. 0</ Ver Pr ot o>
<Sessi onI D>1</ Sessi onI D>
<MsgI D>2</ MsgI D>
<Tar get ><LocURI >I MEI : 493005100592800</ LocURI ></ Tar get >
<Sour ce><LocURI >ht t p: / / www. syncml . or g/ sync- ser ver </ LocURI ></ Sour ce>
</ SyncHdr >
<SyncBody>
<St at us>
<MsgRef >1</ MsgRef ><CmdRef >0</ CmdRef ><Cmd>SyncHdr </ Cmd>
<Tar get Ref >ht t p: / / www. syncml . or g/ sync- ser ver </ Tar get Ref >
<Sour ceRef >I MEI : 493005100592800</ Sour ceRef >
<Dat a>212</ Dat a> <! - - Sessao aut ent i cada- - >
</ St at us>
...
</ SyncBody>
</ SyncML>
• Inicialização da sincronização
– Processar a autenticação entre o cliente e o
servidor
– Indicar que a base de dados tem necessidade de
ser sincronizada e que tipo de sincronização
será usada.
– Habilitar troca de capacidades de serviço do
aparelho.
Sincronização em Duas vias
<SyncML>
<SyncHdr >
<Ver DTD>1. 0</ Ver DTD>
<Ver Pr ot o>SyncML/ 1. 0</ Ver Pr ot o>
<Sessi onI D>1</ Sessi onI D>
<MsgI D>1</ MsgI D>
<Tar get ><LocURI >ht t p: / / www. syncml . or g/ sync- ser ver </ LocURI ></ Tar get >
<Sour ce><LocURI >I MEI : 493005100592800</ LocURI ></ Sour ce>
<Cr ed> <! - - A aut ent i cao eh opci onal . - - >
<Met a><Type xml ns=’ syncml : met i nf ’ >syncml : aut h- basi c</ Type></ Met a>
<Dat a>QnJ1Y2UyOk9oQmVoYXZl </ Dat a>
<! - - base64 f or mat t i ng of " user i d: passwor d" - - >
</ Cr ed>
</ SyncHdr >
<SyncBody>
<Al er t >
<CmdI D>1</ CmdI D>
<Dat a>200</ Dat a> <! - - 200 = TWO_WAY_ALERT - - >
<I t em>
<Tar get ><LocURI >. / cont act s/ j ames_bond</ LocURI ></ Tar get >
<Sour ce><LocURI >. / dev- cont act s</ LocURI ></ Sour ce>
<Met a>
<Anchor xml ns=’ syncml : met i nf ’ >
<Last >234</ Last >
<Next >276</ Next >
</ Anchor >
</ Met a>
</ I t em>
</ Al er t >
<Sync>
<CmdI D>2</ CmdI D>
<Tar get ><LocURI >. / cont act s/ j ames_bond</ LocURI ></ Tar get >
<Sour ce><LocURI >. / dev- cont act s</ LocURI ></ Sour ce>
<Met a>
<Mem xml ns=’ syncml : met i nf ’ >
<Fr eeMem>8100</ Fr eeMem>
<! - - Fr ee memor y ( byt es) i n Cal endar dat abase on a devi ce - - >
<Fr eeI d>81</ Fr eeI d>
<! - - Number of f r ee r ecor ds i n Cal endar dat abase- - >
</ Mem>
</ Met a>
<Repl ace>
<CmdI D>3</ CmdI D>
<Met a><Type xml ns=’ syncml : met i nf ’ >t ext / x- vcar d</ Type></ Met a>
<I t em>
<Sour ce><LocURI >1012</ LocURI ></ Sour ce>
<Dat a><! - - The vCar d dat a woul d be pl aced her e. - - ></ Dat a>
</ I t em>
</ Repl ace>
</ Sync>
<Fi nal / >
</ SyncBody>
</ SyncML>
<SyncML>
<SyncHdr >
<Ver DTD>1. 0</ Ver DTD>
<Ver Pr ot o>SyncML/ 1. 0</ Ver Pr ot o>
<Sessi onI D>1</ Sessi onI D>
<MsgI D>1</ MsgI D>
<Tar get ><LocURI >I MEI : 493005100592800</ LocURI ></ Tar get >
<Sour ce><LocURI >ht t p: / / www. syncml . or g/ sync- ser ver </ LocURI ></ Sour ce>
</ SyncHdr >
<SyncBody>
<St at us>
<MsgRef >1</ MsgRef ><CmdRef >0</ CmdRef ><Cmd>SyncHdr </ Cmd>
<Tar get Ref >ht t p: / / www. syncml . or g/ sync- ser ver </ Tar get Ref >
<Sour ceRef >I MEI : 493005100592800</ Sour ceRef >
<Dat a>212</ Dat a>
<! - - St at uscode f or OK, aut hent i cat ed f or sessi on- - >
</ St at us>
<St at us>
<MsgRef >1</ MsgRef ><CmdRef >1</ CmdRef ><Cmd>Al er t </ Cmd>
<Tar get Ref >. / cont act s/ j ames_bond</ Tar get Ref >
<Sour ceRef >. / dev- cont act s</ Sour ceRef >
<Dat a>200</ Dat a> <! - - St at uscode f or OK- - >
<I t em>
<Dat a><Anchor xml ns=’ syncml : met i nf ’ ><Next >276</ Next ></ Anchor ></ Dat a>
</ I t em>
</ St at us>
<St at us>
<MsgRef >1</ MsgRef ><CmdRef >2</ CmdRef ><Cmd>Sync</ Cmd>
<Tar get Ref >. / cont act s/ j ames_bond</ Tar get Ref >
<Sour ceRef >. / dev- cont act s</ Sour ceRef >
<Dat a>200</ Dat a>
<! - - St at uscode f or Success- - >
</ St at us>
<St at us>
<MsgRef >1</ MsgRef ><CmdRef >3</ CmdRef ><Cmd>Repl ace</ Cmd>
<Sour ceRef >1012</ Sour ceRef >
<Dat a>200</ Dat a> <! - - St at uscode f or Success- - >
</ St at us>
<Al er t >
<CmdI D>1</ CmdI D>
<Dat a>200</ Dat a>
<! - - 200 = TWO_WAY_ALERT - - >
<I t em>
<Tar get ><LocURI >. / dev- cont act s</ LocURI ></ Tar get >
<Sour ce><LocURI >. / cont act s/ j ames_bond</ LocURI ></ Sour ce>
<Met a>
<Anchor xml ns=’ syncml : met i nf ’ >
<Last >200005021T081812Z </ Last >
<Next >200005022T093223Z </ Next >
</ Anchor >
</ Met a>
</ I t em>
</ Al er t >
<Sync>
<CmdI D>2</ CmdI D>
<Tar get ><LocURI >. / dev- cont act s</ LocURI ></ Tar get >
<Sour ce><LocURI >. / cont act s/ j ames_bond</ LocURI ></ Sour ce>
<Repl ace>
<CmdI D>3</ CmdI D>
<Met a><Type xml ns=’ syncml : met i nf ’ >t ext / x- vcar d</ Type></ Met a>
<I t em>
<Tar get ><LocURI >1023</ LocURI ></ Tar get >
<Dat a><! - - The vCar d dat a woul d be pl aced her e. - - ></ Dat a>
</ I t em>
</ Repl ace>
<Add>
<CmdI D>4</ CmdI D>
<Met a><Type xml ns=’ syncml : met i nf ’ >t ext / x- vcar d</ Type></ Met a>
<I t em>
<Sour ce><LocURI >10536681</ LocURI ></ Sour ce>
<Dat a><! - - The vCar d dat a woul d be pl aced her e. - - ></ Dat a>
</ I t em>
</ Add>
</ Sync>
<Fi nal / >
</ SyncBody>
</ SyncML>
<SyncML>
<SyncHdr >
<Ver DTD>1. 0</ Ver DTD>
<Ver Pr ot o>SyncML/ 1. 0</ Ver Pr ot o>
<Sessi onI D>1</ Sessi onI D>
<MsgI D>3</ MsgI D>
<Tar get ><LocURI >ht t p: / / www. syncml . or g/ sync- ser ver </ LocURI ></ Tar get >
<Sour ce><LocURI >I MEI : 493005100592800</ LocURI ></ Sour ce>
</ SyncHdr >
<SyncBody>
<St at us>
<MsgRef >2</ MsgRef ><CmdRef >0</ CmdRef ><Cmd>SyncHdr </ Cmd>
<Tar get Ref >I MEI : 493005100592800</ Tar get Ref >
<Sour ceRef > ht t p: / / www. syncml . or g/ sync- ser ver </ Sour ceRef >
<Dat a>200</ Dat a>
</ St at us>
<St at us>
<MsgRef >2</ MsgRef ><CmdRef >1</ CmdRef ><Cmd>Sync</ Cmd>
<Tar get Ref >. / dev- cont act s</ Tar get Ref >
<Sour ceRef >. / cont act s/ j ames_bond</ Sour ceRef >
<Dat a>200</ Dat a>
</ St at us>
<St at us>
<MsgRef >2</ MsgRef ><CmdRef >2</ CmdRef ><Cmd>Repl ace</ Cmd>
<Tar get Ref >1023</ Tar get Ref >
<Dat a>200</ Dat a>
</ St at us>
<St at us>
<MsgRef >2</ MsgRef ><CmdRef >3</ CmdRef ><Cmd>Add</ Cmd>
<Sour ceRef >10536681</ Sour ceRef >
<Dat a>200</ Dat a>
</ St at us>
<Map>
<CmdI D>1</ CmdI D>
<Tar get ><LocURI >. / cont act s/ j ames_bond</ LocURI ></ Tar get >
<Sour ce><LocURI >. / dev- cont act s</ LocURI ></ Sour ce>
<MapI t em>
<Tar get ><LocURI >10536681</ LocURI ></ Tar get >
<Sour ce><LocURI >1024</ LocURI ></ Sour ce>
</ MapI t em>
</ Map>
<Fi nal / >
</ SyncBody>
</ SyncML>
<SyncML>
<SyncHdr >
<Ver DTD>1. 0</ Ver DTD>
<Ver Pr ot o>SyncML/ 1. 0</ Ver Pr ot o>
<Sessi onI D>1</ Sessi onI D>
<MsgI D>3</ MsgI D>
<Tar get ><LocURI >I MEI : 493005100592800</ LocURI ></ Tar get >
<Sour ce><LocURI >ht t p: / / www. syncml . or g/ sync- ser ver </ LocURI ></ Sour ce>
</ SyncHdr >
<SyncBody>
<St at us>
<MsgRef >3</ MsgRef ><CmdRef >0</ CmdRef ><Cmd>SyncHdr </ Cmd>
<Tar get Ref >ht t p: / / www. syncml . or g/ sync- ser ver </ Tar get Ref >
<Sour ceRef >I MEI : 493005100592800</ Sour ceRef >
<Dat a>200</ Dat a>
</ St at us>
<St at us>
<MsgRef >3</ MsgRef ><CmdRef >1</ CmdRef ><Cmd>Map</ Cmd>
<Tar get Ref >. / cont act s/ j ames_bond </ Tar get Ref >
<Sour ceRef >. / dev- cont act s</ Sour ceRef >
<Dat a>200</ Dat a>
</ St at us>
<Fi nal / >
</ SyncBody>
</ SyncML>
Conclusões
• Especificação aberta para sincronização
universal de dados
– Iniciada no final de 2000
– Possui mais de 650 empresas
• Satisfaz todos pré-requisitos de um
protocolo de sincronização.
Download

SyncML