将放置

使用 SyncML 提供的移动设备

Ramon Arjona

内容

什么是 OMA?
用于同步的 SyncML: XML
SyncML 元素
SyncBody 元素
但是,等待 !还有更多 !
将 SyncML 放到工作

4 月 2008 中发出的MSDN 杂志 》Mike Calligaro 编写有关的多少位置栏置备 Windows Mobile 设备使用 XML 文件和 DMProcessConfigXML API. XML 文件 Mike 使用基于打开 Mobile 联盟 (OMA) 客户端提供以前称为无线应用协议 (WAP) 的设备管理,(OMA CP) 标准。

OMA CP 正常管理少数的设备,其列中 Mike 次推到多个设备的设置信息的方法的建议。但如果您需要的设备提供千位系统化方式长的时间内?并且如果您需要知道哪些软件和注册表设置已在设备上设置,您正在尝试管理?

这种大型的协调提供是工作的 OMA 设备管理 (OMA DM) 的域。OMA DM 协议为基础的 XML 调用 SyncML 的方言,并可以将来提供和管理在企业方案中的设备。本专栏将讨论使用 OMA DM 协议在 SyncML 文档的结构。我将介绍包括远程擦除设备在 Windows Mobile 平台的特定用法方案。我还将演示如何设置在浏览器收藏夹 OMA DM 结合使用 XML 从 Mike 的列在设备上。

什么是 OMA?

OMA一个行业组包含超过 200 个的移动运营商、 移动设备制造商,和软件供应商 (包括 Microsoft)。OMA 形成 2002 创建管理 burgeoning 的数目,未出现在包括 WAP、 设备管理和 SyncML 在市场上的移动设备标准的单个组中。此多重性组的已创建工时,的复制,因此关心的行业合作伙伴一起获得和单个伞组下一起引入这些重要的方案的所有。

OMA 标准有助于使其更易于使用移动设备和通过途径 nonproprietary 技术之间进行通信的网络。SyncML 和 OMA DM 是此开放式协议系列的两个方面。它们有一定量的解释,可能发生和每个供应商没有提供其自己的增值扩展一样所有的协议。但使用它们是简便比尝试协商专用的、 特定于供应商的格式更简单。

用于同步的 SyncML: XML

SyncML 是一个基于 XML 的标记,用于大多数协议定义的 OMA 作为基础。SyncML 文档称为一条消息。邮件必须是格式良好的 XML,但不是一定有效的 XML。这就是它必须具有匹配的所有元素的打开和关闭标记,必须有解决所有的属性的引号并否则符合基本的定义的必需调用自身 XML 的任何文档的和格式。

虽然有 SyncML 文档类型定义 (DTD) 没有发件人或收件人验证它的任何要求。原因之一是验证需要额外内存和处理器时间和移动设备往往是短上的这些资源。邮件,反过来,包含执行特定的 OMA 协议的繁重的命令元素。

SyncML 和 OMA DM 是独立的传输。有为 HTTP 和 Exchange (OBEX) 对象定义的传输绑定,,就可能为其他绑定定义。这使得 SyncML 和 OMA DM 用于提供设备无线方式。请使用 SyncML 和 OMA DM 和兼容的设备管理 Server,您可以推配置到设备无需使用内存卡、 不 tethering 该的设备并且而不要求最终用户提供如访问网站的交互。

一个或多个邮件,概念,程序包中包含一个 SyncML。SyncML 程序包包含的所有发件人和接收端之间发送的邮件。

SyncML 元素

SyncML 文档由根 SyncML 元素、 在 SyncHdr 元素所定义的页眉和主体 SyncBody 元素所定义组成。SyncML 文档的根始终是一个 SyncML 元素如下所示:

<SyncML xmlns='SYNCML:SYNCML1.1'>
...
</SyncML>

SyncML 元素包含 SyncHdr 和 SyncBody 子元素。 在 SyncHdr 元素类似 图 1 中的标记。 此简短的标题告诉您接收端将需要知道处理消息的所有内容。

图 1 SyncHdr

<SyncHdr>
  <VerDTD>1.2</VerDTD>
  <VerProto>DM/1.2</VerProto>
  <SessionID>1</SessionID>
  <MsgID>1</MsgID>
  <Target>
    <LocURI>https://mgmt.contoso.com/ </LocURI>
  </Target>
  <Source>
    <LocURI>urn:uuid:6D67E196-D082-4c91-A0DD-DEB3D1D58EB5</LocURI>
    <LocName>MyDeviceName</LocName>
  </Source>
  <Cred>
    <Meta>
      <Format xmlns="syncml:metinf">b64</Format>
      <Type xmlns="syncml:metinf">syncml:auth-md5</Type>
    </Meta>
    <Data>ODZlMDNiYmM1MjA1YTI3MDc5MDk2MDcwYTA4OGM2Zjg=</Data>
  </Cred>
</SyncHdr>

VerDTD 元素表示该邮件符合 1.2 版的 SyncML 表示协议定义 OMA。 VerProto 元素指示类似: 查看 1.2 版的 OMA DM 协议所处理的邮件的。 版本号相同,但两件事是不同。 SyncML 用于包括设备管理协议我将讨论此列中) 的不同 OMA 协议和数据同步协议 (用于 SyncML 最初设计)。

SessionID 元素指示您要查找的 SyncML 会话。 最,此 ID 的值可以是 4 字节长。

该邮件 ID 是在会话中唯一的 ID。 它用于跟踪的发送方和接收方之间的该会话。 接收方答复用结果时, 结果指向在响应中在 msgref 元素包括在邮件 ID 的邮件。

目标元素表示消息的接收方为了将人员。 源元素表示的邮件的发件人为了能。 这些元素两个包含 LocURI 元素包含唯一标识发件人或收件人的字符串。 目标和源 LocURI 必须 URL、 为的 URI 或 URN。 由于管理服务器通常已将具有一个唯一的 DNS 名称,常见的是若要查看该 LocURI 中管理服务器的完全限定的域名,发件人或收件人是管理服务器时。

请注意目标和源元素都不直接与地址或路由邮件。 这些任务将保留在设备管理应用程序和支持的传输协议。

移动设备经常引用引用 GUID 的 URN) 由 RFC 4122 定义) 的唯一引用特定的设备被发送。 它由应用程序将此 GUID 映射回可通过网络访问的地址。 因为 GUID 不是通知到的特定设备与您的立即直观方法,则应用程序已添加到源元素包含 SyncML 消息的设备的名称的一个 LocName 元素。

最后,cred 元素包含标识原始发件人的信息。 它包含一对通知收件人该邮件使用 MD 5 身份验证方案,在该 SyncML 标准定义,以及的安全令牌 Base-64 编码的元元素。 数据元素的元元素同级的包含可用于收件人确认发件人的身份身份验证令牌。

SyncBody 元素

在 SyncBody 元素如 图 2 所示。 请注意此处,Target 元素就像在的 SyncHdr 中由标识 LocURI。 几乎中的所有内容 SyncML 由 LocURI 标识。 在 LocURI 被内置根据到嵌套的树状结构,类似于嵌套的树结构的 XML 文档,但有些便宜于一系列嵌套的 XML 节点的处理。 概念树的根目录由标识在""必须始终指定的字符。

图 2 SyncBody 元素

<SyncBody>
  <Add>
    <CmdID>2</CmdID>
    <Item>
      <Target>
        <LocURI>./Vendor/MSFT/SwMgmt/Download/SetBrowserFavorite/PkgID
        </LocURI>
      </Target>
      <Data>pkg id setbrowserfavorite</Data>
    </Item>
    <Item>
      <Target>
        <LocURI>./Vendor/MSFT/SwMgmt/Download/SetBrowserFavorite/PkgURL
        </LocURI>
      </Target>
      <Data>http://content.contoso.com/download/SetBrowserFavorite.cab
      </Data>
    </Item>
  </Add>
  <Exec>
    <CmdID>3</CmdID>
    <Item>
      <Target>
        <LocURI>./Vendor/MSFT/SwMgmt/Download/SetBrowserFavorite/Operations/DownloadInstall        </LocURI>
      </Target>
    </Item>
  </Exec>
<Final/>
    </SyncBody>

在树包含移动设备包括如它的内存或哪些可执行文件可用来通过 OMA DM 调用的详细信息的信息。 当一个 LocURI 用于指向此树的设备信息时,必须始终是一个完整的 URI。 这就是必须始终指定到特定的叶解决设备根目录中。 OMA DM 规范的这一部分中不允许部分或相对 URI。

请注意我引用这作为"概念的树。 这是因为 SyncML 和 OMA DM 规范不执行强制移动设备上或如何此信息实际保存到后备存储的设备管理服务器上任何实现详细信息。 SyncML 希望像树,但您可以在一个关系数据库、 设备或服务器注册表在一系列的平面的文件中之类的可变内存或其他方式存储它处理数据。 规范是完全无关机制用于实际保存此数据。

根节点下是三个重要的子节点: DevInfo,DevDetail,和供应商。 DevInfo 节点包含信息设备制造商联系语言设置设备的用户界面和设备 ID。 DevDetail 节点包含其他供应商的独立于信息包括其硬件版本和设备支持的 URI 的最大长度的该设备。 大多数其他有趣的详细信息有关该设备是供应商节点下存储的。 规范,实施者必须 Park 到供应商节点下的 OMA DM 协议及其扩展,,这是在将花费大量时间设置,或管理 Windows 移动设备时。

远程擦除

the exec 命令 始终告诉该设备以执行操作,但是一组有限的设备可以 commanded OMA DM 所做的事情。 可以由 OMA DM 触发 Windows Mobile 设备的一个其他操作是远程擦除。 这类似于由 Exchange 提供的 Windows Mobile 客户端擦除功能,真正有用如果您控制设备丢失或被盗。 该命令以擦除设备与 OMA DM 如下所示:

<Exec>
  <CmdID>3</CmdID>
  <Item>
    <Target><LocURI>./Vendor/MSFT/RemoteWipe/doWipe</LocURI></Target>
  </Item>
</Exec>

很可能太擦除与 OMA-CP,设备。 使您可以如果您确实希望,创建 CAB 文件中设置 XML,并将其分发给通过 OMA DM 下载设备。 CAB 文件的内容将然后获取路由到同一个 RemoteWipe CSP 的 OMA DM 的所调用的并将是相同的结果。

前面所示 SyncBody 元素包含一个添加元素。 添加元素告知接收方为设备的信息树添加的节点的系列。 Microsoft 实现的一些调用隐式的 OMA DM 支持添加这意味着如果一个添加命令引用与不在设备上存在的节点的 LocURI 的所有从根节点为叶插入到设备的信息树。 不带该扩展名,节点将不得不在会迅速消耗带宽,在时间被添加到一个在设备树处理器时间和,最终,用户的耐心。

此添加命令将内容添加到软件管理具有 URL content.contoso.com/download/SetBrowserFavorite.cab 在设备上的下载节点。 此 URL 最终,将路由到设备上配置服务提供程序 (CSP) coincidentally 调用下载 CSP,将尝试获取该 URL 所指定的内容。

添加命令后跟一个 exec 命令。 exec 命令告诉该设备以转执行操作。 在这种情况下它告诉该设备以下载和安装程序包 ID SetBrowserFavorite.cab 的。

exec 命令后跟指示这是应应该为该会话在最后一个 SyncML 消息的接收器在最后一个元素。 不在最终的元素将接收器会希望有要遵循的更多 SyncML 邮件。

如果您可以通过将其复制到设备通过 ActiveSync 安装到设备的 CAB 文件,您通常可以安装到使用 OMA DM 设备的 CAB 文件。 必须使用该设备所信任的证书签名 CAB 文件。 如果该文件未经签名与有效证书,CAB 文件的安装将会失败。 这不同于您将看到通过 ActiveSync 安装未签名的 CAB 文件时的行为。 通过 ActiveSync 安装一个未签名的文件时该设备可能提示您确认您需要安装未签名的 CAB 假定在设备上的策略设置为允许此。

OMA DM 协议 Windows Mobile 设备上的不会提示您。 它只失败,通知您失败的消息包含托管程序小程序中的错误代码并将一个相关的错误代码发送回设备管理服务器。 这种设计意义因为 ActiveSync 正在启动您,或希望人您信任,在设备物理您手中。 OMA DM 由远程的代理启动一次完全超出了的控件。

首先,下载 CSP 将从指定的 URL 获取内容。 然后查找 CAB 文件,并如果它是无符号失败。 如果 CAB 文件带符号下载 CSP 解压缩 CAB 文件,并相应地传送文件的内容。 如果 CAB 包含软件,到设备安装了软件。 如果 CAB 包含 OMA CP 置备 XML,如 Mike 在其列的 CAB 文件,然后置备 XML 应用于该设备。 如果 CAB 文件包含电影或在开始屏幕等之类的普通内容然后设备文件系统上存储此内容。

托管程序小程序记录每个尝试,成功或失败,安装到通过 OMA DM 设备的 CAB 文件。 在安装完成后,该设备将发送由 OMA-DM 定义一个代码返回到管理服务器在新的 OMA DM 会话中的标准。

但是,等待 ! 还有更多 !

Windows Mobile 设备响应 SyncML 中指定命令元素的子集。 以下是我还没有讨论的几个命令元素。

该警报的命令允许发件人以通知收件人。 对于是实例的从管理服务器到设备可能会收到通知该设备以唤醒,并启动一个会话。 或警报可能包含应显示给最终用户通过用户界面的信息。

基本的元素用于组合必须全部成功或失败作为一个整体的其他命令。 与一组命令并部分成功会使该设备处于不必要的或未知状态时,这一重要。 除非基本元素中的分组,三个单独添加命令将成功或失败相互独立的和为管理服务器生成三个不同的响应消息。

删除与添加相反。 删除命令设备树中删除一个节点。 如果该节点包含子节点,那些被删除,过。 无法删除某些节点,内置 DevInfo 节点和其子,,并尝试删除其生成一个错误代码。 replace 命令替换设备树中的一个给定的节点。

Get 命令将用于查询设备树的信息,向发件人 SyncML 邮件中返回该信息。 对于是实例将在设备上当前可用存储量将发送以下 Get 命令:

<Get>
  <CmdID>3</CmdID>
  <Item>    
    <Target>
      <LocURI>./Vendor/MSFT/DeviceInformation/TotalStorage</LocURI>
    </Target>
  </Item>
</Get>

结果命令将响应发送获取包含节点的值在获取请求。

序列元素用于组按特定顺序的节点。 如果您希望将处理命令逐个,您必须组合这些序列元素中。 否则不保证的执行顺序。

并最后,状态元素包含返回给定的操作将成功或失败代码。 为 200 状态通常表示成功。

将 SyncML 放到工作

SyncML 开始作为协议不为设备管理而设备同步。 基于 SyncML OMA 同步协议的实现用于通常允许设备同步日历和联系人信息。 SyncML 在基本协议规范地址同步要求,以及用于管理要求。 这意味着该文章 SyncML 表示协议包含 OMA DM 中永远不会使用的元素和永远不会在同步中使用的其他元素。

SyncML 规范的第一次读者会发现自己有点迷惑因为规范尝试解决两个不同的问题域。 虽然有一些重叠同步和管理之间两件事情不明确相同。 非常有用隔离 SyncML 元素中使用的管理概念上与查看协议表示规范时使用的同步。

需要有管理服务器提供通过 OMA DM 设备。 没有可用,包括 Microsoft System Center 移动设备管理器 2008 的多个商业产品。 并且有 noncommercial SyncML 库和实现可用以及。 灵活性允许供应商和实现者意味着使设备和服务器讨论使用 OMA DM 是不始终为简单一个将需。 但提供使用 OMA 标准的不同设备的集成的问题是极好进行互操作使用的不相关的专用通信方法取决 OMA 出现之前移动的市场 hodgepodge 的设备的困难。

将您的问题和提出的意见发送至 goplaces@Microsoft.com.

Ramon Arjona 高级测试主管运行 Microsoft Windows Mobile 团队。