сервера с домом пакуется в asn.1 и отсюда вытекают следующие ньюансы:
* схема шарится между 3 (если не 4) проектами
* всегда есть ситуация с разными версиями со всех сторон. Т.е. обеспечить синхронность версии схемы заведомо нельзя
Чем мы пользуемся?
* asn1 из Эрланга
* asn1c от @levwalkin
Как храним схему.
Некоторые держат схему в отдельном проекте. Мы пошли по другому пути и она лежит в флюссонике. Это мастер проект по схеме.
Из него она копируется руками в другие проекты.
Сначала схема обкатывается в ветке флюссоника, потом мержится в мастер и становится основной. В этот момент
флюссоник понимает, что часть его данных может домой не доехать и он может оттуда далеко не всё получить.
Флюссоники мы не сами обновляем, так что из дома мы понимаем, что часть данных может не доехать, так что старые
поля по сути нельзя депрекейтить, их надо как-то, но заполнить.
Не самый технологичный способ, но этого хватает.
Для работы с хедером в эрланге немного доработали ребар, чтобы он подкладывал .hrl в каталог src одноименного проекта.
Именно src чтобы оно не поехало случайно в сборку в паблик (в include).
Этот хедер спокойно включаем по всему проекту, структуры из asn1 (с их неудобным именованием) используем по проекту
без промежуточных прослоек.
Очень не хватает удобной валидации параметров на упаковке asn в эрланге: не сообщает, что ему не нравится, приходится
по стектрейсу смотреть, что именно хрустнуло.
После asn1c немного дошлифовываем скриптами сгенеренную сишечку, чтобы убрать лишние символы.
В целом всё на порядок удобнее протобафа, потому что инструменты уже здесь, из коробки и довольно стабильно работают.
Зачем нужен протобаф?
Обсуждают сегодня