在 QtRO 網絡,進程間信息的傳遞是憑藉 QRemoteObjectNodes("nodes")。這種點對點功能,是使用少量截然不同的數據包在 Node (節點) 之間傳遞必要數據。
參與網絡的各進程會實例化基於 Node (節點) 的類型,譬如
QRemoteObjectNode
,
QRemoteObjectHost
,或
QRemoteObjectRegistryHost
。Node (節點) 的主機類型有提供額外功能。兩者
QRemoteObjectHost
and
QRemoteObjectRegistryHost
支持
enableRemoting
() 和對應
disableRemoting
() methods, which are the key methods to expose source objects to the network. To use the
注冊
功能,需要擁有
QRemoteObjectRegistryHost
在網絡中。然後,所有其它節點可以將 RegistryHost 的 URL (統一資源定位符) 傳遞給節點的
registryAddress
構造函數參數,或把 URL 傳遞給
setRegistryUrl
() 方法。
由於 QtRO 是點對點網絡,要 acquire () a valid 復本 需要把復本節點連接到的節點會托管其 源 。主機節點是允許其它節點連接到它的節點,是通過給齣主機唯一地址施行的。此地址提供給 QRemoteObjectHost 構造函數 (或通過 setHostUrl 方法設置)。來自請求復本的節點必須建立到主機節點的連接,以初始化復本並保持最新。
主機 Node (節點) 使用自定義 URL (統一資源定位符) 簡化連接。目前,QtRO 支持 2 種類型的連接:
對於 local 連接,必須使用唯一名稱。對於 TCP 連接,必須提供唯一地址和端口號的組閤。
目前,QtRO 不包括 zeroconf 設施。因此,所有進程 (或設備) 必須事先知道,如何相互連接。 QRemoteObjectRegistry 可可以用於簡化,具有多主機節點網絡的連接過程。
下錶匯總瞭可用的連接類型:
| URL | 注意事項 |
|---|---|
| ("local:service") | 使用 (內部) { QLocalServer }/{ QLocalSocket } 類以在節點之間進行通信。 |
| ("tcp://192.168.1.1:9999") | 使用 (內部) { QTcpServer }/{ QTcpSocket } 類以在節點之間進行通信。 |
| ("qnx:service") | QNX OS only. Uses a custom (named) channel for native communication between nodes. |
| ("localabstract:service") | Since 6.2. Linux/Android OSes only. Uses an abstract namespace for Unix domain sockets. This allows QLocalSocket behavior to work on non-writable devices. |
Node (節點) 有幾個 enableRemoting () 方法,用於在網絡中共享對象。不管怎樣,若節點不是主機節點,返迴錯誤。
其它進程 (或設備) 想要與共享對象交互,可以使用某一 節點 acquire() 方法,以實例化復本。