Наивные сокеты — это соединение точка-точка. А dbus — это именно шина, то есть она умеет в бродкасты и в подписки с фильтрацией. Кроме того, dbus реализует такие сущности как пользовательские сессии и сервисы.
И ещё в d-bus есть перечислители методов с описаниями типов и сигнатур. В XML-RPC этого типа нет.
И ещё, в википедии пишут:
Адреса отправителей и получателей называются путями объектов, поскольку D-Bus предполагает, что каждое приложение состоит из набора объектов, а сообщения пересылаются не между приложениями, а между объектами этих самых приложений
Это ЛОР. Ты бы еще на военном фронте вышел и сказал «Братья, хватит воевать, бросайте оружие и будем вместе жить в мире». Ты вроде и прав, но людям нужны флаги
This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.
С распространением линковки стало более обычным писать библиотеки, делающие одну вещь хорошо, а софт делать жирными обёртками на все случаи жизни над всем этим (пример: весь гнутый софт). Программы получили возможность не работать вместе (завися от багов/изменений друг в друге, пример — недавнее изменение формата выхлопа ifconfig и deprecation того же ifconfig'а), а таскать всё с собой, попутно юзеры избавились от лишних fork()'ов. Вместо текстовых потоков стало возможно использовать стандартизованные бинарные интерфейсы, реализованные в тех же библиотеках. Нет больше смысла надеяться, что всё есть файл (тем более, что это ложь: в юниксах далеко не всё есть файл), если можно вызвать более-менее стандартную функцию из библиотеки.
А ничего, что есть ядреный netlink (который, по сути те же сокеты), который умеет и броадкаст и подписки? Единственный минус - доставка сообщений не гарантируется, вот не знаю, как с этим в d-bus.
netlink он же для ядро-юзерспейс коммуникаций. Зачем в ядро пихать юзерспейс-юзерспейс никто не понимает. Я придерживаюсь мнения, что в ядре это ненужно.
дык, каждый день страдаю.. и ладно еще есть плюсовая обертка, а то в сишных сырцах к дыбасу есть пророчество, что каждый, кто будет туда соваться обречен рыдать кровавыми слезами. (конец вольного перевода)
А что, кроме линукса есть что-то ещё? BSD - так там есть сокеты, навернуть туда netlink - дело техники, это вам не systemd
А вообще, в контексте обсуждение требование кросс-платформы даже не звучало. Если уж на то пошло, на виндах тоже дбаса нет - следовательно дбас прибит гвоздями к *nix
BSD - так там есть сокеты, навернуть туда netlink - дело техники
Ахаха.
А вообще, в контексте обсуждение требование кросс-платформы даже не звучало.
В контексте какого обсуждения - этого топика? Что за детские отмазки. DBus делался в рамках freedesktop.org для работы на свободных Unix. Это не говоря уже о том, что и в Linux сокеты netlink предназначены для общения ядра и юзерспейса, а не юзерспейса с юзерспейсом. Ты правда считаешь, что надо было доработать netlink?
Кстати, порт DBus на венду существует и даже включен в основную кодовую базу.