Отправка объекта через сокет, но на другом языке клиента, как заставить объект сериализоваться? - PullRequest
1 голос
/ 03 апреля 2012

У меня есть Java-сервер, который отправляет Java-сериализуемый объект моему клиенту и получает Java-сериализуемый объект для выполнения.Если мой клиент также написан на java, что приятно, это позволяет мне общаться в любых проблемах.

Но теперь я хотел бы расширить свою программу не только на java-клиент, клиент может быть написан на C, цель C, python или php.Итак, я хотел бы сделать что-то, чтобы «собрать» запрос клиента к объекту java и отправить обратно на сервер.В обычном процессе я могу использовать JSON для получения и создания объекта Java на сервере, но мне также нужен слой, который преобразует объект Java обратно в JSON для клиента.

Мой вопрос, кроме как сделать слой перевода JSON-Java, есть ли другие способы сделать это?Кроме того, мы можем позволить себе изменить некоторый код на стороне сервера, но мы должны использовать Java в качестве основного языка для этого.Какие-либо предложения?Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2012

Я использую Netty API для разработки своего протокола, и это довольно быстро сделать, если вы понимаете NIO-подобный API байтов и буферов.Он предназначен для работы с концепцией Encoder и Decoder, которая может соответствовать вашим потребностям. Существует множество стандартных реализаций Encoder и Decoder для архивирования, использующих ssl ...

Кажется, что проблема у вас выглядиткак этот: JBoss Netty с JSON

Я не очень хорошо знаю JSON, но большую часть времени также можно быстро и легко создать свой собственный протокол.

Вам нужен общий процесс сериализации для любого типа объектов или вам просто нужно сериализовать некоторые строковые и примитивные типы (Integer, Short, Float..etc)?В случае простых объектов легко и намного быстрее сделать обертку самостоятельно.

Если объекты довольно простые, и я думаю, что это так, вам нужно разработать собственный протокол«спецификация, означающая, как превратить каждый объект в последовательность примитивных типов, строк и массивов.Чем проще написать кодировщик и декодер на каждом языке.

Удачи

0 голосов
/ 03 апреля 2012

Существуют и другие библиотеки, разработанные для этого, такие как буферы протокола и экономия.

http://thrift.apache.org/

http://code.google.com/p/protobuf/

...