Использование GZipStream для асинхронного взаимодействия клиент / сервер - PullRequest
1 голос
/ 28 октября 2011

У меня есть система клиент / сервер (использующая Socket) с несколькими клиентами и одним сервером, который отправляет данные xml каждые секунды на всех клиентах.

Данные XML всегда имеют разный размер от 1 до 18000 символови сервер должен отправить эти XML-данные всем клиентам одновременно.

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

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

  • Должен ли я сжимать все XML-данные перед отправкой?
  • Должен ли я сериализовать XML-данные?(возможно, размер данных xml будет уменьшен)
  • Нужно ли конвертировать все XML-данные в массив byte [] (для буфера), потому что связь должна выполняться одновременно для всех клиентов.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 28 октября 2011

Если вы работаете в интрасети, я бы рекомендовал multicast ваши данные XML. Таким образом, ваш сервер будет отправлять одну копию XML-данных каждую секунду (вместо отправки N копий данных для N-клиента)

0 голосов
/ 28 октября 2011

Если вы используете WCF, вы можете легко интегрировать сжатие GZip.

проверьте здесь: Пример сжатия WCF через HTTP

0 голосов
/ 28 октября 2011

Вы можете использовать средний уровень со встроенной топологией pub-sub, если вы в настоящее время просматриваете подключенные клиенты. 0MQ позволяет одному издателю очень эффективно отправлять подписчикам n и имеет привязку C #. Вы также можете сжать сообщения перед отправкой, как вы предложили.

...