
수많은 DBus 튜토리얼을 읽었음에도 불구하고 여전히 전체 개념을 이해하는 데 어려움을 겪고 있습니다. 내 생각에는 이것이 지금까지 가장 좋은 설명 중 하나였습니다.
http://telepathy.freedesktop.org/doc/book/sect.basics.dbus.html
DBus를 사용하는 이유는 서로 다른 프로그램 간에 데이터를 교환하고 싶기 때문입니다. 제 생각에는 서버나 그림 2-2에 명명된 서비스만 제공하면 충분할 것 같습니다. 이 서비스는 클라이언트와 공유하는 인터페이스를 통해 여러 가지 방법을 제공합니다.
그런 다음 클라이언트는 메서드를 호출하고 응답을 얻습니다.
그렇다면 내가 무엇을 놓치고 있는 걸까요? 추가 개체가 필요한 이유는 무엇입니까?
나는 그것이 객체 각각의 클래스에 대한 Java 규칙을 고수하는 것이라고 생각합니다. 각 객체는 인스턴스를 나타냅니다. 누군가가 그것을 확인해줬으면 좋겠어요.
두 번째 시스템에 비해 첫 번째 시스템의 이점은 무엇입니까?
답변1
관례에 의한 것이 아니라 높은 수준의 바인딩을 용이하게 하기 위한 것입니다.
귀하의 프로그래밍 프레임워크는 아마도 "객체"가 무엇인지 정의할 것입니다. 일반적으로 기본 클래스를 사용합니다. 예: java.lang.Object, GObject, QObject, Python의 기본 객체 등. 이것을 네이티브 객체라고 부르겠습니다.
저수준 D-Bus 프로토콜은 기본 객체에 관심이 없습니다. 그러나 개체 경로라는 개념을 제공합니다. 객체 경로의 개념은 상위 수준 바인딩이 기본 객체 인스턴스의 이름을 지정하고 원격 애플리케이션이 이를 참조할 수 있도록 한다는 것입니다.
편집하다:
아마도 객체 사용을 피하기 위해 API와 libdbus에 내장된 메시지 버스 데몬을 사용하면 다음과 같은 통신 접근 방식으로 끝날 것입니다.메소드를 호출하고 응답을 얻는 클라이언트. 그러나 libdbus는 상위 수준 바인딩을 위한 하위 수준 백엔드로 의도되었으므로 libdbus API의 대부분은 바인딩 구현에만 유용합니다.