Size: a a a

Язык программирования Julia / Julia programming language

2020 December 24

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Вроде бы для кастомной задачи реализация подобной штуки не выглядит слишком сложной. Собственно всё, что нужно - это маппинг сообщения на функцию, которая его обрабатывает.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Маппинг можно делать словарём, анализ сообщения для маппинга - ну тут уже индивидуально в зависимости от задачи.
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
Ну какой-то мультиплексор, который смотрит на тег/имя функции и на id сообщения, вызывает нужную функцию, принимает от нее результат, и добавляет тот же id сообщения.
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
+ соглашения на обеих сторонах по форматам сериализации и по ключевым словам для имени функции и id
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Можно функцию, которая превращает сообщение в ключ (например вытаскивает значение нужного тега), потом по ключу берет функцию из словаря, исполняет ее и возвращает результат.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Вроде бы не выглядит сложным.
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
вряд ли такое есть как отдельная библиотека, реально проще всего явным образом эти несколько строк кода написать
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
Ну и еще - преобразовать все поля сообщения - в тупл и передать в функцию как args... или kwargs..
Можно самому написать, только эту будет нестандарт. Думал, что есть какие-то устоявшиеся способы, чтобы была поддержка в других языках из коробки.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Я думаю, что args... или kwargs... сложно, что если у тебя какие-нибудь вложенные структуры?

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

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

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Если так сделать, то в принципе потом можно любой формат использовать, процессинга это будет неважно.

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

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Viktor G.
Вебсокеты обеспечивают только транспорт (бинарный поток), для полноценного RPC надо еще десериализовать сообщения и раскидать их по своим эндпоинтам (функциям).

Чтобы не делать это вручную, обычно используют HTTP-рутеры и просто кидают сообщения в тело HTTP-запроса, так? (И называют это JSON-RPC)

Ну а если мне не нужен HTTP-протокол, то надо руками писать свою реализацию рутинга по функциям API?
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
источник

ДН

Даниил Николаев... in Язык программирования Julia / Julia programming language
А есть CapNProto для julia?
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Похоже, что нет.
Есть какой-то древний заброшенный проект.
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
MsgPack вроде поудобней protobuf - там не нужны сторонние компиляторы и файлы с описаниями.
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Ну так в стороннем описании и компиляторе вся суть. Если есть описание, то для любого языка можно сгенерировать код клиента/сервера
источник
2020 December 25

VG

Viktor G. in Язык программирования Julia / Julia programming language
ну а MsgPack просто есть для большинства языков, и использует препроцессоры
источник

ДН

Даниил Николаев... in Язык программирования Julia / Julia programming language
Viktor G.
MsgPack вроде поудобней protobuf - там не нужны сторонние компиляторы и файлы с описаниями.
Msgpack как бинарный json, protobuf вообще другое
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
и там кстати схема не нужна - имена ключей хранятся в самом сообщении
источник