Двоичная сериализация в WCF NetTCPBinding - PullRequest
2 голосов
/ 22 августа 2011

В настоящее время у меня есть несколько служб WCF в .Net 3.5, которые взаимодействуют с клиентами через привязку NetTCP. Мы переключились с привязок WsHTTP на NetTCP, чтобы уменьшить трафик данных между клиентом и сервером (передача двоичного кодированного кода NetTCP).

Мы не удовлетворены результатами (в наших тестах снижение только на 30%) и хотим использовать двоичный сериализатор вместо стандартной сериализации объекта xml.

Это уменьшит полезную нагрузку еще больше? Как реализовать двоичную сериализацию в WCF? В качестве объектов для передачи мы используем типизированные наборы данных.

1 Ответ

4 голосов
/ 22 августа 2011

Абсолютно без сарказма, но вы должны серьезно подумать об использовании простых объектов для контрактов данных службы вместо набора данных.Строго типизированный объект Dataset может быть очень сложным (просто посмотрите на код), и любая его сериализация будет довольно большой, по размеру.NetTcpBinding уже использует двоичный сериализатор, который должен производить меньшую полезную нагрузку.В качестве альтернативы, если вы пытаетесь создать гибкий сервисный уровень с поддержкой запросов, используйте вместо этого архитектуру сервисов на основе ресурсов .

Если вы считаете, что можете улучшить двоичный файл Microsoftкодировщик для netTcpBinding, посмотрите пример кода, на который есть ссылка в этом MSDN сообщении , чтобы начать.

...