Существуют ли учебные пособия для Protobuf-net?

Я читал про protobuf-net, и это потрясающе!

Есть ли какие-нибудь учебники, которые я мог бы использовать? (Более конкретно для Dictionary<TKey,TValue> и контрактов для генериков)

Есть ли какие-нибудь советы, связанные с ним?

Могу ли я просто подключить его к моей текущей кодовой базе или есть какие-то изменения, которые мне нужно сделать?

Ответы

Ответ 1

Dictionary<TKey,TValue> должен в значительной степени работать (по крайней мере, в "v1", я еще не написал это для "v2" ).

Я полностью признаю, что документация... разрежена. Вещи, которые бросаются в голову:

  • Начало работы (и есть несколько других страниц в вики)
  • в trunk; проект" Примеры" удваивается как единичные тесты, поэтому может помочь
  • мой блог

У меня много чего происходит на данный момент (я только что сменил задания и т.д.), но мои приоритеты:

  • получить стабильную бета-версию "v2" , по крайней мере, основной набор функций
  • улучшить документацию

Время - мой самый большой враг. Но если у вас есть определенный сценарий, не стесняйтесь пинговать меня, и я постараюсь вернуться к вам как можно скорее.

Re "я могу просто подключить его в"; это зависит от вашего кода; -p

Ему нужен способ определения уникального числа для каждого члена, который вы хотите сериализовать. Самый простой способ сделать это - через атрибуты; он поддерживает любые из [XmlElement(Order=n)], [DataMember(Order=n)] или [ProtoMember(n)]. Если у вас уже есть хотя бы один из них (например, LINQ-to-SQL включает [DataMember]), он может просто работать.

Есть варианты автоматического вывода чисел, но это хрупкое и не рекомендуется. Используйте это только в том случае, если вы знаете, вам больше не нужно добавлять больше членов (он упорядочивает их в алфавитном порядке, поэтому добавление нового AardvarkCount будет ломать все).

В "v2" (неизданный, но работает) вы теперь можете обрабатывать метаданные независимо от типов - т.е. вы можете использовать protobuf-net с POCO, без атрибутов. Вы также можете обойти конструкторы и т.д. (Стиль WCF). Гораздо более гибкий, если вы этого хотите. Конечно, поддерживается и атрибутный подход.

Ответ 2

Как ни странно, я просто ответил на другой вопрос со ссылкой на protobuf-net.

Я нашел, что это относительно просто сделать, и Марк очень отзывчив по электронной почте. (Хе-хе, извините, если я приглашаю людей спамить вас вопросами!)

Для документации я упомянул, что она была немного разреженной. Но вот что я использовал для этого:

У меня была система обмена сообщениями на основе XML, которая была слишком многословной. Поэтому я хотел заменить сообщения тем, что будет кодировать одну и ту же информацию, но гораздо более компактно. Protobuf-net оказался для этого идеальным, и я не заменил свой модуль на основе xmlserialzer прототипом.

Это было довольно просто. Я просмотрел свой проект, заменив [XmlInclude] и подобные атрибуты на [ProtoInclude], и ​​я, конечно, заменил сериализатор xml проторилизатором. Одна или две проблемы, связанные с сериализацией типов, были решены с помощью справки Marc и не очень много рефакторинга кода.