В настоящее время мы используем Silverlight 4 со службами WCF и пытаемся считывать большие массивы объектов пользователей из службы. В нашем коде генерация 700 объектов, упорядоченных по иерархии (много циклов), занимает около 0,5 (и менее) секунд.
И Silverlight / WCF для передачи этих данных требуется около 4-5 секунд - на локальном хосте.
Я измерил время в своем коде / вызове службы, использовал Fiddler для просмотра данных (5 МБ!), И когда я попытался передать упрощенный объект с простыми атрибутами (вместо вложенных списков и т. Д.), Потребовалось гораздо меньше объем данных и был очень быстро, как секунда.
Я прочитал много статей на эту тему - нет простого способа, лучший способ найти возвращение byte [] из метода WCF (и иметь типы в отдельной сборке) или сериализаторы с высокой степенью ручного действия (например, protobuf). требующие записи пользовательских атрибутов и т. д.
ОК, я попробовал это. Protobuf-net чрезвычайно сложен (добавление чисел к 200 существующим классам неинтересно), v2 еще не здесь, а binaryMessageEncoding уменьшил загрузку данных с 5,5 МБ до 4,5 МБ, не слишком много.
Но, я не могу поверить, есть ли готовое решение WCF / Silverlight для потоковой передачи больших объемов данных? Разве это не должна быть хорошая современная технология для корпоративных решений?
Как я могу сказать Silverlight / WCF, что поток данных будет быстрее и меньше, а не 5 МБ за 5 секунд? Могу я просто сказать в конфиге: «использовать маленький и быстрый сериализатор»?