小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

嵌入式系統(tǒng)數(shù)據(jù)同步協(xié)議

 pestd 2006-08-04
目前在嵌入式系統(tǒng)與其他通信設(shè)備的數(shù)據(jù)同步方面,業(yè)界還沒有統(tǒng)一的標(biāo)準(zhǔn)、協(xié)議。為了解決這個(gè)問題,IBM、Lotus、Motorola、Nokia、Palm Inc、Psion、Starfish Software已經(jīng)形成了SyncML協(xié)議的標(biāo)準(zhǔn)草案。這個(gè)草案將會(huì)發(fā)展成為一個(gè)通用的可以被用在工業(yè)界的同步協(xié)議。本文簡(jiǎn)單介紹了SyncML協(xié)議與應(yīng)用該協(xié)議的工具包。
目前,移動(dòng)計(jì)算和通信設(shè)備的流行很大部分原因是因?yàn)樗鼈兙哂幸恍┓奖愕墓δ?,比如說在需要時(shí)可以發(fā)送信息給其他用戶,用戶希望隨時(shí)隨地都可以利用掌上設(shè)備訪問信息和執(zhí)行應(yīng)用程序,甚至在飛行中也可以獲得和更新信息。
具有在一臺(tái)掌上設(shè)備運(yùn)行應(yīng)用程序和處理信息、還可以將應(yīng)用程序和信息的更新同步回到辦公室的設(shè)備或者網(wǎng)上的這種能力對(duì)于普遍、離線計(jì)算的效用和流行是一個(gè)關(guān)鍵。
遺憾的是,到今天為止還有兩種方式?jīng)]有實(shí)現(xiàn):
  • 支持任何移動(dòng)設(shè)備同步的網(wǎng)絡(luò)數(shù)據(jù)
  • 支持同步人和網(wǎng)絡(luò)數(shù)據(jù)的移動(dòng)設(shè)備
這樣一來,需要為移動(dòng)設(shè)備增加很多用來同步不同的,盡可能多的數(shù)據(jù)所需要的協(xié)議,這些協(xié)議中的每一個(gè)僅適用于在一個(gè)選定的設(shè)備子集上進(jìn)行選定的傳輸和運(yùn)行,并且可以訪問一部分網(wǎng)絡(luò)數(shù)據(jù),單一同步標(biāo)準(zhǔn)的缺乏為最終用戶、設(shè)備制造商、應(yīng)用程序開發(fā)者和設(shè)備提供商制造了很多問題
SyncML是一個(gè)新的標(biāo)準(zhǔn),為了開發(fā)一個(gè)簡(jiǎn)單、通用的可以用于工業(yè)界方面的數(shù)據(jù)同步協(xié)議,推進(jìn)這個(gè)標(biāo)準(zhǔn)的有IBM、Lotus、Motorola、Nokia、Palm Inc、Psion、Stafish Software。其他的公司、企業(yè)不斷的被補(bǔ)充進(jìn)來。
1.1 通用同步協(xié)議的優(yōu)點(diǎn)
下面讓我們看看適合工業(yè)界范圍的數(shù)據(jù)同步協(xié)議對(duì)于每組角色的有益之處。
1. 最終用戶:今天移動(dòng)設(shè)備用戶可能在每一種設(shè)備上使用了不同的同步產(chǎn)品。這樣就會(huì),有一種程序用來在膝上電腦和網(wǎng)絡(luò)數(shù)據(jù)之間同步文件,另一種用來同步掌上電腦的日歷,還有遠(yuǎn)程email訪問,每一種技術(shù)只能用來同步少數(shù)應(yīng)用程序或者被限制成特殊類型的網(wǎng)絡(luò)連接。這種安排安裝昂貴、配置和操作復(fù)雜、管理昂貴。使用SyncML,用戶可以購買可以使用廣泛的數(shù)據(jù)類型的設(shè)備。
2. 設(shè)備制造商:當(dāng)每一個(gè)設(shè)備制造商想要支持這種能支持所有用戶和服務(wù)提供商進(jìn)行數(shù)據(jù)訪問的技術(shù)。實(shí)際上一個(gè)設(shè)備會(huì)支持一種數(shù)據(jù)同步技術(shù)。這種選擇迫使制造商壓縮存儲(chǔ)空間、內(nèi)存、電源的用量和消耗。設(shè)備制造商會(huì)從通用的協(xié)議中獲得好處,這種通用的協(xié)議使設(shè)備共同使用廣泛的應(yīng)用程序、服務(wù)、網(wǎng)絡(luò)和傳輸技術(shù)。
3. 服務(wù)提供商:正在進(jìn)入快速增長(zhǎng)的應(yīng)用程序舞臺(tái)的服務(wù)提供商非常關(guān)注這樣一個(gè)現(xiàn)象,即同步技術(shù)的增多會(huì)使在有效的成本下擴(kuò)展用戶和支持用戶成為不可能。現(xiàn)在服務(wù)提供商已經(jīng)支持一定范圍的數(shù)據(jù)類型和應(yīng)用中的設(shè)備;還必須安裝、配置多種服務(wù)的基礎(chǔ)結(jié)構(gòu),維護(hù)和支持這些基礎(chǔ)結(jié)構(gòu),并且保證兼容性和性能?,F(xiàn)在可選的是利用單獨(dú)的數(shù)據(jù)連通方案,陷入了避免緊密結(jié)合的私有解決方案。使用SyncML,將會(huì)使提供支持廣闊的應(yīng)用程序的連接成為可能。
4. 應(yīng)用程序開發(fā)者:選擇支持多種同步技術(shù)可以使應(yīng)用程序支持更多的設(shè)備類型 和網(wǎng)絡(luò)數(shù)據(jù),但是這種選擇有一些浪費(fèi)。為了保持向下兼容性開發(fā)者失去了選擇網(wǎng)絡(luò)數(shù)據(jù)倉庫的靈活性,這也會(huì)增加程序開發(fā)的消耗和最終產(chǎn)品的復(fù)雜性。增加了復(fù)雜性的網(wǎng)絡(luò)數(shù)據(jù)倉庫對(duì)服務(wù)供應(yīng)商的安裝和采用是一個(gè)障礙。使用SyncML,可以開發(fā)能連接更多設(shè)備集合和網(wǎng)絡(luò)數(shù)據(jù)的應(yīng)用程序。
1.2 通用同步協(xié)議的描述
通用同步協(xié)議的目標(biāo)是普遍適用,同步兩端可以是任何一種類型、在任一種網(wǎng)絡(luò)上面,這樣會(huì):
  • 同步網(wǎng)絡(luò)數(shù)據(jù)與任一種移動(dòng)設(shè)備
  • 同步移動(dòng)設(shè)備與任一種網(wǎng)絡(luò)數(shù)據(jù)
 
數(shù)據(jù)同步協(xié)議會(huì)同步網(wǎng)絡(luò)數(shù)據(jù)和很多不同的設(shè)備,包括掌上電腦、移動(dòng)電話、自動(dòng)計(jì)算機(jī)和桌面計(jì)算機(jī)。一個(gè)用戶可以在不同的設(shè)備上訪問、操作同樣的數(shù)據(jù)集合,舉個(gè)例子,用戶可以使用掌上設(shè)備或者移動(dòng)電話閱讀電子郵件,還可以維護(hù)一個(gè)一致的、更新的紀(jì)錄。
同樣的,同步兩端可以使用任意類型,這使得移動(dòng)設(shè)備可以支持更多數(shù)據(jù)類型,包括電子郵件、日歷、事務(wù)管理信息、數(shù)據(jù)庫中的企業(yè)數(shù)據(jù)和Web文檔。這種功能使得想要通過電子郵件接收訂單的用戶可以在同樣的設(shè)備上訪問公司的目錄清單系統(tǒng),用來最后決定交付日期。
實(shí)現(xiàn)這個(gè)目標(biāo),協(xié)議需要下列特性:
  • 可以有效的在有線和無線網(wǎng)絡(luò)上運(yùn)作
  • 支持多種傳輸協(xié)議
  • 支持任意的網(wǎng)絡(luò)數(shù)據(jù)
  • 可由多種應(yīng)用程序訪問
  • 考慮到移動(dòng)設(shè)備的資源限制
  • 構(gòu)造于現(xiàn)有的全球互聯(lián)網(wǎng)和Web技術(shù)之上
  • 協(xié)議最小功能就是賦予所有設(shè)備最常用的同步能力
 








 
2.1 綁定Http
2.1.1 Tcp 傳輸服務(wù)
Http通信一般是在 Tcp連接之上的,這個(gè)綁定不是必需的,如果Http基于其它的協(xié)議,那么需求也和下面Tcp定義的相似
2.1.1.1 連接
在Http客戶端連接到Http服務(wù)器端的時(shí)候,SyncML客戶端建立一個(gè)Tcp連接在客戶和服務(wù)器之間通過使用Tcp open操作,在超時(shí)的情況下還需要SyncML客戶端從新建立連接。
2.1.1.2連接選項(xiàng)
關(guān)于端口和協(xié)議版本的一些選項(xiàng)。
2.1.1.3 斷開連接
當(dāng)連接不需要的時(shí)候,SyncML客戶端負(fù)責(zé)使用tcp close操作結(jié)束連接。如果固定連接存在于Http請(qǐng)求中,Http連接的關(guān)閉有Http客戶端來完成,當(dāng)Http客戶端接收到來自服務(wù)器的Http應(yīng)答中指明這是最后一個(gè)SyncML的包。
2.1.1.4 終止
有時(shí)候非正常時(shí)間發(fā)生會(huì)要求應(yīng)用程序中斷Tcp連接,這種情況下,Tcp從新初始化來結(jié)束當(dāng)前連接。
2.1.1.5 超時(shí)
當(dāng)服務(wù)器超時(shí),SyncML客戶端需要重建一個(gè)新的HTTP會(huì)話并且Http服務(wù)器端會(huì)嘗試從新發(fā)送當(dāng)前的SyncML包
2.1.2. SyncML信息交換
一旦Http連接建立,一個(gè)或者多個(gè)SyncML消息會(huì)通過連接由SyncML客戶端傳輸,它們存在于Http客戶端的請(qǐng)求或者Http服務(wù)器端的應(yīng)答中。
在Http請(qǐng)求中POST方法用來傳遞SyncML消息。
2.1.2.1 每包一個(gè)消息
下面是Http請(qǐng)求的部分代碼:
POST ./servlet/syncit HTTP/1.1Host: www.datasync.org Content-Type: application/vnd.syncml-xml; charset="utf-8"Content0Length: 1023 Accept: application/vnd.syncml-xml

 
下面是Http應(yīng)答的部分代碼:
HTTP/1.1 200 ok Content-Type: application/vnd.syncml-wbxml; charset="utf-8"Content-LengthL 1023 --HTTP body---

 
2.1.2.2 一個(gè)包里包含多個(gè)消息
每一個(gè)Sync消息必須使用SyncML MIME媒體類型在HTTP請(qǐng)求或應(yīng)答中傳遞,當(dāng)每個(gè)包里有多個(gè)SyncML消息的時(shí)候,每一個(gè)消息是否在分離的HTTP請(qǐng)求或應(yīng)答傳遞依賴于它是否是SyncML的請(qǐng)求和應(yīng)答??梢愿鶕?jù)每一個(gè)SyncML消息是否有最后一個(gè)元素來判斷這個(gè)包中是否有更多的SyncML消息,如夠有最后一個(gè)元素,那么這消息就是該包中最后一個(gè)消息。
2.1.3 傳輸命令
HTTP使用一系列的命令,包括傳輸方法,頭部信息,請(qǐng)求的頭部信息,應(yīng)答的頭部信息
2.1.3.1 傳輸方法
SyncML客戶端必須使用POST方法或者可以使用CONNECT方法(如果支持的話)來給SyncML服務(wù)器發(fā)送SyncML請(qǐng)求。CONNECT方法用來初始化SSL會(huì)話以驗(yàn)證HTTP客戶和服務(wù)器,其他的方法目前沒有用在SyncML客戶端。
2.2 綁定Obex
2.3 綁定Wsp

 





 
3.1 動(dòng)機(jī):
 
  • 表示協(xié)議并不足夠來實(shí)現(xiàn)信息的交互性
  • 可以在多種設(shè)備之間傳輸多種格式的數(shù)據(jù)
 
3.2 設(shè)計(jì)原則
 
  • 滿足網(wǎng)絡(luò)延遲的需要
  • 滿足各種設(shè)備
  • 滿足現(xiàn)有的各種儲(chǔ)存模式
  • 滿足多種安全需求
  • 多種使用模式
 
3.3 Sync 類型
3.3.1雙向同步
  • 客戶端和服務(wù)器端雙向傳輸信息
  • 在特殊情況下采用Slow sync 作為傳輸模式
3.3.2 客戶端單向同步
  • 只有客戶端提出修改信息
  • 特殊情況下,數(shù)據(jù)可以被輸出
3.3.3 服務(wù)器端單向同步
  • 只有服務(wù)器端提出修改信息
  • 特殊情況下,數(shù)據(jù)可以被輸入
3.3.4 服務(wù)器端通告
  • 同步要求從服務(wù)器端傳到客戶端
3.3.5 雙向同步例子
  • 日歷的同步傳輸
  • 客戶端的認(rèn)證請(qǐng)求被接受
  • 客戶端傳送兩條信息
  • 服務(wù)器端傳送一條信息
  • 服務(wù)器端和客戶端的數(shù)據(jù)一致會(huì)立刻完成
下面是一個(gè)例子,描述同步傳輸?shù)拇篌w過程。同步傳輸有七種方式,下面的例子是雙向傳輸,最復(fù)雜的一種。首先進(jìn)行初始的準(zhǔn)備工作,然后進(jìn)行傳輸,再進(jìn)行確認(rèn)。
3.3.5.1客戶端發(fā)出同步請(qǐng)求

<SyncML>
相當(dāng)于同步的頭文件,基本為固定模式
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>1</SessionID>
<MsgID>1</MsgID>
同步初始化時(shí)數(shù)值為一,相當(dāng)于第幾個(gè)回合
目標(biāo)地址
<Target><LocURI>http://www./sync-server</LocURI></Target>
源地址
<Source><LocURI>IMEI:493005/10/059280/0</LocURI></Source>
認(rèn)證
<Cred> <!--The authentication is optional.-->
認(rèn)證模式
<Meta><Type xmlns=‘syncml:metinf‘>syncml:auth-basic</Type></Meta>
相當(dāng)于密碼
<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>
頭文件結(jié)束
<SyncBody>
喚醒對(duì)方,相當(dāng)于發(fā)出信號(hào)
<Alert>
<CmdID>1</CmdID>
命令I(lǐng)D為1
<Data>200</Data> <!-- 200 = TWO_WAY_ALERT -->
共有七種連接方式,200代表其中一種
<Item>
<Target><LocURI>./contacts/james_bond</LocURI></Target>
進(jìn)行操作的目標(biāo)和地址,相當(dāng)于數(shù)據(jù)庫
<Source><LocURI>./dev-contacts</LocURI></Source>
<Meta>
相當(dāng)于認(rèn)證
<Anchor xmlns=‘syncml:metinf‘>
<Last>234</Last>
<Next>276</Next>
</Anchor>
</Meta>
</Item>
</Alert>
上傳
<Put>
<CmdID>2</CmdID>
<Meta><Type xmlns=‘syncml:metinf‘>application/xml</Type></Meta>
固定的格式
<Item>
<Source><LocURI> devinf10</LocURI></Source>
固定的格式
<Data>
<DevInf xmlns=‘syncml:devinf‘>
相當(dāng)于本地的數(shù)據(jù)描述
<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>Phonebook</DisplayName>
<MaxGUIDSize>32</MaxGUIDSize>GUID
相當(dāng)于索引
<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>
數(shù)據(jù)存儲(chǔ)能力
<DSMem>
<MaxMem>32650</MaxMem>
<MaxID>250</MaxID>
<FreeMem>22430</FreeMem>
<FreeID>122</FreeID>
</DSMem>
</DataStore>
<CTCap>
<CTType>text/x-vcard</CTType>
<PropName>BEGIN</PropName>
<ValEnum>VCARD</ValEnum>
<PropName>END</PropName>
<ValEnum>VCARD</ValEnum>
<PropName>VERSION</PropName>
<ValEnum>2.1</ValEnum>
<PropName>N</PropName>
<PropName>TEL</PropName>
<ParamName>VOICE</ParamName>
<ParamName>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服務(wù)器端發(fā)出同步請(qǐng)求
<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>http://www./sync-server</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>
相當(dāng)于回復(fù)客戶端請(qǐng)求
回復(fù)頭文件
<Status>
<MsgRef>1</MsgRef><CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd>
<TargetRef>http://www./sync-server</TargetRef>
<SourceRef>IMEI:493005/10/059280/0</SourceRef>
212代表正常
<Data>212</Data> <!--Statuscode for OK, authenticated for session-->
</Status>
回復(fù)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代表正常
把認(rèn)證對(duì)上,對(duì)方請(qǐng)求的值
<Item>
<Data><Anchor xmlns=‘syncml:metinf‘><Next>276</Next></Anchor></Data>
</Item>
</Status>
<Status>
回復(fù)Put
<MsgRef>1</MsgRef><CmdRef>2</CmdRef><Cmd>Put</Cmd>
<SourceRef> devinf10</SourceRef>
<Data>200</Data> <!--Statuscode for OK-->
</Status>
返回值,請(qǐng)求對(duì)方
<Results>
<MsgRef>1</MsgRef><CmdRef>3</CmdRef>
<Meta><Type xmlns=‘syncml:metinf‘>application/xml</Type></Meta>
固定格式
<Item>
<Source><LocURI>devinf10</LocURI></Source>
固定格式
<Data>
相當(dāng)于數(shù)據(jù)描述
<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>
存儲(chǔ)能力
<DSMem>
<MaxMem>132650</MaxMem>
<MaxID>1250</MaxID>
<FreeMem>122430</FreeMem>
<FreeID>1122</FreeID>
</DSMem>
</DataStore>
<CTCap>
<CTType>text/x-vcard</CTType>
<PropName>BEGIN</PropName>
<ValEnum>VCARD</ValEnum>
<PropName>END</PropName>
<ValEnum>VCARD</ValEnum>
<PropName>VERSION</PropName>
<ValEnum>2.1</ValEnum>
<PropName>N</PropName>
<PropName>TEL</PropName>
<ParamName>VOICE</ParamName>
<ParamName>CELL</ParamName>
<CTType>text/vcard</CTType>
<PropName>BEGIN</PropName>
<ValEnum>VCARD</ValEnum>
<PropName>END</PropName>
<ValEnum>VCARD</ValEnum>
<PropName>VERSION</PropName>
<ValEnum>3.0</ValEnum>
<PropName>N</PropName>
<PropName>TEL</PropName>
<ParamName>VOICE</ParamName>
<ParamName>FAX</ParamName>
<ParamName>CELL</ParamName>
<CTType>text/vcard</CTType>
<PropName>BEGIN</PropName>
<ValEnum>VCARD</ValEnum>
<PropName>END</PropName>
<ValEnum>VCARD</ValEnum>
<PropName>VERSION</PropName>
<ValEnum>3.0</ValEnum>
<PropName>N</PropName>
<PropName>TEL</PropName>
<ParamName>VOICE</ParamName>
<ParamName>FAX</ParamName>
<ParamName>CELL</ParamName>
</CTCap>
<SyncCap>
<SyncType>01</SyncType>
<SyncType>02</SyncType>
<SyncType>07</SyncType>
</SyncCap>
</DevInf>
</Data>
</Item>
</Results>
進(jìn)行雙向傳輸,喚醒對(duì)方
<Alert>
<CmdID>1</CmdID>
<Data>201</Data> <!-- 201 = TWO_WAY_ALERT -->
<Item>
<Target><LocURI>./dev-contacts</LocURI></Target>
<Source><LocURI>./contacts/james_bond</LocURI></Source>
<Meta>
發(fā)送認(rèn)證
<Anchor xmlns=‘syncml:metinf‘>
<Last>200005021T081812Z </Last>
<Next>200005022T093223Z </Next>
</Anchor>
</Meta>
</Item>
</Alert>
<Final/>
</SyncBody>
</SyncML>
3.3.5.3客戶端提交數(shù)據(jù)
<SyncML>
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>1</SessionID>
<MsgID>2</MsgID>
<Target><LocURI>http://www./sync-server</LocURI></Target>
<Source><LocURI>IMEI:493005/10/059280/0</LocURI></Source>
</SyncHdr>
<SyncBody>
回復(fù)服務(wù)器的請(qǐng)求
<Status>
<MsgRef>1</MsgRef><CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd>
<TargetRef>IMEI:493005/10/059280/0</TargetRef>
<SourceRef> http://www./sync-server </SourceRef>
<Data>212</Data> <!--Statuscode for OK, authenticated for session-->
</Status>
回復(fù)服務(wù)器的請(qǐng)求
<Status>
<MsgRef>1</MsgRef><CmdRef>1</CmdRef><Cmd>Alert</Cmd>
<TargetRef>./dev-contacts</TargetRef>
<SourceRef>./contacts/james_bond</SourceRef>
<Data>200</Data> <!--Statuscode for Success-->
<Item>
<Data>
Anchor回復(fù)對(duì)方請(qǐng)求的<next>值
<Anchor xmlns=‘syncml:metinf‘><Next>200005022T093223Z </Next></Anchor>
</Data>
</Item>
</Status>
<Sync>
<CmdID>1</CmdID>
<Target><LocURI>./contacts/james_bond</LocURI></Target>
<Source><LocURI>./dev-contacts</LocURI></Source>
<Meta>
存儲(chǔ)能力
<DSMem xmlns=‘syncml:devinf‘>
<FreeMem>8100</FreeMem>
<!--Free memory (bytes) in Calendar database on a device -->
<FreeId>81</FreeId>
<!--Number of free records in Calendar database-->
</DSMem>
</Meta>
<Replace>
<CmdID>2</CmdID>
<Meta><Type xmlns=‘syncml:metinf‘>text/x-vcard</Type></Meta>
<Item>
<Source><LocURI>1012</LocURI></Source>
數(shù)據(jù)項(xiàng)地址
<Data><!--The vCard data would be placed here.--></Data>
</Item>
</Replace>
</Sync>
<Final/>
</SyncBody>
</SyncML>
3.3.5.4服務(wù)器端提交數(shù)據(jù)
<SyncML>
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>1</SessionID>
<MsgID>2</MsgID>
<Target><LocURI>IMEI:493005/10/059280/0</LocURI></Target>
<Source><LocURI>http://www./sync-server</LocURI></Source>
</SyncHdr>
<SyncBody>
回復(fù)客戶請(qǐng)求
<Status>
<MsgRef>2</MsgRef><CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd>
<TargetRef>http://www./sync-server</TargetRef>
<SourceRef>IMEI:493005/10/059280/0</SourceRef>
<Data>200</Data>
</Status>
回復(fù)Sync請(qǐng)求
<Status><!--This is a status for the client modifications to the server.-->
<MsgRef>2</MsgRef><CmdRef>1</CmdRef><Cmd>Sync</Cmd>
<TargetRef>./contacts/james_bond</TargetRef>
<SourceRef>./dev-contacts</SourceRef>
<Data>200</Data> <!--Statuscode for Success-->
</Status>
回復(fù)Replace
<Status>
<MsgRef>2</MsgRef><CmdRef>2</CmdRef><Cmd>Replace</Cmd>
<SourceRef>1012</SourceRef>
<Data>200</Data> <!--Statuscode for Success-->
</Status>
發(fā)出同步請(qǐng)求
<Sync>
<CmdID>1</CmdID>
<Target><LocURI>./dev-contacts</LocURI></Target>
<Source><LocURI>./contacts/james_bond</LocURI></Source>
<Replace>
<CmdID>2</CmdID>
<Meta><Type xmlns=‘syncml:metinf‘>text/x-vcard</type></Meta>
<Item>
<Target><LocURI>1023</LocURI></Target>
<Data><!--The vCard data would be placed here.--></Data>
</Item>
</Replace>
<Add>
<CmdID>3</CmdID>
<Meta><Type xmlns=‘syncml:metinf‘>text/x-vcard</type></Meta>
<Item>
<Source><LocURI>10536681</LocURI></Source>
<Data><!--The vCard data would be placed here.--></Data>
</Item>
</Add>
</Sync>
<Final/>
</SyncBody>
</SyncML>
3.3.5.5客戶端顯示數(shù)據(jù)更改情況
<SyncML>
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>1</SessionID>
<MsgID>3</MsgID>
<Target><LocURI>http://www./sync-server</LocURI></Target>
<Source><LocURI>IMEI:493005/10/059280/0</LocURI></Source>
</SyncHdr>
<SyncBody>
回復(fù)同步請(qǐng)求
<Status>
<MsgRef>2</MsgRef><CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd>
<TargetRef>IMEI:493005/10/059280/0</TargetRef>
<SourceRef> http://www./sync-server </SourceRef>
<Data>200</Data>
</Status>
<Status>
<MsgRef>2</MsgRef><CmdRef>1</CmdRef><Cmd>Sync</Cmd>
<TargetRef>./dev-contacts</TargetRef>
<SourceRef>./contacts/james_bond</SourceRef>
<Data>200</Data>
</Status>
<Status>
<MsgRef>2</MsgRef><CmdRef>2</CmdRef><Cmd>Replace</Cmd>
<TargetRef>1023</TargetRef>
<Data>200</Data>
</Status>
<Status>
<MsgRef>2</MsgRef><CmdRef>3</CmdRef><Cmd>Add</Cmd>
<SourceRef>10536681</SourceRef>
<Data>200</Data>
</Status>
<Map>服務(wù)器和客戶端的數(shù)據(jù)保持同步
<CmdID>1</CmdID>
<Target><LocURI>./contacts/james_bond</LocURI></Target>
<Source><LocURI>./dev-contacts</LocURI></Source>
<MapItem>
10536681和1024指的是同一個(gè)數(shù)據(jù)
<Target><LocURI>10536681</LocURI></Target>
<Source><LocURI>1024</LocURI></Source>
</MapItem>
</Map>
<Final/>
</SyncBody>
</SyncML>
3.3.5.6服務(wù)器端確認(rèn)更改
<SyncML>
<SyncHdr>
<VerDTD>1.0</VerDTD>
<VerProto>SyncML/1.0</VerProto>
<SessionID>1</SessionID>
<MsgID>3</MsgID>
<Target><LocURI>IMEI:493005/10/059280/0</LocURI></Target>
<Source><LocURI>http://www./sync-server</LocURI></Source>
</SyncHdr>
<SyncBody>
<Status>
<MsgRef>3</MsgRef><CmdRef>0</CmdRef><Cmd>SyncHdr</Cmd>
<TargetRef>http://www./sync-server</TargetRef>
<SourceRef>IMEI:493005/10/059280/0</SourceRef>
<Data>200</Data>
</Status>
證實(shí)數(shù)據(jù)已經(jīng)做了更改
<Status>
<MsgRef>3</MsgRef><CmdRef>1</CmdRef><Cmd>Map</Cmd>
<TargetRef>./contacts/james_bond </TargetRef>
<SourceRef>./dev-contacts</SourceRef>
<Data>200</Data>
</Status>
<Final/>
</SyncBody>
</SyncML>

 





 
SyncML表示協(xié)議沒有指定數(shù)據(jù)同步協(xié)議、同步引擎。而是指定了一些同步框架、格式使之適應(yīng)不同的數(shù)據(jù)同步模型。SyncML指定了很多同步操作的結(jié)果。
  • 定義了一種格式
  • 注冊(cè)為 MIME(多用途網(wǎng)際郵件擴(kuò)充協(xié)議)媒體格式
  • 定義了獨(dú)立的同步傳輸協(xié)議
  • 可以適合于多種同步傳輸方式的需要
  • 與后臺(tái)數(shù)據(jù)存儲(chǔ)無關(guān)
  • 與同步對(duì)象類型分離
4.1 SyncML 命令
4.1.1 請(qǐng)求的命令
  • Add:允許發(fā)送者將數(shù)據(jù)元素加入到接收者可以識(shí)別的同步數(shù)據(jù)中去,該命令必須在Sync命令中指定。
  • Alert:允許發(fā)送者通知接收者,通知可以作為應(yīng)用程序和應(yīng)用程序之間消息或者是接收用戶接口的顯示消息擴(kuò)展。
  • Atomic:允許發(fā)送者指明一個(gè)命令集合可在帶有語義或者沒有任何語義的執(zhí)行。
  • Copy:允許發(fā)送者復(fù)制可被接受者接收的數(shù)據(jù)。
  • Delete:允許發(fā)送者刪除可被接受者接收的數(shù)據(jù)。Delete命令可以包含一個(gè)請(qǐng)求魏實(shí)現(xiàn)數(shù)據(jù)存檔,刪除可以是回收刪除或者實(shí)際刪除。
  • Exec:發(fā)送者可以要求接收者調(diào)用一個(gè)命名的、可執(zhí)行的程序。
  • Get:發(fā)送者可以從接收者那里申請(qǐng)數(shù)據(jù)元素,這個(gè)命令不能被Sync命令指定。
  • Map:發(fā)送者可以接收者更新標(biāo)識(shí)符在兩個(gè)數(shù)據(jù)集合之間。
  • Put:允許發(fā)送者發(fā)送數(shù)據(jù)給接收者,這個(gè)命令不能被Sync命令指定。
  • Release:允許發(fā)送者對(duì)接收者可以接受的數(shù)據(jù)元素進(jìn)行替換,這個(gè)命令不能被Sync命令指定。
  • Search:允許發(fā)送者進(jìn)行數(shù)據(jù)元素的查詢。
  • Sequence:允許發(fā)送者指定一系列按順序執(zhí)行。
  • Sync:允許發(fā)送者指定包含的命令作為同步兩個(gè)數(shù)據(jù)集合的部分。
4.1.2 應(yīng)答的命令
  • Status:當(dāng)處理前一個(gè)請(qǐng)求發(fā)生錯(cuò)誤的時(shí)候,指明一個(gè)操作的完成狀態(tài)。
  • Results:用來返回Get或者Search命令的數(shù)據(jù)結(jié)果。
4.2 SyncML數(shù)據(jù)格式
SyncMl不但提供了通用的指令集合,還指明了一個(gè)小的通用的數(shù)據(jù)格式。數(shù)據(jù)格式提供了普通的為交換訪問信息的媒體集合。例如通訊錄、日歷和消息。這三種數(shù)據(jù)格式是為了這個(gè)規(guī)范強(qiáng)制的,另外對(duì)于這些一般格式,SyncML允許鑒定其他的登記格式。SyncML利用MiME內(nèi)容類型框架來鑒別數(shù)據(jù)格式。
4.3 使用XML
SyncML消息是使用一種標(biāo)記語言,而SynML表示協(xié)議其實(shí)是一個(gè)XML應(yīng)用。SyncML DTD定義了用來表示SyncML消息的XML文檔。SyncML大量的使用了XML的名空間,名空間必須在第一個(gè)元素類型聲明。在SyncML DTD中的元素類型被定義在一個(gè)URI為“http://www./docs/syncml_represent_v10_20001207.dtd或者URN為syncml:syncml。SyncML DTD也可以被ISO 9070標(biāo)準(zhǔn)公用標(biāo)示符-//SYNCML//DTD SyncML 1.0//EN識(shí)別。任何XML 的標(biāo)準(zhǔn)屬性可以被用在SyncML文檔中。
4.4使用 MIME
互聯(lián)網(wǎng)標(biāo)準(zhǔn)提供了一個(gè)工業(yè)界廣泛接受的機(jī)制來鑒別不同的內(nèi)容種類。SyncML消息用MiME媒體類型來鑒別,SyncML消息的媒體類型被登記在生產(chǎn)廠家列表中。目前有兩個(gè)MIME內(nèi)容可以用在SyncML消息中。applicattion/vnd.syncml+xml的MIME內(nèi)容類型鑒別了SyncML消息基于文本的XML表達(dá)。applicattion/vnd.syncml+wbxml的MIME內(nèi)容類型鑒別了SyncML消息基于文本的WBXML二進(jìn)制表達(dá)。
4.5 SyncML標(biāo)記語言描述
4.5.1 一般使用元素
Archive、Chal、Cmd、CmdID、CmdRef、Cred、Final、Lang、LocURI、MsgID、MsgRef、NoResp、NoResult、RespURI、SessionID、SftDel、Source、SourceRef、Target、TargetRef、VerDTD、VerProto。
4.5.2 消息容器元素
SyncML、SyncHdr、SyncBody。
4.5.3 數(shù)據(jù)描述元素
Data、Item、Meta。
4.5.4 協(xié)議管理元素
Status。
4.5.5 協(xié)議命令元素
Add、Alert、Atomic、Copy、Delete、Exec、Get、Map、MapItem、Put、Replace、Result、Search、Sequence、Sync。
詳細(xì)內(nèi)容請(qǐng)查閱相關(guān)文檔。

 





 
工具包在XML語言和SyncML之間起到橋梁的作用


5.1使用 SyncML 工具包
  • 可以只使用一個(gè)工作空間
  • 可以為一個(gè)應(yīng)用程序分配一個(gè)工作空間
  • 把 in 和 out 分成兩個(gè)工作空間
5.2 使用SyncML工具包的工作空間 當(dāng)同步開始,工作空間被創(chuàng)建:
instanceOptions.encoding = SML_WBXML; instanceOptions.workspaceName ="MyWorkspace"; instanceOptions.workspaceSize =20000; callbacks.addCmdFunc = &handleAddCmdFunc; ...rc = smlInitInstance(callbacks, instanceOptions, &instanceID);

 
5.3 使用SyncML工具包解析器
體積小而且經(jīng)過了優(yōu)化處理(代替 DOM XML 解析器)支持以下格式:
  • XML
  • WBXML
回調(diào)函數(shù)將把解析后的信息送到應(yīng)用程序,開始解析SyncML :
smlProcessData(instanceID, // pass the instance SML_ALL_COMMANDS, // parse entire Msg pUserData); // a void ptr

 
5.4 使用工具包 編碼器
需要編碼的信息要經(jīng)過Toolkit.
pAddStruct->elementType = SML_PE_ADD; pAddStruct->cmdID = ... ;pAddStruct->itemList = ... ; pAddStruct->cred = ... ;smlAddCmd(instanceID, pAddStruct);

 
5.5 內(nèi)容與通信
5.5.1 整合負(fù)載
解析、編碼嵌入式數(shù)據(jù)格式
  • vCard
  • vCalendar
  • ....
數(shù)據(jù)庫接口
  • Lotus Domino
  • Outlook
  • DB2
  • ...
5.5.2 發(fā)布同步信息
傳輸綁定
  • HTTP
  • OBEX (Infrared)
  • WSP
  • Floppy Disk

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多