NodeCache 云解决方案提供商
NodeCache 配置服务提供程序用于管理客户端缓存。 此配置服务提供程序仅供企业管理服务器使用。 它提供一个抽象级别,将节点列表的管理与特定后备存储区分离。 它将客户端缓存与服务器端缓存同步。 它还提供用于监视设备端缓存更改的 API。
NodeCache 支持比较哈希值,而不是实际节点值:
<Type xmlns="syncml:metinf">
application/x-nodemon-sha256
</type>
NodeCache 将对值进行哈希处理,并与服务器向下发送的哈希值进行比较。 此过程支持递归检查父节点及其子节点。
以下列表显示了 NodeCache 配置服务提供程序节点:
- ./Device/Vendor/MSFT/NodeCache
- ./User/Vendor/MSFT/NodeCache
Device/{ProviderID}
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/NodeCache/{ProviderID}
每个 DM 服务器的组设置。 每组设置都由服务器的提供程序 ID 进行区分。 它应该是注册过程中通过 w7 APPLICATION 配置服务提供程序 XML 提供的相同 DM 服务器 PROVIDER-ID 值。 在 Windows Phone 8 中,仅支持一个企业管理服务器。 也就是说,NodeCache 下应只有一个 ProviderID 节点。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | node |
访问类型 | 添加、删除、获取 |
动态节点命名 | UniqueName:它应该是注册过程中通过 w7 APPLICATION 配置服务提供程序 XML 提供的同一 DM 服务器 PROVIDER-ID 值。 |
Device/{ProviderID}/CacheVersion
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/NodeCache/{ProviderID}/CacheVersion
表示服务器设置的缓存版本的字符串。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | 添加、获取、替换 |
Device/{ProviderID}/ChangedNodes
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/NodeCache/{ProviderID}/ChangedNodes
其值与 /NodeID/ExpectedValue 中指定的预期值不匹配的节点列表。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
Device/{ProviderID}/ChangedNodesData
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1703 [10.0.15063] 及更高版本 |
./Device/Vendor/MSFT/NodeCache/{ProviderID}/ChangedNodesData
包含值与 /NodeID/ExpectedValue 中指定的预期值不匹配的节点的 XML。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | xml |
访问类型 | “获取” |
Device/{ProviderID}/Nodes
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/NodeCache/{ProviderID}/Nodes
缓存节点的根节点。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | node |
访问类型 | “获取” |
Device/{ProviderID}/Nodes/{NodeID}
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}
有关每个缓存节点的信息存储在服务器指定的 NodeID 下。 此值不得包含逗号。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | node |
访问类型 | 添加、删除、获取 |
动态节点命名 | ServerGeneratedUniqueIdentifier |
Device/{ProviderID}/Nodes/{NodeID}/AutoSetExpectedValue
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1703 [10.0.15063] 及更高版本 |
./Device/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/AutoSetExpectedValue
这会自动将设备上的值设置为与节点的实际值匹配。 节点在 NodeURI 中指定。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | null |
访问类型 | 添加、删除、获取 |
Device/{ProviderID}/Nodes/{NodeID}/ExpectedValue
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/ExpectedValue
这是服务器预期位于设备上的值。 当配置服务提供程序启动会话时,它会根据节点的实际值检查预期值。
支持的值为 string 和 x-nodemon-不存在。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | 添加、删除、获取 |
示例:
下面是将 ExpectedValue 设置为不存在的示例。
<Add>
<CmdID>10</CmdID>
<Item>
<Target>
<LocURI>./Device/Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0002/ExpectedValue</LocURI>
</Target>
<Meta>
<Format xmlns="syncml:metinf">chr</Format>
<Type xmlns="syncml:metinf">application/x-nodemon-nonexistent</Type>
</Meta>
</Item>
</Add>
Device/{ProviderID}/Nodes/{NodeID}/NodeURI
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/NodeURI
此节点的值是完整的 OMA DM 节点 URI。 它可以在设备管理树中指定内部节点或叶节点。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | 添加、删除、获取 |
User/{ProviderID}
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1703 [10.0.15063] 及更高版本 |
./User/Vendor/MSFT/NodeCache/{ProviderID}
每个 DM 服务器的组设置。 每组设置都由服务器的提供程序 ID 进行区分。 它应该是注册过程中通过 w7 APPLICATION 配置服务提供程序 XML 提供的相同 DM 服务器 PROVIDER-ID 值。 在 Windows Phone 8 中,仅支持一个企业管理服务器。 也就是说,NodeCache 下应只有一个 ProviderID 节点。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | node |
访问类型 | 添加、删除、获取 |
动态节点命名 | UniqueName:它应该是注册过程中通过 w7 APPLICATION 配置服务提供程序 XML 提供的同一 DM 服务器 PROVIDER-ID 值。 |
User/{ProviderID}/CacheVersion
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1703 [10.0.15063] 及更高版本 |
./User/Vendor/MSFT/NodeCache/{ProviderID}/CacheVersion
表示服务器设置的缓存版本的字符串。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | 添加、获取、替换 |
User/{ProviderID}/ChangedNodes
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1703 [10.0.15063] 及更高版本 |
./User/Vendor/MSFT/NodeCache/{ProviderID}/ChangedNodes
其值与 /NodeID/ExpectedValue 中指定的预期值不匹配的节点列表。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
User/{ProviderID}/ChangedNodesData
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1703 [10.0.15063] 及更高版本 |
./User/Vendor/MSFT/NodeCache/{ProviderID}/ChangedNodesData
包含值与 /NodeID/ExpectedValue 中指定的预期值不匹配的节点的 XML。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | xml |
访问类型 | “获取” |
User/{ProviderID}/Nodes
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1703 [10.0.15063] 及更高版本 |
./User/Vendor/MSFT/NodeCache/{ProviderID}/Nodes
缓存节点的根节点。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | node |
访问类型 | “获取” |
User/{ProviderID}/Nodes/{NodeID}
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1703 [10.0.15063] 及更高版本 |
./User/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}
有关每个缓存节点的信息存储在服务器指定的 NodeID 下。 此值不得包含逗号。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | node |
访问类型 | 添加、删除、获取 |
动态节点命名 | ServerGeneratedUniqueIdentifier |
User/{ProviderID}/Nodes/{NodeID}/AutoSetExpectedValue
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1703 [10.0.15063] 及更高版本 |
./User/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/AutoSetExpectedValue
这会自动将设备上的值设置为与节点的实际值匹配。 节点在 NodeURI 中指定。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | null |
访问类型 | 添加、删除、获取 |
User/{ProviderID}/Nodes/{NodeID}/ExpectedValue
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1703 [10.0.15063] 及更高版本 |
./User/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/ExpectedValue
这是服务器预期位于设备上的值。 当配置服务提供程序启动会话时,它会根据节点的实际值检查预期值。
支持的值为 string 和 x-nodemon-不存在。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | 添加、删除、获取 |
示例:
下面是将 ExpectedValue 设置为不存在的示例。
<Add>
<CmdID>10</CmdID>
<Item>
<Target>
<LocURI>./User/Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0002/ExpectedValue</LocURI>
</Target>
<Meta>
<Format xmlns="syncml:metinf">chr</Format>
<Type xmlns="syncml:metinf">application/x-nodemon-nonexistent</Type>
</Meta>
</Item>
</Add>
User/{ProviderID}/Nodes/{NodeID}/NodeURI
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1703 [10.0.15063] 及更高版本 |
./User/Vendor/MSFT/NodeCache/{ProviderID}/Nodes/{NodeID}/NodeURI
此节点的值是完整的 OMA DM 节点 URI。 它可以在设备管理树中指定内部节点或叶节点。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | 添加、删除、获取 |
使用 NodeCache 配置服务提供程序的典型 DM 会话
- 设备连接到 DM 服务器。
- 服务器通过为 ./Vendor/MSFT/ NodeCache /ProviderID/CacheVersion LocURI 发出 Get 操作来查询 NodeCache 版本
- 如果设备 CacheVersion 和服务器端缓存因设备崩溃或服务器崩溃) 而 (不同,则服务器可以清除服务器端缓存并转到步骤 5。
- 服务器更新服务器端缓存:
- 发送 ./Vendor/MSFT/NodeCache/ProviderID/ChangedNodes LocURI 的 Get 操作
- 响应是已更改节点 ID 的列表。 列表中的每个 ID 对应于 ./Vendor/MSFT/NodeCache/ProviderID/Nodes 根目录下的节点
- 对于无效节点列表中的每个节点,服务器会发送一个
GET
命令来检索节点的实际值。 例如,GET <NodeURI>
其中NodeURI
是对应于无效缓存节点的完整设备 LocURI。 - 使用从设备接收的实际值更新服务器端缓存中的节点。
- 对于每个更新的节点,都会向设备发送一个
REPLACE
命令来更新设备端缓存:REPLACE ./Vendor/MSFT/NodeCache/ProviderID/Nodes/NodeID/ExpectedValue => ActualValue
- 将创建一个新的缓存版本并将其发送到设备:
REPLACE ./Vendor/MSFT/NodeCache/ProviderID/CacheVersion => new_version
值new_version
由服务器存储。
- 管理服务器从服务器端缓存中检索相应的值:
- 如果服务器端缓存中已存在某个值,请从服务器端缓存中检索该值,而不是转到设备。
- 如果服务器端缓存中不存在值,请执行以下任务:
- 在服务器端缓存中创建具有唯一 NodeID 的新条目。
- 查询设备以检索 URI 的实际值。
- 使用 NodeID 值在 ./Vendor/MSFT/NodeCache/ ProviderID /Nodes 下创建一个新节点。
- 为 ./Vendor/MSFT/NodeCache/ProviderID/Nodes/NodeID 节点设置 NodeURI 和 ExpectedValue。
- 更新 CachedNodes 版本。
OMA DM 示例
创建节点缓存设置:
<Add>
<CmdID>2</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDMSRV1</LocURI>
</Target>
<Meta>
<Format xmlns="syncml:metinf">node</Format>
</Meta>
</Item>
</Add>
<Add>
<CmdID>4</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0001</LocURI>
</Target>
<Meta>
<Format xmlns="syncml:metinf">node</Format>
</Meta>
</Item>
</Add>
<Add>
<CmdID>5</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0001/NodeURI</LocURI>
</Target>
<Data>./Vendor/MSFT/DeviceLock/Provider/MDMSRV1/DevicePasswordEnabled</Data>
</Item>
</Add>
<Add>
<CmdID>6</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0001/ExpectedValue</LocURI>
</Target>
<Data>0</Data>
</Item>
</Add>
<Add>
<CmdID>8</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0002</LocURI>
</Target>
<Meta>
<Format xmlns="syncml:metinf">node</Format>
</Meta>
</Item>
</Add>
<Add>
<CmdID>9</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0002/NodeURI</LocURI>
</Target>
<Data>
./Vendor/MSFT/DeviceLock/Provider/MDMSRV1/AlphanumericDevicePasswordRequired
</Data>
</Item>
</Add>
<Add>
<CmdID>10</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0002/ExpectedValue</LocURI>
</Target>
<Data>0</Data>
</Item>
</Add>
获取提供程序 ID 下的节点MDMSRV1、缓存版本、更改的节点、节点、预期值:
<Get>
<CmdID>18</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDMSRV1</LocURI>
</Target>
</Item>
</Get>
<Get>
<CmdID>19</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/CacheVersion</LocURI>
</Target>
</Item>
</Get>
<Get>
<CmdID>20</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/ChangedNodes</LocURI>
</Target>
</Item>
</Get>
<Get>
<CmdID>21</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0001</LocURI>
</Target>
</Item>
</Get>
<Get>
<CmdID>22</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0001/ExpectedValue</LocURI>
</Target>
</Item>
</Get>
替换缓存版本、节点 URI 和预期值:
<Replace>
<CmdID>2</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/CacheVersion</LocURI>
</Target>
<Data>SCCM0001@!Replace</Data>
</Item>
</Replace>
<Replace>
<CmdID>2</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0001/NodeURI</LocURI>
</Target>
<Data>./Vendor/MSFT/DeviceLock/DeviceValue/AllowSimpleDevicePassword</Data>
</Item>
</Replace>
<Replace>
<CmdID>2</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDMSRV1/Nodes/Node_0001/ExpectedValue</LocURI>
</Target>
<Data>2</Data>
</Item>
</Replace>
对于 AutoSetExpectedValue,使用空数据的替换操作将查询 ./DevDetail/Ext/Microsoft/DeviceName。
<Add>
<CmdID>2001</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDM%20SyncML%20Server/Nodes/20</LocURI>
</Target>
<Meta>
<Format xmlns="syncml:metinf">node</Format>
</Meta>
</Item>
</Add>
<Add>
<CmdID>2002</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDM%20SyncML%20Server/Nodes/20/NodeURI</LocURI>
</Target>
<Data>./DevDetail/Ext/Microsoft/DeviceName</Data>
</Item>
</Add>
<Replace>
<CmdID>2003</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/NodeCache/MDM%20SyncML%20Server/Nodes/20/AutoSetExpectedValue</LocURI>
</Target>
<Data></Data>
</Item>
</Replace>
上的 ./Vendor/MSFT/NodeCache/MDM%20SyncML%20Server/Nodes/20/ExpectedValue
Get 操作返回调用自动集时的设备名称。
对 ChangedNodesData 执行 Get 操作将返回编码的 XML。 下面是一个示例:
<Nodes><Node Id="10" Uri=""></Node><Node Id="20" Uri="./DevDetail/Ext/Microsoft/DeviceName">U09NRU5FV1ZBTFVF</Node></Nodes>
它表示此示例:
<Nodes>
<Node Id="10" Uri=""></Node>
<Node Id="20" Uri="./DevDetail/Ext/Microsoft/DeviceName">U09NRU5FV1ZBTFVF</Node>
</Nodes>
ID 是 MDM 服务器添加的节点 ID,Uri 是节点跟踪的路径。 如果未设置 URI,则节点将始终报告为已更改,如节点 ID 10 中所示。
节点标记内的值是 Uri 返回的实际值,这意味着对于 Node ID 20,DeviceName 与之前的预期不匹配,并且设备名称现在U09NRU5FV1ZBTFVF而不是以前的名称。