- 浏览: 413769 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
锦毛鼠:
嗯!不错哦,先支持一下!
MySQL-Front 5 注册码 -
bolan392:
我公司现在也想用这个工具,对于商业用户所使用的版本在国内该如何 ...
IP端口扫描工具(Tenable Nessus)的简介 -
exe:
如果目录结果不变,ant其实也不需要怎么修改,直接copy。
Maven 和 ANT 的区别 -
wx3957156:
wx3957156 写道灰常好!灰常好!
利用Java生成静态HMTL页面的方法收集 -
wx3957156:
灰常好!灰常好!
利用Java生成静态HMTL页面的方法收集
SyncML协议简述
目前,移动计算和通信设备的流行很大部分原因是因为它们具有一些方便的功能,比如说在需要时可以发送信息给其他用户,用户希望随时随地都可以利用掌上设备访问信息和执行应用程序,甚至在飞行中也可以获得和更新信息。
具有在一台掌上设备运行应用程序和处理信息、还可以将应用程序和信息的更新同步回到办公室的设备或者网上的这种能力对于普遍、离线计算的效用和流行是一个关键。
遗憾的是,到今天为止还有两种方式没有实现:
- 支持任何移动设备同步的网络数据
- 支持同步任何网络数据的移动设备
这样一来,需要为移动设备增加很多用来同步不同的,尽可能多的数据所需要的协议,这些协议中的每一个仅适用于在一个选定的设备子集上进行选定的传输和运行,并且可以访问一部分网络数据,单一同步标准的缺乏为最终用户、设备制造商、应用程序开发者和设备提供商制造了很多问题
SyncML是一个新的标准,为了开发一个简单、通用的可以用于工业界方面的数据同步协议,推进这个标准的有IBM、Lotus、Motorola、Nokia、Palm Inc、Psion、Stafish Software。其他的公司、企业不断的被补充进来。
1.1 通用同步协议的优点
下面让我们看看适合工业界范围的数据同步协议对于每组角色的有益之处。
1. 最终用户:今天移动设备用户可能在每一种设备上使用了不同的同步产品。这样就会,有一种程序用来在膝上电脑和网络数据之间同步文件,另一种用来同步掌上电 脑的日历,还有远程email访问,每一种技术只能用来同步少数应用程序或者被限制成特殊类型的网络连接。这种安排安装昂贵、配置和操作复杂、管理昂贵。 使用SyncML,用户可以购买可以使用广泛的数据类型的设备。
2. 设备制造商:当每一个设备制造商想要支持这种能支持所有用户和服务提供商进行数据访问的技术。实际上一个设备会支持一种数据同步技术。这种选择迫使制造商 压缩存储空间、内存、电源的用量和消耗。设备制造商会从通用的协议中获得好处,这种通用的协议使设备共同使用广泛的应用程序、服务、网络和传输技术。
3. 服务提供商:正在进入快速增长的应用程序舞台的服务提供商非常关注这样一个现象,即同步技术的增多会使在有效的成本下扩展用户和支持用户成为不可能。现在 服务提供商已经支持一定范围的数据类型和应用中的设备;还必须安装、配置多种服务的基础结构,维护和支持这些基础结构,并且保证兼容性和性能。现在可选的 是利用单独的数据连通方案,陷入了避免紧密结合的私有解决方案。使用SyncML,将会使提供支持广阔的应用程序的连接成为可能。
4. 应用程序开发者:选择支持多种同步技术可以使应用程序支持更多的设备类型 和网络数据,但是这种选择有一些浪费。为了保持向下兼容性开发者失去了选择网络数据仓库的灵活性,这也会增加程序开发的消耗和最终产品的复杂性。增加了复 杂性的网络数据仓库对服务供应商的安装和采用是一个障碍。使用SyncML,可以开发能连接更多设备集合和网络数据的应用程序。
1.2 通用同步协议的描述
通用同步协议的目标是普遍适用,同步两端可以是任何一种类型、在任一种网络上面,这样会:
- 同步网络数据与任一种移动设备
- 同步移动设备与任一种网络数据
数据同步协议会同步网络数据和很多不同的设备,包括掌上电脑、移动电话、自动计算机和桌面计算机。一个用户可以在不同的设备上访问、操作同样的数据集合,举个例子,用户可以使用掌上设备或者移动电话阅读电子邮件,还可以维护一个一致的、更新的纪录。
同样的,同步两端可以使用任意类型,这使得移动设备可以支持更多数据类型,包括电子邮件、日历、事务管理信息、数据库中的企业数据和Web文档。这种功能使得想要通过电子邮件接收订单的用户可以在同样的设备上访问公司的目录清单系统,用来最后决定交付日期。
实现这个目标,协议需要下列特性:
- 可以有效的在有线和无线网络上运作
- 支持多种传输协议
- 支持任意的网络数据
- 可由多种应用程序访问
- 考虑到移动设备的资源限制
- 构造于现有的全球互联网和Web技术之上
- 协议最小功能就是赋予所有设备最常用的同步能力
2 SyncML 底层通讯
2.1 绑定Http
2.1.1 Tcp 传输服务
ttp通信一般是在 Tcp连接之上的,这个绑定不是必需的,如果Http基于其它的协议,那么需求也和下面Tcp定义的相似
2.1.1.1 连接
在Http客户端连接到Http服务器端的时候,SyncML客户端建立一个Tcp连接在客户和服务器之间通过使用Tcp open操作,在超时的情况下还需要SyncML客户端从新建立连接。
2.1.1.2连接选项
关于端口和协议版本的一些选项。
2.1.1.3 断开连接
当连接不需要的时候,SyncML客户端负责使用tcp close操作结束连接。如果固定连接存在于Http请求中,Http连接的关闭有Http客户端来完成,当Http客户端接收到来自服务器的Http应答中指明这是最后一个SyncML的包。
2.1.1.4 终止
有时候非正常时间发生会要求应用程序中断Tcp连接,这种情况下,Tcp从新初始化来结束当前连接。
2.1.1.5 超时
当服务器超时,SyncML客户端需要重建一个新的HTTP会话并且Http服务器端会尝试从新发送当前的SyncML包
2.1.2. SyncML信息交换
一旦Http连接建立,一个或者多个SyncML消息会通过连接由SyncML客户端传输,它们存在于Http客户端的请求或者Http服务器端的应答中。
在Http请求中POST方法用来传递SyncML消息。
2.1.2.1 每包一个消息
下面是Http请求的部分代码:
POST ./servlet/syncit HTTP/1.1
Host: www.datasync.org
Content-Type: application/vnd.syncml-xml; charset="utf-8"
Content0Length: 1023
Accept: application/vnd.syncml-xml
下面是Http应答的部分代码:
HTTP/1.1 200 ok
Content-Type: application/vnd.syncml-wbxml; charset="utf-8"
Content-LengthL 1023
--HTTP body---
2.1.2.2 一个包里包含多个消息
每一个Sync消息必须使用SyncML MIME媒体类型在HTTP请求或应答中传递,当每个包里有多个SyncML消息的时候,每一个消息是否在分离的HTTP请求或应答传递依赖于它是否是 SyncML的请求和应答。可以根据每一个SyncML消息是否有最后一个元素来判断这个包中是否有更多的SyncML消息,如够有最后一个元素,那么这 消息就是该包中最后一个消息。
2.1.3 传输命令
HTTP使用一系列的命令,包括传输方法,头部信息,请求的头部信息,应答的头部信息
2.1.3.1 传输方法
SyncML客户端必须使用POST方法或者可以使用CONNECT方法(如果支持的话)来给SyncML服务器发送SyncML请求。CONNECT方法用来初始化SSL会话以验证HTTP客户和服务器,其他的方法目前没有用在SyncML客户端。
2.2 绑定Obex
2.3 绑定Wsp
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客户端发出同步请求
相当于同步的头文件,基本为固定模式
1.0
SyncML/1.0
1
1
同步初始化时数值为一,相当于第几个回合
目标地址
http://www.syncml.org/sync-server
源地址
认证
<!-- The authentication is optional.-->
认证模式
syncml:auth-basic
相当于密码
dXNlcmlkOnBhc3N3b3Jk= <!-- base64 formatting of "userid:password"-->
<!-- The Meta is now used to indicate the maximum SyncML message size, which<BR>client can receive.-->
5000
头文件结束
唤醒对方,相当于发出信号
1
命令ID为1
200 <!-- 200 = TWO_WAY_ALERT -->
共有七种连接方式,200代表其中一种
./contacts/james_bond
进行操作的目标和地址,相当于数据库
./dev-contacts
相当于认证
234
276
上传
2
application/xml
固定的格式
devinf10
固定的格式
相当于本地的数据描述
Big Factory, Ltd.
4119
Jane's phones
2.0e
2.0
1.22I
1218182THD000001-2
phone
./contacts
Phonebook
32GUID
相当于索引
text/x-vcard
2.1
text/x-vcard
2.1
数据存储能力
32650
250
22430
122
text/x-vcard
BEGIN
VCARD
END
VCARD
VERSION
2.1
N
TEL
VOICE
CELL
01
02
3
application/xml
devinf10
3.3.5.2服务器端发出同步请求
头文件
1.0
SyncML/1.0
1
1
IMEI:493005/10/059280/0
http://www.syncml.org/sync-server
<!-- The authentication is optional.-->
syncml:auth-basic
dXNlcmlkOnBhc3N3b3Jk= <!-- base64 formatting of "userid:password"-->
相当于回复客户端请求
回复头文件
10SyncHdr
http://www.syncml.org/sync-server
IMEI:493005/10/059280/0
212代表正常
212 <!-- Statuscode for OK, authenticated for session-->
回复Alert
11Alert
./contacts/james_bond
./dev-contacts
200 <!-- Statuscode for OK-->
200代表正常
把认证对上,对方请求的值
276
回复Put
12Put
devinf10
200 <!-- Statuscode for OK-->
返回值,请求对方
13
application/xml
固定格式
devinf10
固定格式
相当于数据描述
Small Factory, Ltd.
Tiny Server
Tiny Shop
485749KR
Server
./contacts
Addressbook
text/x-vcard
2.1
text/vcard
3.0
text/x-vcard
2.1
text/vcard
3.0
存储能力
132650
1250
122430
1122
text/x-vcard
BEGIN
VCARD
END
VCARD
VERSION
2.1
N
TEL
VOICE
CELL
text/vcard
BEGIN
VCARD
END
VCARD
VERSION
3.0
N
TEL
VOICE
FAX
CELL
text/vcard
BEGIN
VCARD
END
VCARD
VERSION
3.0
N
TEL
VOICE
FAX
CELL
01
02
07
进行双向传输,唤醒对方
1
201 <!-- 201 = TWO_WAY_ALERT -->
./dev-contacts
./contacts/james_bond
发送认证
200005021T081812Z
200005022T093223Z
3.3.5.3客户端提交数据
1.0
SyncML/1.0
1
2
http://www.syncml.org/sync-server
IMEI:493005/10/059280/0
回复服务器的请求
10SyncHdr
IMEI:493005/10/059280/0
http://www.syncml.org/sync-server
212 <!-- Statuscode for OK, authenticated for session-->
回复服务器的请求
11Alert
./dev-contacts
./contacts/james_bond
200 <!-- Statuscode for Success-->
Anchor回复对方请求的值
200005022T093223Z
1
./contacts/james_bond
./dev-contacts
存储能力
8100
<!-- Free memory (bytes) in Calendar database on a device -->
81
<!-- Number of free records in Calendar database-->
2
text/x-vcard
1012
数据项地址
<!-- The vCard data would be placed here.-->
3.3.5.4服务器端提交数据
1.0
SyncML/1.0
1
2
IMEI:493005/10/059280/0
http://www.syncml.org/sync-server
回复客户请求
20SyncHdr
http://www.syncml.org/sync-server
IMEI:493005/10/059280/0
200
回复Sync请求
<!-- This is a status for the client modifications to the server.-->
21Sync
./contacts/james_bond
./dev-contacts
200 <!-- Statuscode for Success-->
回复Replace
22Replace
1012
200 <!-- Statuscode for Success-->
发出同步请求
1
./dev-contacts
./contacts/james_bond
2
text/x-vcard
1023
<!-- The vCard data would be placed here.-->
3
text/x-vcard
10536681
<!-- The vCard data would be placed here.-->
3.3.5.5客户端显示数据更改情况
1.0
SyncML/1.0
1
3
http://www.syncml.org/sync-server
IMEI:493005/10/059280/0
回复同步请求
20SyncHdr
IMEI:493005/10/059280/0
http://www.syncml.org/sync-server
200
21Sync
./dev-contacts
./contacts/james_bond
200
22Replace
1023
200
23Add
10536681
200
服务器和客户端的数据保持同步
1
./contacts/james_bond
./dev-contacts
10536681和1024指的是同一个数据
10536681
1024
3.3.5.6服务器端确认更改
1.0
SyncML/1.0
1
3
IMEI:493005/10/059280/0
http://www.syncml.org/sync-server
30SyncHdr
http://www.syncml.org/sync-server
IMEI:493005/10/059280/0
200
证实数据已经做了更改
31Map
./contacts/james_bond
./dev-contacts
200
4 SyncML表示协议
SyncML表示协议没有指定数据同步协议、同步引擎。而是指定了一些同步框架、格式使之适应不同的数据同步模型。SyncML指定了很多同步操作的结果。
- 定义了一种格式
- 注册为 MIME(多用途网际邮件扩充协议)媒体格式
- 定义了独立的同步传输协议
- 可以适合于多种同步传输方式的需要
- 与后台数据存储无关
- 与同步对象类型分离
4.1 SyncML 命令
4.1.1 请求的命令
- Add:允许发送者将数据元素加入到接收者可以识别的同步数据中去,该命令必须在Sync命令中指定。
- Alert:允许发送者通知接收者,通知可以作为应用程序和应用程序之间消息或者是接收用户接口的显示消息扩展。
- Atomic:允许发送者指明一个命令集合可在带有语义或者没有任何语义的执行。
- Copy:允许发送者复制可被接受者接收的数据。
- Delete:允许发送者删除可被接受者接收的数据。Delete命令可以包含一个请求魏实现数据存档,删除可以是回收删除或者实际删除。
- Exec:发送者可以要求接收者调用一个命名的、可执行的程序。
- Get:发送者可以从接收者那里申请数据元素,这个命令不能被Sync命令指定。
- Map:发送者可以接收者更新标识符在两个数据集合之间。
- Put:允许发送者发送数据给接收者,这个命令不能被Sync命令指定。
- Release:允许发送者对接收者可以接受的数据元素进行替换,这个命令不能被Sync命令指定。
- Search:允许发送者进行数据元素的查询。
- Sequence:允许发送者指定一系列按顺序执行。
- Sync:允许发送者指定包含的命令作为同步两个数据集合的部分。
4.1.2 应答的命令
- Status:当处理前一个请求发生错误的时候,指明一个操作的完成状态。
- Results:用来返回Get或者Search命令的数据结果。
4.2 SyncML数据格式
SyncMl不但提供了通用的指令集合,还指明了一个小的通用的数据格式。数据格式提供了普通的为交换访问信息的媒体集合。例如通讯录、日历和消 息。这三种数据格式是为了这个规范强制的,另外对于这些一般格式,SyncML允许鉴定其他的登记格式。SyncML利用MiME内容类型框架来鉴别数据 格式。
4.3 使用XMLSyncML消息是使用一种标记语言,而SynML表示协议其实是一个XML应用。SyncML DTD定义了用来表示SyncML消息的XML文档。SyncML大量的使用了XML的名空间,名空间必须在第一个元素类型声明。在SyncML DTD中的元素类型被定义在一个URI为“http://www.syncml.org/docs /syncml_represent_v10_20001207.dtd或者URN为syncml:syncml。SyncML DTD也可以被ISO 9070标准公用标示符-//SYNCML//DTD SyncML 1.0//EN识别。任何XML 的标准属性可以被用在SyncML文档中。
4.4使用 MIME互联网标准提供了一个工业界广泛接受的机制来鉴别不同的内容种类。SyncML消息用MiME媒体类型来鉴别,SyncML消息的媒体类型被登记在 生产厂家列表中。目前有两个MIME内容可以用在SyncML消息中。applicattion/vnd.syncml+xml的MIME内容类型鉴别了 SyncML消息基于文本的XML表达。applicattion/vnd.syncml+wbxml的MIME内容类型鉴别了SyncML消息基于文本 的WBXML二进制表达。
4.5 SyncML标记语言描述
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 数据描述元素
Data、Item、Meta。4.5.4 协议管理元素
Status。4.5.5 协议命令元素
Add、Alert、Atomic、Copy、Delete、Exec、Get、Map、MapItem、Put、Replace、Result、Search、Sequence、Sync。详细内容请查阅相关文档。
5 SyncML 参考工具包
工具包在XML语言和SyncML之间起到桥梁的作用
5.1使用 SyncML 工具包
一个缓冲区,存储SyncML编码 可以选择如下中一种 ...- 可以只使用一个工作空间
- 可以为一个应用程序分配一个工作空间
- 把 in 和 out 分成两个工作空间
5.2 使用SyncML工具包的工作空间 当同步开始,工作空间被创建:
instanceOptions.encoding = SML_WBXML; instanceOptions.workspaceName ="MyWorkspace"; instanceOptions.workspaceSize =20000; callbacks.addCmdFunc = &handleAddCmdFunc; ...rc = smlInitInstance(callbacks, instanceOptions, &instanceID); |
体积小而且经过了优化处理(代替 DOM XML 解析器)支持以下格式:
- XML
- WBXML
回调函数将把解析后的信息送到应用程序,开始解析SyncML :
smlProcessData(instanceID, // pass the instanceSML_ALL_COMMANDS, // parse entire Msg
pUserData); // a void ptr
5.4 使用工具包 编码器
需要编码的信息要经过Toolkit.
pAddStruct->elementType = SML_PE_ADD;pAddStruct->cmdID = ... ;
pAddStruct->itemList = ... ;
pAddStruct->cred = ... ;
smlAddCmd(instanceID, pAddStruct);
5.5 内容与通信
5.5.1 整合负载
解析、编码嵌入式数据格式
- vCard
- vCalendar
- ....
数据库接口
- Lotus Domino
- Outlook
- DB2
- ...
5.5.2 发布同步信息
传输绑定- HTTP
- OBEX (Infrared)
- WSP
- Floppy Disk
发表评论
-
MEID简介 ESN
2009-11-20 11:05 3391MEID简介: M ... -
ESN 号码 电子序列号
2009-11-20 11:02 2213ESN (Electronic Serial Number ... -
MDN号码
2009-11-20 10:39 2189MDN号码 网络上找的: MDN(Mobile D ... -
Short Message Peer to Peer -- 短消息点对点协议
2009-11-19 13:43 1272Short Message Peer to Peer -- ... -
SMPP协议的消息交互
2009-11-19 11:22 30611 SMSC到ESME的消息 ... -
Understanding the IMS Charging Architecture
2009-04-30 07:59 1387Understanding the IMS Chargin ...
相关推荐
### 基于SyncML协议的异构数据源同步方法详解 #### 一、移动计算环境与数据同步需求 随着移动设备和无线通信技术的飞速发展,移动计算环境日益普及,用户能够在任何时间、任何地点访问所需信息,极大地提高了工作...
SyncML协议,全称Synchronization Markup Language,是一种用于设备间数据同步的标准协议,旨在促进不同设备和应用程序之间的数据一致性。该协议定义了客户端和服务端如何通过SyncML表示层协议进行通信,实现数据的...
SyncML协议1.1中文版是一种开放的移动数据同步化标准,旨在打破不同设备、系统和数据类型之间的互不兼容的私有协议壁垒。SyncML倡议由多个行业巨头联合创立,目的是实现无论使用何种终端设备,都能随时随地访问任何...
SyncML协议,全称为Synchronization Markup Language,是一种用于设备间数据同步的标准协议,它使得手机、个人电脑(PC)以及其他智能设备之间的数据交换变得简单而高效。SyncML的设计目标是提供一个开放、标准化的...
手机需要的几个重要的syncml OMA协议
SyncML协议不仅适用于Java平台,还可以与各种操作系统(如iOS、Android、Windows Mobile等)兼容,因此它是跨平台数据同步的理想选择。 通过提供的压缩包文件“syncml”,我们可以期待找到关于SyncML的中文文档和...
SyncML Representation Protocol定义了一种通用的XML语法和语义,它被所有SyncML协议所使用。该文档详细介绍了SyncML Representation Protocol版本1.1的具体规范。 #### 版权声明与历史修订 SyncML协议由多个知名...
移动计算环境下各个同步设备上存储的数据元结构不尽相同,这给移动计算环境下的数据同步带来了...提出了基于SyncML协议的异构数据源同步方法,该方法可以在不改变SyncML协议的基础上方便地完成异构数据源之间的同步。
在SyncML协议中,数据同步过程通过XML格式的报文进行,这些报文包含了同步的元数据、认证信息以及实际的数据内容。协议通常由两个主要部分组成:SyncHdr(同步头)和SyncBody(同步体)。 1. **初始化**: - **...
【Android 平台和SyncML协议在智能农业数据同步中的应用】 随着农业信息化技术的快速发展,移动终端在农业领域的应用越来越广泛。然而,目前农业信息化领域缺乏专门针对数据同步的技术和协议,这限制了农业移动设备...
开发者可以通过研究这些源代码,了解SyncML协议的工作原理,定制自己的同步服务,或者对现有同步方案进行优化。 SyncML协议的优点在于其开放性和兼容性,它简化了跨平台的数据同步,减少了开发成本,同时增强了设备...
SyncML协议由四部分组成:SyncML同步协议、SyncML设备管理协议、SyncML表示协议和SyncML网络绑定协议。其中,同步协议是最为成熟且广泛研究的部分。 #### 三、SyncML框架 SyncML的数据同步框架采用了服务器客户端...
研究者们不断探索SyncML协议的优化和扩展,如提高同步效率、增强安全性、优化冲突处理策略等,以满足日益复杂的移动环境需求。 综上所述,SyncML作为移动数据同步的重要协议,不仅在学术界受到关注,也在实际应用中...
通过对SyncML协议的研究,不仅可以更好地理解其工作机制,还能在此基础上提出更有效的改进措施,从而推动数据同步技术的发展。 通过本文的介绍可以看出,SyncML不仅解决了不同设备间数据同步的兼容性问题,还为移动...
根据提供的文档摘要,SyncML协议定义了一种同步机制,该机制通过消息序列图的形式定义了SyncML客户端与服务器之间的交互方式。它规定了如何使用SyncML表示协议来实现互操作的SyncML客户端和服务器解决方案。此文档为...
OMA-SyncML-DataSyncProtocol-V1_1_2-20030612-A.pdf
**SyncML协议** 定义了如何使用SyncML表示层协议来完成客户端和服务端的操作。它规定了同步过程中客户端和服务端之间的消息交互顺序,并提供了一系列实用的同步示例。 #### 三、SyncML框架 SyncML框架是实现本协议...