LINUX.ORG.RU

Простой бинарный протокол (формат)


1

1

сабж для описания сообщений RPC

читал про: MessagePack, protobufs, ubjson, bson, ASN.1 и т.п.

надо: схема по которой можно сгенерировать reader/writer, и формат с фиксированным размером полей (а не так что в зависомости от размера там то в один байт и тип и значение влезает, то в 5 байтов), нужна поддержка java, опционально c# (или простой синтаксис)

пока подходит ubjson, он без схемы но вроде зело прост

asn.1 - вроде ничего но все два компилятора для java не поддерживают '...'

что скажет all?

Перемещено beastie из talks

Deleted

bittorrent, точнее bencode. Размер поля не фиксирован, но для особо не могущих в символы-разделители там есть следующий лайфхак.

Например, строки кодируются как «6:string7:string2{etc}», где цифра - длина поля, а после двоеточия идёт значение.

svr4
()
Последнее исправление: svr4 (всего исправлений: 1)
Ответ на: комментарий от O02eg

тоже видел, оно уже rfc, но тоже наркомански тегированное

Deleted
()

Если reader/writer генерируется по схеме, то в чем смысл требования о фиксированном размере полей?

eao197 ★★★★★
()
Ответ на: комментарий от beastie

два из упомянутых тобой я уже перечислил в исходном сообщении, спецификацию openfast я так и не смог скачать (https://github.com/real-logic/simple-binary-encoding спецификация идет на тотже сайт и также не скачать)

проблема не в том что их нет, а в том что они практически все под динамические структуры, да с затейливыми тегами отчего описание бинарного формата (и его парсер) выходит весьма затейливым

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Но почему? Все равно же это будет автоматически сгенерированный код обрабатывать... Просто интересно.

Из того, что здесь еще не упоминали, есть Thrift и Beep (в последнем на счет схемы не уверен).

eao197 ★★★★★
()
Ответ на: комментарий от nanoolinux

там же различные способы упаковки, вроде PER умеет, но вся эта штука сильно наворочена

Deleted
()
Ответ на: комментарий от eao197

Все равно же это будет автоматически сгенерированный код обрабатывать...

- думаю о тех кому может потребоваться писать парсер вручную

- это лишняя работа направленная на экономию места, мне экономить место не требуется

Deleted
()
Ответ на: комментарий от Deleted

- думаю о тех кому может потребоваться писать парсер вручную

Имхо, как только появляется схема, из которой что-то генерируется, о такой проблеме нужно сразу забыть. Особенно, если в Java-реализациях ASN.1 смущает отсутствие поддержки extension points :)

- это лишняя работа направленная на экономию места, мне экономить место не требуется

AFAIK, в ASN.1 PER как раз упаковка значения в минимальное количество бит используется в полный рост. Причем не только для каких-нибудь int-ов или размеров последовательностей. Но, если речь идет о перечислениях, то ASN.1-компилятор сам вычисляет минимальное количество бит, необходимых для представления перечисления. Ну и, в качестве довеска, есть aligned ASN.1 PER, и есть unaligned. Если вы думаете о тех, кому может потребоваться писать парсер вручную, то не связывайтесь с ASN.1.

eao197 ★★★★★
()

protobufs - использовал из java и ruby. Вроде, всё нормально.

anonymous
()
Ответ на: комментарий от const86

http://tools.ietf.org/html/rfc4506

ну там то boolean в 4 байтах храниться, то одни все пихают по битам, то другие 4 байта в качестве минимального значения

Deleted
()

asn.1 - вроде ничего но все два компилятора для java не поддерживают '...'

В смысле в них нельзя массив с переменным числом элементов сделать??

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.