X>Приветствую!
X>Сабж^
X>Дока находится на гитхабе, как и сам проект. И, чтоб не синхронизировать постоянные изменения, сюда я доку постить не стану.
X>Собственно — Protoctor
X>Хотелось бы получить пожелания/идеи/рекомендации/фидбэк.
Здравствуйте, Danchik, Вы писали:
D>Чем оно лучше этого? http://thrift.apache.org/
тем же, чем оно лучше protobuf:
1. нет никакого отдельно придуманного синтаксиса для описания сообщений.
2. нет отдельной стадии кодогенерации.
ну, возможно, и еще чем-то лучше. я не в вникал ни в protobuf, ни в thrift.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[3]: Protoctor - communication protocol constructor
Как раз благодаря наличию отдельной стадии генерации thrifft и protobuf позволяют писать программы на разных языках.
Если планируется чисто С++ , тогда конечно это не так удобно как препроцессор, зато в будущем не нужно будет ничего переписывать если другие языки понадобятся.
Здравствуйте, _NN_, Вы писали:
_NN>Хорошо бы сделать сравнение с thrift и protobuf , чтобы действительно понять стоит ли перейти.
я не знаком ни с тем, ни с тем.
опиши задачу, я попробую спрогнозировать резонность перехода
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[3]: Protoctor - communication protocol constructor
Здравствуйте, niXman, Вы писали:
X>1. нет никакого отдельно придуманного синтаксиса для описания сообщений. X>2. нет отдельной стадии кодогенерации.
3. самый быстрый инвокинг из всех, что я когда либо видел.
если посмотреть на пример сгенерированного, то становится ясно, что для инвокинга используется всего две инструкции cmp и две jmp
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[4]: Protoctor - communication protocol constructor
Здравствуйте, niXman, Вы писали:
X>Здравствуйте, _NN_, Вы писали:
_NN>>Хорошо бы сделать сравнение с thrift и protobuf , чтобы действительно понять стоит ли перейти. X>я не знаком ни с тем, ни с тем.
X>опиши задачу, я попробую спрогнозировать резонность перехода
Сейчас как бы не актуально.
Я в свое время итоге выбрал protobuf , потому что thrift требует boost-а (небольшие организационные проблемы его внести).
Передаю данные из .NET в C++ , все работает замечательно.
Посему protoctor изначально бы не подошел.
Здравствуйте, niXman, Вы писали:
X>Здравствуйте, _NN_, Вы писали:
_NN>>Посему protoctor изначально бы не подошел. X>простите, но я как-то совсем не уловил, из чего это следует?
А как в .NET создавать ту же структуру данных ? Ручками ?
Здравствуйте, _NN_, Вы писали:
_NN>А как в .NET создавать ту же структуру данных ?
ааа ,вот о чем речь...
_NN>Ручками ?
ну...как вариант =)
структура пакета на самом деле очень проста.
1. один байт — CALL_ID
2. один байт — VERSION_ID
3. четыре байта — BODY_SIZE
4. бади, собственной персоной
=)
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[8]: OFF: Protoctor - communication protocol constructor
Здравствуйте, _NN_, Вы писали:
_NN>Сейчас как бы не актуально. _NN>Я в свое время итоге выбрал protobuf , потому что thrift требует boost-а (небольшие организационные проблемы его внести).
Ну протобуф в отношении количества понимаемых типов из коробки — вроде бы довольно аскетичен? Или я ошибаюсь?
Я в принципе по необходимости рисовал генератор сам (правда для дотнета, но это ж дело техники), ибо работать приходилось со структурами сделанными с фантазией! (микс из порядка байт, представление дат — тоже разное, сложные типы данных типа словарей (map и multimap), блоки данных с CRC, строки фиксированной ширины дополненные пробелами и/или нулями, ну и вышак — определние типа структуры через лукэхид). Это своего рода такой кошмарчик, который удалось систематизировать. После этого, в последний раз когда я смотрел на протобуф — выглядит игрушкой. Ну хотя в нём мне в принципе всё нравится. А возможностей thrift — не знаю. Узнал о нём гораздо позже, смысла даже смотреть не было.
Re[9]: OFF: Protoctor - communication protocol constructor
Здравствуйте, fddima, Вы писали:
F>Здравствуйте, _NN_, Вы писали:
_NN>>Сейчас как бы не актуально. _NN>>Я в свое время итоге выбрал protobuf , потому что thrift требует boost-а (небольшие организационные проблемы его внести). F> Ну протобуф в отношении количества понимаемых типов из коробки — вроде бы довольно аскетичен? Или я ошибаюсь?
Это да, но не смертельно. Можно легко заменить.
Thrift намного более продвинутый в этом плане, поэтому если есть возможность лучше брать его.
F> Я в принципе по необходимости рисовал генератор сам (правда для дотнета, но это ж дело техники), ибо работать приходилось со структурами сделанными с фантазией! (микс из порядка байт, представление дат — тоже разное, сложные типы данных типа словарей (map и multimap), блоки данных с CRC, строки фиксированной ширины дополненные пробелами и/или нулями, ну и вышак — определние типа структуры через лукэхид). Это своего рода такой кошмарчик, который удалось систематизировать. После этого, в последний раз когда я смотрел на протобуф — выглядит игрушкой.
В случае когда формат задан, то конечно тут нужен конструктор форматов , типа: Python Construct.
Но это совсем другая тема
F>Ну хотя в нём мне в принципе всё нравится. А возможностей thrift — не знаю. Узнал о нём гораздо позже, смысла даже смотреть не было.
Здравствуйте, wander, Вы писали:
W>У protobuf есть возможность обойтись без генерации кода. Вся нужная метаинформация доступна в рантайме.
т.е. его кодогенератор не генерит код?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[8]: Protoctor - communication protocol constructor
Здравствуйте, niXman, Вы писали:
X>Здравствуйте, wander, Вы писали:
W>>У protobuf есть возможность обойтись без генерации кода. Вся нужная метаинформация доступна в рантайме. X>т.е. его кодогенератор не генерит код?
Есть два способа. С генерацией и без.
Re[9]: Protoctor - communication protocol constructor
не могли бы вы привести пример, как использовать protobuf так, чтоб можно было сериализовать переменные без кодогенерации.
т.е. к примеру я имею такую структуру:
struct type {
int v;
std::string s;
std::pair<std::string, std::map<int, std::string>> m;
};
доку читал, но ничего подобного не обнаружил.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)