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.