Elemir 18.08.2012 20:37 sendxmpp

Я очень часто слышу вопросы типа "почему ты сравниваешь dbus и 9p? Это же совершенно разные вещи".
Люди, задающие подобные вопросы совершенно незнакомы со спецификой plan 9. Достаточно взглянуть на любой типичный демон plan 9 (например на http://plan9.bell-labs.com/magic/man2htm... чтобы понять, что файлы 9p суть объекты в терминах ООП. Например файл окна rio предоставляет тот же интерфейс, что предоставляет ФС фреймбуффера, так что любое графическое приложение может быть запущенно как в во фреймбуффере, так и в rio (в том числе и сам rio (!)).
Несмотря на мою славу plan 9-фага я не считаю, что 9p идеальна и во всём лучше dbus'а. Оба протокола обладают критическими недостатками, не позволяющими удобно использовать ни один из них (более того, недостатки dbus'а менее заметны в современных linux языках (то есть плюсах и python), что является причиной его популярности).
Ключевой недостаток 9p очевиден всем, кто пытался разрабатывать новые сервисы с его помощью, — он слишком хорошо претворяется vfs в стиле UNIX. В результате разработчик сервиса должен волноваться о том, что его ответ клиенту можно читать непоточно, или непоточно писать запрос (sic!). Это усугбляется странной поддержкой перемещения, устаревшей системой прав и подобной фигнёй. С другой стороны 9p не фиксирует формата общения клиента и сервера, что значительно упрощает работу клиента с сервисом.
Из недостатков непосредственно самого протокола dbus можно выделить разве что излишнюю типизированность, усложняющую описание протокола в несколько раз (тем не менее оно даже в таком случае приблизительного одного размера со спецификацией 9p2000). Основной же недостаток dbus'а, как ни странно, связан не с самим протоколом, а с инфраструктурой, сложившейся вокруг системы. Ответы полагаются в формате xml, что очень сильно ограничивает применимость существующей инфраструктуры.
С моей точки зрения IPC должен выполнять только контролировать какому объекту отправлять сообщение и фиксировать какому сообщению соответствует ответ. Всю остальную логику же стоит перенести внутрь логики самих объектов, фиксирорав поведение отдельных типов объектов. Это упростит как использование протокола клиентов (по сравнению с dbus), так и написание серверов (по сравнению с 9p2000).

Recommended by: @L29Ah, @komar
1. lukish 18.08.2012 20:38

што

2. Elemirlukish /1 18.08.2012 20:38 BitlBee

Ты успел прочесть?

3. lukishElemir /2 18.08.2012 20:38

А ты
?

4. Elemirlukish /3 18.08.2012 20:41 BitlBee

Я это написал, ваш КО

Do you really want to delete ?