소개
D-Bus 는 IPC 로 사용하기 쉽고, 비용이 적은 시스템입니다. 각각에 대해 좀 더 살펴보면, 다음과 같습니다.
- D-Bus 는 아래와 같은 이유로, 비용이 적게 듭니다.
- 이진 프로토콜을 사용하고, XML 같은 text 형식으로 변환하거나 변환할 필요가 없습니다.
- D-Bus 는 양방향 검증을 피하고, 비동기적인 실행이 가능하도록 설계되었습니다.
- D-Bus 는 아래와 같은 이유로, 사용하기 쉽습니다.
- D-Bus 는 바이트 스트림이 아닌 메시지 측면에서 동작합니다.
- 다루기 어려운 많은 IPC 문제들을 자동으로 처리합니다.
- D-Bus 라이브러리는 IPC 를 위해 별도의 기술을 배우지 않아도 됩니다.
- 기존의 object/type 시스템을 그대로 사용할 수 있습니다.
기본 D-Bus 프로토콜은 “메시지 프로토콜” 섹션에서 명세된 1:1 프로토콜입니다.
즉, 하나의 어플리케이션이 다른 하나의 어플리케이션과 통신하기 위한 시스템입니다.
하지만, D-Bus 프로토콜의 주 목적은 “메시지 버스 명세”에 정의된 D-Bus 메시지 버스입니다.
메시지 버스는 여러 다른 어플리케이션들의 연결을 허용하고, 메시지를 다른 어플리케이션에 전달하는 특별한 어플리케이션입니다.
D-Bus 를 사용하는 것은 시스템의 변경 사항에 대한 알림과 파일 모니터링 서비스나 설정 서비스와 desktop 환경 운영이 포함합니다.
D-bus 는 다음과 같은 두가지의 구체적인 사용 환경에 맞춰 설계됐습니다.
- “System bus” 는 시스템에서 사용자 세션으로 알림을 주기 위해 사용됩니다.
- 그리고, 시스템이 사용자 세션에서 입력을 받게 할 수 있습니다.
- “Session bus” 는 GNOME 이나 KDE 와 같은 desktop 환경을 위해 사용됩니다.
D-Bus 는 모든 어플리케이션에 대한 범용 IPC 시스템을 목표로 하고 있지 않습니다.
그래서, 일부 다른 IPC 시스템에서 제공해주는 기능을 제공하지 않기도 합니다.
반대로, 다른 IPC 시스템에서 제공하지 않는 기능들을 제공하기도 합니다.
예를 들면, single-owner “bus names” 이나, on-demand 서비스 시작, 보안 정책등이 있습니다.
여러 관점에서 이런 기능들은 D-Bus 개발을 위한 핵심 동기가 됐습니다.
이 외의 다른 목적으로 IPC 를 사용한다면, 꼭 D-Bus 를 사용하지 않아도 됩니다.
주요 사용 사례를 벗어나는 기능의 경우, 향후 버전에서 제외 될 수 있습니다.
프로토콜 및 명세(설계)의 안정성
D-Bus 프로토콜은 2006년 11월 8일자로 확정되었습니다.
현재는 호환성을 포함한 확장만 가능합니다.
하지만, 여기에 적힌 명세만으로는 D-Bus 의 레퍼런스 구현을 참조하지 않고, 상호 호환 가능한 라이브러리를 만들기는 어렵습니다.
그래서, 이 명세서는 1.0 으로 표시되지 않습니다.
이 명세를 1.0 으로 만들기 위해 우리는 명세서를 명확히 하고, 레퍼런스 구현 동작의 더 많은 측면을 다루기 위해 노력을 기울일 것입니다.
이 작업이 완료될 때까지 D-Bus 를 사용한 라이브러리를 만들기 위해서는 레퍼런스의 구현을 살펴보거나, D-Bus 메일링 리스트로 질문을 해야할 것입니다.
명세에 대한 질문은 환영입니다.
문서가 완벽하지 않더라도, 이 문서는 유용한 시작점이 되어야 하고, 우리의 지식은 불완전할지라도 정확합니다.