現在,您已經瞭解 Weave 的主要元件了,接著讓我們來探討一些功能在高階層面的處理方式。
Nest 生態系統中幾乎每天作業的所有功能都會對應至資源和特性,屬於 Weave 結構定義的一部分。Data Management 訊息。
設定檔會管理使用發布訂閱模型的所有特徵要求。這些要求是資料管理設定檔的專屬在這個模式中,發布者會宣傳特性 (待觀看的資料),而訂閱者對所發布特徵的變動 (正在觀看的資料) 做出反應。這項功能稱為即時特徵管理。
資料管理設定檔是 Weave 的主軸,一般稱為 Weave Data Management (WDM)。
要求
是 WDM 即時特性管理的關鍵元素。「要求」是一種特性的「標準要求」,並包含預期回應。標準請求分為三種:
- 通知 標準要求告知訂閱者某項特性特徵,或與該特性有關的特定事件。
- 更新 標準要求以變更特性屬性的狀態。
- 查看 標準要求以查看特性特徵。
通訊協定角色
WDM 通訊協定角色分為兩種:發布商及訂閱者。這些角色是在特性層級指派。
發布者
WDM publisher 角色可產生一或多組結構定義版本的執行個體,並向一或多個訂閱者提供服務,並將結構定義變更的通知傳送至相關的訂閱者。這些通知是通知標準要求。
舉例來說,假設 Trait A 是由 Resource 1 發布,並由 Resource 2 訂閱。如圖 1 所示,如果 Trait A 有所變更:
- WDM 會將來自資源 1 的 notify 要求 傳送給 Trait A 的所有訂閱者,通知變更。
- 每個訂閱者都會據此更新他們的 Trait A 例項。
結構定義中其他特性也發生同樣的情況。舉例來說。
- WDM 會將來自資源 2 的 notify 要求 傳送至 Trait B 的所有訂閱者,通知變更。
- 每個訂閱者都會據此更新他們的 Trait B 例項。
訂閱者
WDM 的 subscriber 角色會查看及使用一或多個由外部發布的結構定義版本執行個體。它可以使用 update 要求來變更已發布結構定義的版本版本,或發出應用程式專屬的指令。
舉例來說,假設資源 2 想要變更由資源 1 所發布的 Trait A。如圖圖 2 所示,如何變更 Trait A:
- WDM 會將 update 要求 從資源 2 傳送至資源 1,以要求對 Trait A 進行變更。
- 資源 1 的「小點 A」已變更。
- WDM 會將來自資源 1 的 notify 要求 傳送給 Trait A 的所有訂閱者,通知變更。
- 每個訂閱者都會據此更新他們的 Trait A 例項。
訂閱者也可以傳送 view 要求
給該特性的發布商,藉此查看該特性的 屬性,並且讓這些特性的例項與發布者同步。訂閱類型
WDM 訂閱分為兩種類型。訂閱是透過訂閱的
要求建立。圖 3 說明建立單向訂閱的基本訊息流程。單程
單向訂閱項目包含訂閱者向一或多個發布商發出的要求。例如從行動裝置擷取住家狀態 (結構) 的行動裝置。
共同
相互訂閱是指資源相互訂閱,而每個資源都同時是發布者和訂閱者。以 Nest Guard 和 Nest Detect 為例,這是 Nest Secure 系統的一部分。雙向訂閱可讓兩種資源管理已發布的結構定義,並以效率更高的方式管理訂閱項目的健康狀態和有效性,且效率比兩種單向訂閱項目更高。
範例
我們來看看一個簡單的範例,說明 WDM 如何使用行動應用程式處理裝置語言代碼的變更。
這個範例中有三個資源和兩項特性,如圖 4 所示:
- 裝置 (訂閱者)
- 服務 (發布商)
- 行動應用程式 (訂閱者)
- 個地區功能特性 個可用的語言代碼屬性
- 語言代碼設定 有效語言代碼屬性
這兩種特性都會由 Service 資源發布,並由裝置和行動應用程式資源訂閱。每個訂閱者都會以單一訂閱項目的形式,在 Service 資源上向特性發布商進行訂閱。
這個範例中的所有資源都屬於同一組的 Weave 布料
。更新流程
假設使用者使用其行動應用程式,透過已連結的行動應用程式將裝置的語言代碼從 en_US
變更為 fr_FR
。如圖 5 所示,WDM 內的更新流程如下:
- 行動應用程式資源 (訂閱者) 向 Service 資源 (發布商) 傳送 update 要求
fr_FR
,這是 Local Capility 特性的「Local 語言代碼」屬性的有效值之一。
,以將 Locale Settings 的「有效地區」屬性設定變更為 - Service 資源會在本機結構定義中,變更 Locale Settings 特性的 Active Locale 屬性。
- Service 資源會將「通知」要求傳送至 ,通知任何變更相關設定的本機訂閱者。
- 裝置和行動應用程式資源 (訂閱者) 都會收到 Service 資源的通知要求 ,並在本機結構定義中更新 Local Settings 設定特性的 Active Locale 屬性。
WDM 的優點
如果你只想變更行動應用程式的語言代碼,則情況可能相當複雜。不過,只要將版本結構定義、發布訂閱模式和要求結合在一起至 WDM 設定檔,Weave 就能確保所有資源的資料完整性。
此外,它也能確保即時性,因此只要重新啟動裝置,就會立即通知所有訂閱者其已發布的特性,並觀察訂閱特徵的狀態,並在結構定義中反映所有狀態,而且功能不會遺失。
不再訂閱
如果資源取消了該特性,就會保留該屬性的最後一個已知版本。該發布商不會再收到該發布商的通知 請求
但是還是可以傳送更新請求 給該發布商即使是從未訂閱的特性,也可以向該要求傳送資源。舉例來說,某項資源可能不需要瞭解特性的狀態,但可能會傳送 update 要求
來變更該特性的變動以回應外部事件。重點回顧
您學到的內容:
- Weave Data Management (WDM) 是即時特徵管理的 Weave 設定檔,可確保所有資源的即時性和資料完整性
- 要求 是針對標準性操作的標準要求,有預期的回應
- WDM 具有兩個通訊協定角色:
- 出版商 — 特定特性的可靠資料來源,可傳送 notify 要求
- 訂閱者:觀察已發布的結構定義、傳送 view 、update 或指令 要求
- WDM 提供兩種訂閱模式:
- 單向 - 要求從訂閱者傳送到發布商
- 雙向 - 裝置互相訂閱
- 訂閱項目是由訂閱要求所建立
- 即使沒有訂閱,資源也可以傳送 WDM 訊息到特性訊息
如需詳細資訊,請參閱: