NodeCache CSP

NodeCache 組配置服務提供者是用來管理用戶端緩存。 此組定服務提供者僅適用于企業管理伺服器。 它提供一個抽象層級,將節點清單的管理與特定備份存放區脫鉤。 它會同步處理用戶端緩存與伺服器端緩存。 它也提供 API 來監控裝置端緩存變更。

NodeCache 支援比較雜湊值,而不是實際節點值:

<Type xmlns="syncml:metinf">
application/x-nodemon-sha256
</type>

NodeCache 會雜湊值,並與伺服器向下送出雜湊值進行比較。 這支援以遞迴式檢查父節點及其子節點。

下列以樹格式顯示 NodeCache 組式服務提供者。

./User/Vendor/MSFT
NodeCache
----ProviderID
--------CacheVersion
--------ChangedNodes
--------ChangedNodesData
--------Nodes
------------NodeID
----------------NodeURI
----------------ExpectedValue
----------------AutoSetExpectedValue


./Device/Vendor/MSFT
NodeCache
----ProviderID
--------CacheVersion
--------ChangedNodes
--------ChangedNodesData
--------Nodes
------------NodeID
----------------NodeURI
----------------ExpectedValue
----------------AutoSetExpectedValue


./User/Vendor/MSFT
./Device/Vendor/MSFT
NodeCache
----ProviderID
--------CacheVersion
--------ChangedNodes
--------ChangedNodesData
--------Nodes
------------NodeID
----------------NodeURI
----------------ExpectedValue
----------------AutoSetExpectedValue

./Device/Vendor/MSFT 和 ./User/Vendor/MSFT
必要。 NodeCache 物件的根節點。 支援的操作為 [取得]。 此組組服務提供者僅適用于企業裝置管理。 這是預先定義的 MIME 類型,可識別 OMA DM 語法中的此受管理物件。

ProviderID
選用。 每個 DM 伺服器的群組設定。 每一組設定都是以伺服器的提供者識別碼來區分。 它應該是在註冊程式期間透過w7 APPLICATION 組服務提供者 XML 提供的 DM Server PROVIDER-ID值。 僅支援一個企業管理伺服器。 也就是說,在NodeCache下應該只有一個 ProviderID節點。 範圍是動態的。

支援的操作包括取得、新增和刪除。

ProviderID/CacheVersion
選用。 代表伺服器所設定之緩存版本的字元字串。 範圍是動態的。

資料類型為字串。 支援的作業為取得、新增和取代。

ProviderID/ChangedNodes
選用。 節點清單,其值與** / NodeID/ExpectedValue**中指定的預期值不相符。 範圍是動態的。

資料類型為字串。 支援的操作為 [取得]。

ProviderID/ChangedNodesData
Windows 10 (版本 1703) 中的新功能。 選用。 XML 包含的值與 /NodeID/ExpectedValue 中指定的預期值不相符的節點。

支援的操作是取得。

ProviderID/節點
必要。 適用于緩存節點的根節點。 範圍是動態的。

支援的操作為 [取得]。

/節點/ NodeID
選用。 每個緩存節點的資訊會儲存在伺服器指定的 NodeID 下。 此值不得包含逗號。 範圍是動態的。

支援的操作包括取得、新增和刪除。

/NodeID/NodeURI
必要。 此節點的值是完整的 OMA DM 節點 URI。 它可以在裝置管理樹中指定內部節點或葉節點。 範圍是動態的。

資料類型為字串。 支援的操作包括取得、新增和刪除。

/NodeID/ExpectedValue
必要。 這是伺服器預期在裝置上的值。 當組組服務提供者啟動會話時,它會根據節點的實際值檢查預期值。 範圍是動態的。 支援的值為字串和 x-nodemon 非不存在值。

支援的操作包括取得、新增和刪除。

以下是將 ExpectedValue 設定為不存在的範例。

<Add>
   <CmdID>10</CmdID>
   <Item>
      <Target>
         <LocURI>./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>

/NodeID/AutoSetExpectedValue
Windows 10 (版本 1703) 中的新功能。 必要。 這會自動設定裝置上的值,以符合節點的實際值。 節點是在 NodeURI 中指定。

支援的操作包括新增、取得和刪除。

與 NodeCache 組組服務提供者的一般 DM 會話

  1. 裝置會連接到 DM 伺服器。

  2. 伺服器會針對 ./Vendor/MSFT/NodeCache/ProviderID/CacheVersion LocURI 發出 Get 作業,以查詢NodeCache版本

  3. 如果裝置 CacheVersion 和伺服器端快 (因為裝置當機或伺服器當機) ,伺服器可以清除伺服器端快處理,然後前往步驟 5。

  4. 伺服器會補救伺服器端的緩存:

    1. 傳送 ./Vendor/MSFT/NodeCache/ProviderID/ChangedNodes LocURI 的 Get 作業

    2. 回應是已變更節點的 ID 清單。 清單中的每個識別碼都對應到 ./Vendor/MSFT/NodeCache/ProviderID /Noderoot 下的節點

    3. 針對無效節點清單中的每個節點,伺服器會傳送命令以取回 GET 節點的實際值。 例如,其中是對應到不正確緩存節點的完整裝置 GET <NodeURI> NodeURI LocURI。

    4. 伺服器端緩存中的節點會以從裝置收到的實際值進行更新。

    5. 針對每個更新的節點,會向裝置發送命令以 REPLACE 更新裝置端快快:

      REPLACE ./Vendor/MSFT/NodeCache/ProviderID/Nodes/NodeID/ExpectedValue => ActualValue

    6. 新的緩存版本會建立並送往裝置:

      REPLACE ./Vendor/MSFT/NodeCache/ProviderID/CacheVersion => new_version

      new_version值會由伺服器儲存。

  5. 管理伺服器會從伺服器端緩存中取回對應的值:

    1. 如果伺服器端緩存中已存在值,請從伺服器端緩存中取取值,而不是到裝置。

    2. 如果伺服器端緩存中不存在值,請執行下列操作:

      1. 在伺服器端緩存中,使用唯一 的 NodeID 建立新專案。

      2. 查詢裝置以取回 URI 的實際值。

      3. 在 ./Vendor/MSFT/NodeCache/ProviderID /NodeNodeID 值下建立新節點。

      4. 為****./Vendor/MSFT/NodeCache/ProviderID /Node/NodeID節點設定 NodeURI 和ExpectedValue。 ****

      5. 更新 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>

在提供者識別碼 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/Node/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 伺服器新增的節點識別碼,而 Uri 是節點追蹤的路徑。 如果未設定 Uri,節點一定會報告為已變更,如節點識別碼 10 中一樣。

節點標籤內的值是 Uri 所返回的實際值,這表示針對 Node Id 20,DeviceName 與先前預期不相符,而裝置名稱現在是 U09NRU5FV1ZBTFVF,而不是先前的名稱。

相關主題

設定服務提供者參考