Мне нужен совет по структурированию схем FlatBuffer для фреймворка, который позволяет пользователям расширять типы данных, определенные фреймворком, но также позволяет разработчикам фреймворка добавлять новые поля при публикации новых версий фреймворка.
Первоначально я думал, что когда вы создаете проект с использованием этой среды, он будет генерировать несколько файлов схемы FlatBuffer, которые вы затем сможете отредактировать для своего конкретного проекта. Затем вы можете скомпилировать схемы и начать разработку кода, используя API-интерфейсы фреймворка.
Однако это становится проблемой, когда разработчики фреймворка решают добавить поля к базовым типам. Как вы, наверное, знаете, FlatBuffers требует, чтобы любые дополнительные поля были добавлены в конец (или, по крайней мере, имели более высокий идентификатор, чем другие поля). Таким образом, возникает конфликт между дополнениями, сделанными разработчиком фреймворка и пользователем фреймворка.
Одним из возможных решений было бы иметь набор «нерасширяемых пользователем» типов, которые принадлежат создателю фреймворка и которые не должны изменяться пользователями фреймворка; и эти типы затем будут встроены в типы данных, определенные пользователем платформы. Однако, учитывая ограничения на изменение размера полей, я не уверен, что это вообще сработает.
Я также готов услышать альтернативы использованию плоских буферов, если выяснится, что в противном случае нет хорошего решения.