Клиент Win CE 6.0 с использованием служб WCF - уменьшение пропускной способности - PullRequest
2 голосов
/ 07 июня 2010

У нас есть устройство Win CE 6.0, необходимое для использования сервисов, которые будут предоставляться с использованием WCF.Мы пытаемся максимально сократить использование полосы пропускания, и с помощью простого теста мы обнаружили, что использование UDP вместо HTTP позволило сэкономить значительное использование данных.

Я понимаю, что существуют ограничения относительно WCF на устройствах .NET Compact Framework 3.5.и было любопытно, что люди думают, что это будет правильный путь вперед.Имеет ли смысл разрабатывать собственную привязку UDP, и это будет работать для обеих сторон?

Буду признателен за любые отзывы.Спасибо.

1 Ответ

3 голосов
/ 09 июня 2010

Несмотря на то, что http имеет некоторые накладные расходы, если это становится важной частью использования ваших данных, то я подозреваю, что ваш API слишком «болтлив», и, возможно, следует рассмотреть меньшее количество сообщений (каждое из которых несет больше полезной нагрузки).

Следующий пункт будет; Как мы можем уменьшить пропускную способность для данного количества полезной нагрузки? Сжатие является опцией, но может быть проблемой на некоторых платформах. Другой - использовать формат сериализации, который по своей сути плотный и эффективный для обработки (с точки зрения циклов ЦП, поскольку вы используете устройства с низким энергопотреблением). Для этой цели идеально подойдет что-то вроде «буферов протокола».

protobuf-net - CF-совместимая реализация буферов протокола для .NET; сборка CF не имеет всех хороших функций WCF (потому что CF не поддерживает их), но она может работать очень эффективно.

Кроме того, если вы делаете , переходите на http, то следует учитывать MTOM, так как это уменьшает накладные расходы на кодирование двоичных данных (то есть то, что будет использовать protobuf-net).

Переход на UDP может быть вариантом, но я бы попробовал что-то вроде http + protobuf-net + MTOM first (в сочетании с менее "болтливым" API), и посмотрите как это складывается.

Следует также отметить, что текущая (загружаемая) версия protobuf-net имеет некоторые "изломы" с CF; это работает, но не так быстро и так далее, как могло бы быть (из-за ограничений в метапрограммировании на CF). Продукт "v2" (еще не выпущенный) обращается ко всем этим пунктам, позволяя полностью статическое (и быстрое) выполнение на CF. И лучше всего, это бесплатно.

...