На всякий случай напоминаю, что по протоколам общаются приложения (роботы), а не люди. jabber с его gzip'нутыми костылями являет собой пример истории неуспеха xml-based протокола.
> На всякий случай напоминаю, что по протоколам общаются приложения (роботы), а не люди.
А отлаживают люди. Отлаживать tlv -- задача не то, чтобы для сильных духом, не некоторое неудобство привносит.
> jabber с его gzip'нутыми костылями являет собой
jabber -- он как юникс. Говно говном, но лучше пока не придумали. 8))
> пример истории неуспеха xml-based протокола
А у 'xml-based протоколов' бывает история успеха? xml ж для таких вещей уникален по сути своей -- сочетает только отрицательные черты текстового человекочитаемого и бинарных протоколов, не взяв ни одной хорошей черты.
Основной пойнт был в том, чтобы не получилось, как в OSCAR'е -- там в пределах одного(!) пакета два(!) раза меняется endianess. BE -> LE -> BE. Ненависть!!!
> Почему-то никто не посоветовал самый очевидный выход: не использовать XML
Наверное, потому что вопрос был "какие xml-rpc либы наименее глючные"? 8)) Очень эротично общаться со сторонним сервером, который только xml-rpc и умеет, с помощью TLV-based протокола. 8)))
>Основной пойнт был в том, чтобы не получилось, как в OSCAR'е -- там в пределах одного(!) пакета два(!) раза меняется endianess. BE -> LE -> BE. Ненависть!!!
На всякий случай хочу напомнить, что концепция TLV вообще не затрагивает, каким образом должны храниться эти самые T, L и V. Главное, что T и L едины для всех. Не стоит перекладывать огрехи AOL на всю концепцию.
к стати, на счет TLV.
как быть если нужно задавать длины\колличество полей в конфиге...
т.е. например в одном случае
len id data
в другом нужно
len id nun_tags tag_data tag_data
или наоборот вроде...
len data id
при .том я разделяю это по разным портам, т.к. последовательности могут быть разные.
как сделать возможном добавление новых полей или просто сделать много, штук 20, как типо расширенные или дополнительные... и по дефолту нулевыми.
>Например, так
>Никаких сложностей, в общем-то, нет.
да, с этим проблем нет.
проблема больше всего в дизайне кода что-ли.
у меня то выходит много переменных, то много повторений xmlStrcmp, при сравнении или циклов, на чайла в xml tree приходится делать отдельный цикл(1).
конфигурация у меня выглядит так...
<dev><proto>udp</proto><port>1111</port><ack><field val="0x5D">1</field><field val="0x2A5F">2</field></ack></dev>
ну и так далее для всех девайсов...