Qt Remote Objects

원격 객체 개념

Qt Remote Objects (QtRO)는 Qt용으로 개발된 프로세스 간 통신(IPC) 모듈입니다. 이 모듈은 Qt의 기존 기능을 확장하여 프로세스 또는 컴퓨터 간에 정보를 쉽게 교환할 수 있도록 합니다.

이러한 정보 교환을 가능하게 하는 Qt의 주요 기능 중 하나는 객체의 API(속성, 신호 및 슬롯으로 정의됨)와 해당 API의 구현을 구분하는 것입니다. QtRO의 목적은 실제 QObject 가 다른 프로세스에 있더라도 예상되는 API를 충족하는 것입니다. 오브젝트의 복사본(QtRO의 복제본 )에서 호출된 슬롯은 처리를 위해 실제 오브젝트(QtRO의 소스 )로 전달됩니다. 모든 레플리카는 프로퍼티 변경 또는 방출된 신호 등 소스에 대한 업데이트를 수신합니다.

레플리카는 소스 객체에 대한 경량 프록시이지만, 레플리카는 QObject의 연결과 동작을 동일하게 지원하므로 Qt가 제공하는 다른 QObject 와 같은 방식으로 사용할 수 있습니다. 뒤에서 QtRO는 레플리카가 소스처럼 보이도록 하는 데 필요한 모든 것을 처리합니다.

예를 들어 원격 객체는 기존의 원격 프로시저 호출(RPC) 구현과는 다르게 동작한다는 점에 유의하세요:

  • RPC에서는 클라이언트가 요청을 하고 응답을 기다립니다.
  • RPC에서 서버는 요청에 대한 응답이 아니면 클라이언트에 아무것도 푸시하지 않습니다.
  • 예를 들어, 두 개의 클라이언트가 매핑 서비스에 길 찾기를 요청하여 서로 다른 결과를 얻을 수 있는 것처럼 RPC의 설계는 서로 다른 클라이언트가 서로 독립적으로 작동하도록 하는 경우가 많습니다.

프로퍼티가 없는 소스와 반환값이 있는 슬롯으로 QtRO에서 이러한 RPC 스타일의 동작을 구현할 수 있지만, QtRO는 처리가 실제로 원격이라는 사실을 숨깁니다. 직접 복제본을 만드는 대신 노드가 복제본을 제공하고 상태 신호(isReplicaValid())를 사용하지만 다른 QObject 기반 유형과 마찬가지로 객체와 상호 작용할 수 있습니다.

사용 사례: GPS

GPS(위성 위치 확인 시스템) 수신기와 같은 센서를 생각해 보세요. QtRO 용어로:

  • 소스는 GPS 하드웨어와 직접 상호 작용하여 현재 위치를 도출하는 프로세스가 될 것입니다.
  • 위치는 QObject 속성으로 노출되며, 위치가 주기적으로 업데이트되면 이러한 속성이 업데이트되고 속성 변경 신호를 내보냅니다.
  • 복제본은 다른 프로세스에서 생성되며 항상 현재 위치를 알 수 있지만 센서 데이터에서 위치를 계산하는 로직은 필요하지 않습니다.
  • 복제본의 위치 변경 신호에 연결하면 예상대로 작동합니다. 소스에서 방출된 신호가 모든 복제본에서 신호 방출을 트리거합니다.

사용 사례: 프린터 액세스

프린터에 대한 액세스를 제공하는 서비스를 생각해 봅시다. QtRO 용어로:

  • 소스는 프린터를 직접 제어하는 프로세스가 될 것입니다.
  • 잉크 수준과 프린터 상태는 QObject 속성에 의해 모니터링됩니다. 이러한 속성에 대한 업데이트는 속성 변경 신호를 내보냅니다.
  • 핵심 기능인 인쇄 가능 여부는 프린터로 다시 전달되어야 합니다. 덧붙여서, 이것은 QtRO가 복제본이 소스에서 호출하는 방식으로 사용하는 Qt 슬롯 메커니즘과 일치합니다. 사실상 프로퍼티와 신호는 소스에서 레플리카로, 슬롯은 레플리카에서 소스로 이동합니다.
  • 인쇄 요청이 수락되면 프린터 상태가 변경되어 상태 속성의 변경이 트리거됩니다. 그러면 이는 모든 복제본에 보고됩니다.

모듈 사용

Qt 모듈을 사용하려면 직접 또는 다른 종속성을 통해 모듈 라이브러리에 링크해야 합니다. CMakeqmake를 비롯한 여러 빌드 도구에서 이를 지원합니다.

CMake로 빌드하기

find_package() 명령을 사용하여 Qt6 패키지에서 필요한 모듈 컴포넌트를 찾습니다:

find_package(Qt6 REQUIRED COMPONENTS RemoteObjects)

CMake로 빌드 개요를 참조하세요.

qmake로 빌드하기

qmake로 빌드하도록 모듈을 구성하려면 프로젝트의 .pro 파일에 QT 변수의 값으로 모듈을 추가합니다:

QT       += remoteobjects

문서 및 가이드

API 레퍼런스

라이선스

Qt Remote ObjectsThe Qt Company의 상용 라이선스에 따라 제공됩니다. 또한 GNU 약소 일반 공중 사용 허가서 버전 3 또는 GNU 일반 공중 사용 허가서 버전 2에 따라 사용할 수 있습니다. 자세한 내용은 Qt 라이선스를 참조하십시오.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.