首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

嵌入式系统数据同步协议 SyncML 同步协议 -1

嵌入式系统数据同步协议 SyncML 同步协议 -1

3 SyncML同步协议3.1 动机:
  • 表示协议并不足够来实现信息的交互性
  • 可以在多种设备之间传输多种格式的数据
3.2 设计原则
  • 满足网络延迟的需要
  • 满足各种设备
  • 满足现有的各种储存模式
  • 满足多种安全需求
  • 多种使用模式
3.3 Sync 类型
3.3.1双向同步
  • 客户端和服务器端双向传输信息
  • 在特殊情况下采用Slow sync 作为传输模式
3.3.2 客户端单向同步
  • 只有客户端提出修改信息
  • 特殊情况下,数据可以被输出
3.3.3 服务器端单向同步
  • 只有服务器端提出修改信息
  • 特殊情况下,数据可以被输入
3.3.4 服务器端通告
  • 同步要求从服务器端传到客户端
3.3.5 双向同步例子
  • 日历的同步传输
  • 客户端的认证请求被接受
  • 客户端传送两条信息
  • 服务器端传送一条信息
  • 服务器端和客户端的数据一致会立刻完成
下面是一个例子,描述同步传输的大体过程。同步传输有七种方式,下面的例子是双向传输,最复杂的一种。首先进行初始的准备工作,然后进行传输,再进行确认。
3.3.5.1客户端发出同步请求

<SyncML>        
相当于同步的头文件,基本为固定模式        
<SyncHdr>        
<VerDTD>1.0</VerDTD>        
<VerProto>SyncML/1.0</VerProto>        
<SessionID>1</SessionID>        
<MsgID>1</MsgID>        
同步初始化时数值为一,相当于第几个回合        
目标地址        
<Target><LocURI>;/LocURI></Target>        
源地址        
<Source><LocURI>IMEI:493005/10/059280/0</LocURI></Source>        
认证        
<Cred> <!--The authentication is optional.-->        
认证模式        
<Meta><Type xmlns='syncml:metinf'>syncml:auth-basic</Type></Meta>        
相当于密码        
<Data>dXNlcmlkOnBhc3N3b3Jk=</Data> <!--base64 formatting of "userid:password"-->        
</Cred>        
<Meta> <!--The Meta is now used to indicate the maximum SyncML message size, which        
client can receive.-->        
<mi:MaxMsgSize xmlns:mi='syncml:metinf'>5000</mi:MaxMsgSize>        
</Meta>        
</SyncHdr>        
头文件结束        
<SyncBody>        
唤醒对方,相当于发出信号        
<Alert>        
<CmdID>1</CmdID>        
命令ID为1        
<Data>200</Data> <!-- 200 = TWO_WAY_ALERT -->        
共有七种连接方式,200代表其中一种        
<Item>        
<Target><LocURI>./contacts/james_bond</LocURI></Target>        
进行操作的目标和地址,相当于数据库        
<Source><LocURI>./dev-contacts</LocURI></Source>        
<Meta>        
相当于认证        
<Anchor xmlns='syncml:metinf'>        
<Last>234</Last>        
<Next>276</Next>        
</Anchor>        
</Meta>        
</Item>        
</Alert>        
上传        
<ut>        
<CmdID>2</CmdID>        
<Meta><Type xmlns='syncml:metinf'>application/xml</Type></Meta>        
固定的格式        
<Item>        
<Source><LocURI> devinf10</LocURI></Source>        
固定的格式        
<Data>        
<DevInf xmlns='syncml:devinf'>        
相当于本地的数据描述        
<Man>Big Factory, Ltd.</Man>        
<Mod>4119</Mod>        
<OEM>Jane's phones</OEM>        
<FwV>2.0e</FwV>        
<SwV>2.0</SwV>        
<HwV>1.22I</HwV>        
<DevId>1218182THD000001-2</DevId>        
<DevTyp>phone</DevTyp>        
<DataStore>        
<SourceRef>./contacts</SourceRef>        
<DisplayName>honebook</DisplayName>        
<MaxGUIDSize>32</MaxGUIDSize>GUID        
相当于索引        
<Rx-Pref>        
<CTType>text/x-vcard </CTType>        
<VerCT>2.1</VerCT>        
</Rx-Pref>        
<Tx-Pref>        
<CTType>text/x-vcard</CTType>        
<VerCT>2.1</VerCT>        
</Tx-Pref>        
数据存储能力        
<DSMem>        
<MaxMem>32650</MaxMem>        
<MaxID>250</MaxID>        
<FreeMem>22430</FreeMem>        
<FreeID>122</FreeID>        
</DSMem>        
</DataStore>        
<CTCap>        
<CTType>text/x-vcard</CTType>        
<ropName>BEGIN</PropName>        
<ValEnum>VCARD</ValEnum>        
<ropName>END</PropName>        
<ValEnum>VCARD</ValEnum>        
<ropName>VERSION</PropName>        
<ValEnum>2.1</ValEnum>        
<ropName>N</PropName>        
<ropName>TEL</PropName>        
<aramName>VOICE</ParamName>        
<aramName>CELL</ParamName>        
</CTCap>        
<SyncCap>        
<SyncType>01</SyncType>        
<SyncType>02</SyncType>        
</SyncCap>        
</DevInf>        
</Data>        
</Item>        
</Put>        
<Get>        
<CmdID>3</CmdID>        
<Meta><Type xmlns='syncml:metinf'>application/xml</Type></Meta>        
<Item>        
<Target><LocURI> devinf10</LocURI></Target>        
</Item>        
</Get>        
<Final/>        
</SyncBody>        
</SyncML>        
3.3.5.2服务器端发出同步请求        
<SyncML>        
头文件        
<SyncHdr>        
<VerDTD>1.0</VerDTD>        
<VerProto>SyncML/1.0</VerProto>        
<SessionID>1</SessionID>        
<MsgID>1</MsgID>        
<Target><LocURI>IMEI:493005/10/059280/0</LocURI></Target>        
<Source><LocURI>;/LocURI></Source>        
<Cred> <!--The authentication is optional.-->        
<Meta><Type xmlns='syncml:metinf'>syncml:auth-basic</Type></Meta>        
<Data>dXNlcmlkOnBhc3N3b3Jk=</Data> <!--base64 formatting of "userid:password"-->        
</Cred>        
</SyncHdr>        

<SyncBody>        
相当于回复客户端请求        
回复头文件        
<Status>        
<MsgRef>1</MsgRef><CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd>        
<TargetRef>;/TargetRef>        
<SourceRef>IMEI:493005/10/059280/0</SourceRef>        
212代表正常        
<Data>212</Data> <!--Statuscode for OK, authenticated for session-->        
</Status>        
回复Alert        
<Status>        
<MsgRef>1</MsgRef><CmdRef>1</CmdRef><Cmd>Alert</Cmd>        
<TargetRef>./contacts/james_bond</TargetRef>        
<SourceRef>./dev-contacts</SourceRef>        
<Data>200</Data> <!--Statuscode for OK-->        
200代表正常        
把认证对上,对方请求的值        
<Item>        
<Data><Anchor xmlns='syncml:metinf'><Next>276</Next></Anchor></Data>        
</Item>        
</Status>        
<Status>        
回复Put        
<MsgRef>1</MsgRef><CmdRef>2</CmdRef><Cmd>ut</Cmd>        
<SourceRef> devinf10</SourceRef>        
<Data>200</Data> <!--Statuscode for OK-->        
</Status>        
返回值,请求对方        
<Results>        
<MsgRef>1</MsgRef><CmdRef>3</CmdRef>        
<Meta><Type xmlns='syncml:metinf'>application/xml</Type></Meta>        
固定格式        
<Item>        
<Source><LocURI>devinf10</LocURI></Source>        
固定格式        
<Data>        
相当于数据描述        
<DevInf xmlns='syncml:devinf'>        
<Man>Small Factory, Ltd.</Man>        
<Mod>Tiny Server</Mod>        
<OEM>Tiny Shop</OEM>        
<DevId>485749KR</DevId>        
<DevTyp>Server</DevTyp>        
<DataStore>        
<SourceRef>./contacts</SourceRef>        
<DisplayName>Addressbook</DisplayName>        
<Rx-Pref>        
<CTType>text/x-vcard </CTType>        
<VerCT>2.1</VerCT>        
</Rx-Pref>        
<Rx>        
<CTType>text/vcard </CTType>        
<VerCT>3.0</VerCT>        
</Rx>        
<Tx-Pref>        
<CTType>text/x-vcard</CTType>        
<VerCT>2.1</VerCT>        
</Tx-Pref>        
<Tx>        
<CTType>text/vcard</CTType>        
<VerCT>3.0</VerCT>        
</Tx>
返回列表