https://kotlinlang.org logo
#russian
Title
# russian
g

gildor

11/24/2017, 11:11 AM
l

lewik

11/24/2017, 11:20 AM
Так уж сложилось, что сейчас используется protobuf3 не поддерживаемый kotlinx.serialization Вопрос по использованию протобафа открыт, он мне не особо нравится, но сейчас я не могу его меня.... хотя почему бы и нет. Сейчас получается как: сущность -> преобразование протобаффом в бинарный массив -> позорный base64 (потому что я не смог настроить js клиент на бинарные данные) -> ну а потом в обратном порядке. Может кто то использовал kotlin(js) с вещами типа protbuff? Просто сам протобаф довольно громоздкий и долго на нем писать сущности.
g

gildor

11/24/2017, 11:36 AM
Может на JS отправлять через прокси который в Json конвертит?
Ну можно попробовать написать совместимый с protobuf3 парсер, там не так много кода https://github.com/Kotlin/kotlinx.serialization/blob/master/runtime/common/src/main/kotlin/kotlinx/serialization/protobuf/ProtoBuf.kt Можно спросить советы кого-то из команды kotlinx.serialization
насколько я помню говорили что pb2 лучше подходит из-за того, что там не опциональные параметры по умолчанию (я не сильный знаток протобафа, могу напутать). но может с какими то оговорками можно и для proto3 запилить
ах, вот в доке: Note that we are using proto2 semantics, where all fields are explicitly required or optional.
l

lewik

11/24/2017, 11:42 AM
Я все искал способ передачи информации, максимально сжатый (в проекте есть мобильное приложение с ужасным интернетом - по полю ходят), и чтобы можно было на разных языках писать (сменится завтра команда мобильного приложения или сервисов... чтобы они не были прибиты гвоздями к одному языку. А у протобаф есть схемы для генерации).
Я в принципе и не против выкинуть протобаф (я вот ща порываюсь заменить его на просто json)
s

sandwwraith

11/24/2017, 11:48 AM
@lewik Я правильно понял, что нужно именно это : https://github.com/Kotlin/kotlinx.serialization/issues/24 ?
l

lewik

11/24/2017, 11:49 AM
Да, точно, оно)
s

sandwwraith

11/24/2017, 11:50 AM
теоретически парсер сериализации должен съесть proto3 (за исключением packed arrays), если везде @Optional навесить , но я не пробовал
l

lewik

11/24/2017, 11:50 AM
маскировать под external кстати очень не удобно. Никакие проверки типов не сработают потом, получается кастрированный котлин, очень не советую.
s

sandwwraith

11/24/2017, 11:51 AM
а фича из issue я надеюсь в следующую версию сериализации попадёт
l

lewik

11/24/2017, 12:12 PM
Вообще, это ведь распространенная вещь - сжатый формат передачи со схемой (чтобы генерить код на разных языках), неужто кроме протобафа никто ничего не придумал/не использовал? (со схемой, чтобы не гадать какое там поле поменялось)
s

sandwwraith

11/24/2017, 12:23 PM
Apache Thrift ещё есть, например. Да мне кажется, много чего можно найти по запросу “protobuf analog”
e

elizarov

11/24/2017, 1:37 PM
Что касается ProtoBuf есть вот такая идея: https://github.com/Kotlin/kotlinx.serialization/issues/34
l

lewik

11/24/2017, 1:37 PM
Наоборот надо
e

elizarov

11/24/2017, 1:38 PM
Наоборт тоже надо
l

lewik

11/24/2017, 1:38 PM
Да, точно
Вам, наверно, сотрудников на это все уже не хватает)
e

elizarov

11/24/2017, 1:38 PM
Просто proto файл это очень урезанный формат. В нем очень мало нужной информации о типах можно выразить.
Так как Kotlin дает более богатое представление, то лучше его использовать как исходник. Но если у вас уже есть proto файл, то конечно нужен конвертер и в обратную сторону
А сотрудников не хватает, это верно. Как мы говорим в таком случае — contributions are welcome.
6 Views