Масштабируемость взаимодействия клиент-сервер; XML v сериализованный двоичный файл - PullRequest
1 голос
/ 12 мая 2011

В прошлом системы, над которыми я работал, обычно использовали XML для связи между клиентом и сервером, а также для передачи наборов результатов и т. Д. Мой текущий проект, однако, просто сериализует список объектов в двоичный файл и отправляет его через провод.

Сейчас мы подошли к тому моменту, когда наши «объекты переноса» (из-за отсутствия лучшего описания) могли начать увеличиваться в размере из-за множества новых полей. Это, в дополнение к тому факту, что теоретически у нас может быть список до 100 000 отправленных объектов, заставляет меня задуматься об относительной производительности нашего текущего подхода по сравнению с использованием XML.

Когда я говорю «производительность», я считаю:

  • Размер объектов, передаваемых по проводу, и время, потраченное
  • Время, необходимое для сборки объектов, готовых к передаче
  • Время, необходимое для синтаксического анализа / десериализации на другой стороне, прежде чем мы отобразим в пользовательском интерфейсе

Мне кажется, что XML может получить очень многословно, поэтому может потребоваться какое-то сжатие ... но я не совсем знаком с тем, как он масштабируется по отношению к сериализованным двоичным файлам. Есть ли общее согласие относительно того, какой подход более масштабируемый, или мы попадаем в сферу «соответствия целям» здесь? :)

Спасибо за любой совет.

Cheers, Дэйв.

1 Ответ

2 голосов
/ 12 мая 2011

Я думаю, что, вообще говоря, существует определенный консенсус, что сериализация XML довольно многословна и не очень быстра.

Что касается вашей двоичной сериализации, поскольку мы не знаем реализацию, о ней трудно судить. Конечно, вы могли бы сделать некоторые сравнения производительности самостоятельно.

Кроме того, было бы интересно взглянуть на общедоступные реализации двоичных протоколов и посмотреть, как они работают с XML. Протоколные буферы и Комиссионные приходят на ум.

Также проверьте это: Сравнение производительности Thrift, Protocol Buffers, JSON, EJB, other?

https://github.com/eishay/jvm-serializers/wiki/

...