Qt Remote Objects 節點

在 QtRO 網絡,進程間信息的傳遞是憑藉 QRemoteObjectNodes("nodes")。這種點對點功能,是使用少量截然不同的數據包在 Node (節點) 之間傳遞必要數據。

參與網絡的各進程會實例化基於 Node (節點) 的類型,譬如 QRemoteObjectNode , QRemoteObjectHost ,或 QRemoteObjectRegistryHost 。Node (節點) 的主機類型有提供額外功能。兩者 QRemoteObjectHost and QRemoteObjectRegistryHost 支持 enableRemoting() 和相應 disableRemoting() 方法,嚮網絡暴露 Source (源) 對象的關鍵方法。要使用 注冊 功能,需要擁有 QRemoteObjectRegistryHost 在網絡中。然後,所有其它節點可以將 RegistryHost 的 URL (統一資源定位符) 傳遞給節點的 registryAddress 構造函數參數,或把 URL 傳遞給 setRegistryUrl() 方法。

由於 QtRO 是點對點網絡,要 acquire() 有效 復本 需要把復本節點連接到的節點會托管其 Source 。主機節點是允許其它節點連接到它的節點,是通過給齣主機唯一地址施行的。此地址提供給 QRemoteObjectHost 構造函數 (或通過 setHostUrl 方法設置)。來自請求復本的節點必須建立到主機節點的連接,以初始化復本並保持最新。

連接節點使用 QtRO URL

主機 Node (節點) 使用自定義 URL (統一資源定位符) 簡化連接。目前,QtRO 支持 2 種類型的連接:

  1. TCP (傳輸控製協議) 連接使用標準 TCP/IP 協議 - 支持設備之間的連接,及同一設備進程間的連接。
  2. local 連接 - 支持同一設備進程間的連接。這種類型的連接可以擁有更小的開銷,從屬底層 OS (操作係統) 特徵。

對於 local 連接,必須使用唯一名稱。對於 TCP 連接,必須提供唯一地址和端口號的組閤。

目前,QtRO 不包括 zeroconf 設施。因此,所有進程 (或設備) 必須事先知道,如何相互連接。 QRemoteObjectRegistry 可可以用於簡化,具有多主機節點網絡的連接過程。

下錶匯總瞭可用的連接類型:

URL 主機節點 連接節點
QUrl ("local:service") QLocalServer ("service") QLocalSocket ("service")
QUrl ("tcp://192.168.1.1:9999") QTcpServer ("192.168.1.1",9999) QTcpSocket ("192.168.1.1",9999)

Node (節點) 有幾個 enableRemoting() 方法,用於在網絡中共享對象。不管怎樣,若節點不是主機節點,返迴錯誤。

其它進程 (或設備) 想要與共享對象交互,可以使用某一 節點 acquire() 方法,以實例化復本。