Какой самый эффективный / более компактный способ отправки двоичных данных на сервер в WP7 - PullRequest
1 голос
/ 01 апреля 2011

Учитывая отсутствие прямого ограничения tcp / socket в Windows Phone 7, мне было интересно, каким образом он имеет наименьшую нагрузку на производительность и / или может отправить его наиболее компактным способом.Я думаю, что я могу отправить данные в виде файла, используя HTTP (возможно, с HTTPWebRequest) и закодировать его как Base64, но это значительно увеличит размер передачи.Я мог бы использовать WCF, но производительность тоже будет большой.Есть ли способ отправки простых двоичных данных без их кодирования или более быстрый способ сделать это?

Ответы [ 2 ]

3 голосов
/ 01 апреля 2011

Сетевое взаимодействие в WP7 в настоящее время ограничено только HTTP.

Имея это в виду, вы должны будете разрешить включать заголовок HTTP как часть передачи.Вы можете помочь сохранить это маленьким, не добавляя никаких дополнительных заголовков самостоятельно (если только вам это не нужно).

С точки зрения основного текста сообщения, вы сами должны сделать все как можно меньше.

Форматирование данных в формате JSON обычно будет меньше, чем в формате XML.

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

1 голос
/ 02 апреля 2011

Если вы хотите отправить двоичные данные, то, конечно, некоторые люди использовали необработанные сокеты - см. Подключитесь к подключенному компьютеру из WP7, открыв сокет для localhost

Однако, если вы не хотите писать свой собственный сервер сокетов, тогда HTTP очень удобен. Как говорит Мэтт, вы можете включить двоичный контент в свои HTTP-запросы. Для этого вы можете использовать заголовки:

Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-Length: your length

Чтобы на самом деле установить эти заголовки, вам может потребоваться отправить это как многокомпонентное сообщение ... см. Такие вопросы, как Загрузка файлов с HTTPWebrequest (multipart / form-data)

На форумах AppHub есть отличный пример кода - http://forums.create.msdn.com/forums/p/63646/390044.aspx - показывает, как загрузить бинарную фотографию в Facebook.

Если ваши данные не очень велики, то может быть проще принять 4/3 попадания в кодировку Base64 :) (и есть и другие, немного более эффективные типы кодирования, такие как Ascii85 - http://en.wikipedia.org/wiki/Ascii85)

...