4 :简介
Dm 协议允许管理指令在节点上执行,跟 SyncML 同步协议和 SyncML 表示协议类似都采用的是包的形式。设备的一个节点表示为一组可配置参数,可以这个节点进行读和设定参数的键、值操作,而终端的应用软件另外一个节点可能是的正在可运行环境中(意思是不会影响到别的节点的功能),对这类型的节点操作可以对软件的一部分功能进行下载、升级或者卸载 .
SyncML DM 这些指令代表这些操作,在 SymcML 表现协议和 SyncML 表现协议 DM 的用户手册中有描述。这些指令和消息的结构等同于 SyncML 数据同步协议,并且管理协议的 DTM 就是来源于 SyncML 数据同步协议的 DTD
5 :节点处理
每一个节点的路径就是设备的唯一统一资源标识,这些标识必须遵循这样一些指定的需求: SyncML DM 树和描述加以限制和指定
每一个节点都有一个可以决定什么样的管理内容可以用来设置或者读的类型,在节点上操作需要实现定义这个类型的值,当节点被读的时候,这个类型的值将被返回。
举例说明,有的节点只是一个简单文本类型,需要设置,而有的节点是 WAP Provisioning document MIME 的复杂类型,甚至其他节点可能象 WAP 设置或者软件安装这样更复杂的值
SyncML DM 协议的指令的 target 和 souce 由 目标和来源 元素分别指定 target 是接纳着, source 是来源,这些过程出现的异常都会在管理命令需求中的异常中会被提及
6 :包中的多消息
6 . 1 描述
DM 管理协议中中提供用多个 MESSAGE 来传输一个包的功能,当一个包非常大的时候,分成多个 MESSAGE 进行传输是非常有必要的,这样的局限是可能由传输协议或者终端的功能限制决定,(分成多个 MESSAGE 就可以解决这个问题)。
DM 管理协议中,包作为一个逻辑组的作用是非常有限的,大部分的限制在 MESSAGE 上,而不是在 PACKAGE 上,举例:一个 COMMAND 必须完全适从一个 MESSAGE 。
为了避免大量客户端而有限的资源,服务器等待从客户端的包的 command 返回一个状态,
如果上一个 COMMAND 没有返回一个状态服务器不允许发送一个新的 COMMAND ,换句话来说,大部分 server 发送到客户端的 COMMAND 都会收到 CMMAND ( package )的返回信息,除非 SERVER 发送一个大的对象或者请求更多的 MESSAGE (用 1222 ALERT )
一个 PACKAGE 包含大对象数据将会被分成很多 MESSAGE 传输,在第七部分会详细描述
说明 server 在处于一下一种包的边界的状态的时候:
1 : server 有一个完全大的包,在这种状况下, server 等待从 client 的 COMMAND 返回状态,由于状态和结果非常大(如 GET COMMAND 的结果), client 将发送多个 MESSAGE 回 server ,然后结束他的回应
2 : server 从 client 接受到一个完整的包, server 将会发送一个新的 COMMAND 给 client
3 : server 发送了包中的一个或多个指令,但是没有发送包中的最后一个指令的时候,只有当 package 中的最后一个指令被发送出去的时候,这次状态才被认为是有效的
由于 SyncML 的传输形式是 request/response 的形式,无论是客户端还是服务器端在传输消息的时候都不应该包含一个开始命令或者一个结束的标志,以便保证 response/request 循环进行下去(言外之意就是有个这个标志就是开始和结束的时候) .
举例:当 server 在 STATE1, 他可能收到客户端的很多 MESSAGE, 这些 MESSAGE 包含了 status 和 result 。 Server 会对任何一个 message 回应,除了对 NEW COMMAND 进行回应外。
Server 对发送的回应在 SyncHdr 中包含了一个 1222 ALERT , client 也指定了,(表示没有结束还有消息)。 STAUTS 必须对 ALERT 的回应进行发送而不是对 RESULT 的回应进行发送
ALERT1222 可以被 ALERT 1223 替换,因为服务器可以主动结束一个过程
下图展示了多个 message 被发送
6 . 2 需求
如果 SyncML package 分成多个 MESSAGE 被传送,最后一个 MESSAGE 必须包含一个 FINAL 的标志,其他么 message 一定不能包含 final 标志。 Final element 由 server 发送而不是由 client 发送,最终停止本次的 PACKAGE 操作。
Server 在每个 MESSAGE 必须发送 FINAL message ,不过在发送大的对象的时候或者发送 NEXT MESSAGE 的相应的时候不会发送
7 :大对象的处理
SyncML dm 协议中,大对象不能完全在一个 Message 中传输,根据 SyncML data 同步协议指定的大对象处理方案可以分成多个 Message 。规则如下:
第一个限制就是支持大对象处理的终端必须显示的之处 DevDetail/LrgObj 的标识为 true
第二个限制是在 server 和 client 传输的 MaxObjSize 有多大,在 SyncML data 同步协议中 MaxObjSize 会在 Meta information 中指定。 DM 协议中被发送着接受的最大对象的大小( MaxObjSize )包含在 syncHdr 中( message 的 META INFO ) ,syncHdr 中指定的 MaxObjSize ,发送者发送的单个对象都不能超过这个大小,如果 MaxObjSize 没有被发送,接收者可以自由发送任何大小的 message 给 server 。
需要指出的是: MaxObjSize 会影响整个 DM session ,如果在随后的 message 中没有对这个值进行重新设置。新的 MaxObjSize 在后来的 message 指定一个可能的原因是 client 的 free memory 大小的依赖,(有东西创建在 MEMORY 的时候或者删除的时候 FREE MOMORY 会发生变化)。
第三个限制:在上一个单元结束前终端会检测新的对象( messge ),终端会回复一个 1225 的 alert