Вопрос об использовании XML в качестве протокола уровня приложения - PullRequest
1 голос
/ 27 декабря 2010

Мне интересно, смогу ли я использовать XML в качестве протокола уровня приложения. XML будет располагаться поверх протокола TCP, а двум приложениям просто необходимо знать, как анализировать XML.

Но проблема в том, что XML недостаточно компактен. Должен ли я использовать какой-либо алгоритм для сжатия полезной нагрузки XML перед отправкой по TCP? Если я сделаю его компактным, то затраты на сжатие / декомпрессию будут задействованы с обеих сторон. Что за дилемма Есть хорошие предложения? Или я ошибаюсь?

Большое спасибо.

Ответы [ 2 ]

1 голос
/ 27 декабря 2010

Определите «достаточно компактный», вы измерили его слишком медленным для вашего приложения?Избегайте преждевременной оптимизации .

Как и в любом протоколе, существуют компромиссы в различных направлениях.XML предоставляет вам хорошо известный кроссплатформенный формат с библиотеками практически для любого языка, который способен представлять все виды структурированных данных.XMPP выбирает это и использует необязательное сжатие для установок с ограниченной пропускной способностью.Эксперименты в мире XMPP с альтернативными представлениями редко оказывались оправданными.

На ступеньку ниже XML, но все же предоставляет многие из преимуществ JSON.Хотя в нем отсутствует пространство имен, оно довольно простое, и библиотеки почти так же распространены, как и библиотеки XML.Тем не менее, JSON основан на тексте и может быть многословным для некоторых ситуаций.

Последним разумным выбором будет двоичный протокол.Это имеет преимущества в том, что вы можете адаптировать и оптимизировать его специально для вашего приложения.Недостатки в том, что вам приходится писать анализ и сериализацию самостоятельно, хотя есть инструменты для автоматизации этого, такие как проект Буферы протокола от Google.

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

1 голос
/ 27 декабря 2010

Я бы сказал, что вы можете использовать прямой XML для своих сообщений и не беспокоиться о сжатии или чем-то еще (XML не совсем быстр), если вам нужен простой способ указать, как выглядят ваши сообщения. Если вам нужно что-то более быстрое и компактное, взгляните на Буферы протокола Google или Экономия (лично я предпочитаю буферы протокола, но все не такие, как я ...).

Использование XML может, например, быть хорошим способом, если вам нужно, чтобы ваш интерфейс был легко взаимодействовать с множеством различных клиентов, например (таких как веб-службы). Если, с другой стороны, вы всегда отвечаете за оба конца коммуникации, вы всегда можете сделать что-то быстрое, чтобы начать работу, а затем оптимизировать позже.

...