Во-первых, это немного придирчиво, но, вероятно, достаточно уместно, чтобы упомянуть: «D-Bus» - это протокол, который обычно используется с демоном шины сообщений (обычно dbus-daemon
, но были написаны другие реализации). Можно использовать протокол без демона (для одноранговой передачи сообщений между процессами на одном компьютере) или по сети, или что угодно. Протокол просто определяет систему типов, структуру сообщения и семантику вызова.
В оставшейся части этого ответа я предполагаю, что под «D-Bus» вы подразумеваете (как обычно это делают большинство людей) комбинацию протокола и dbus-daemon
.
Считается ли D-Bus промежуточным программным обеспечением, ориентированным на сообщения?
В некотором роде. Википедия говорит, что MOM позволяет хранить, маршрутизировать или преобразовывать сообщения, а также асинхронность. D-Bus реализует очередь сообщений (но не в том случае, если одноранговый узел не подключен к шине; в этом случае отправителю возвращается ошибка), ограниченная маршрутизация сообщений (широковещательная или одноадресная) и отсутствие преобразования сообщений. Асинхронность обеспечивается клиентскими библиотеками D-Bus в сочетании с циклом опроса.
Считает ли D-Bus очередь сообщений?
В некотором роде. Как и выше, D-Bus реализует упорядоченную очередь сообщений в dbus-daemon
до тех пор, пока принимающий узел не прочитает их. Он не сохраняет очередь на диске, если демон перезапущен или одноранговый сервер отключается. Спецификация D-Bus определяет гарантии порядка сообщений, которые делает D-Bus.
Похоже ли D-Bus на ZeroMQ?
Я не очень хорошо знаю ZeroMQ, но, похоже, ключевое отличие в том, что D-Bus предназначен только для локального IPC, тогда как ZeroMQ также предназначен для IPC между несколькими компьютерами в сети. Хотя можно использовать D-Bus через TCP, это официально не поддерживаемая конфигурация и не то, для чего D-Bus действительно предназначен.