Как вы можете передавать результаты в виде загрузки строки JSON? - PullRequest
1 голос
/ 12 января 2011

Я заинтересован в том, чтобы быстрее представлять результаты в моем мобильном приложении.Можно ли передавать результаты в виде загрузки строк?Я думаю о реализации IObservable для выталкивания результатов по мере их загрузки, но я не знаю, какой алгоритм использовать, чтобы правильно собрать воедино данные, которые могут быть неполными в любой заданной точке.

Надеждаэто было достаточно ясно.

РАЗЪЯСНЕНИЕ: Думаю, это было недостаточно ясно.Моя проблема в том, что загруженная строка довольно длинная.Загрузка может занять 15-20 секунд или более.Я хочу, чтобы изменения быстрее отражались на моем пользователе, поэтому я хотел бы использовать реактивные расширения для откачки сущностей, как только будет получено полное.

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

Ответы [ 2 ]

1 голос
/ 15 января 2011

Я собираюсь выйти на конечность и сказать, что это технически возможно, но вы не получите его работать с любой существующей структурой без огромного количества взлома.Каждый элемент в JSON должен быть правильно закрыт, прежде чем он будет считаться действительным.Если вы попытаетесь десериализовать половину строки JSON, это не будет синтаксически допустимой строкой JSON.Это даже не просто добавление нескольких закрывающих тегов "}", поскольку у вас могут быть частичные элементы, вложенные в частичные строки.Поэтому вам придется санировать текущую строку JSON для частичных элементов, вручную закрывать каждый оставшийся объект JSON и только затем десериализовать.

В десериализации WPSON JSON даже для относительно простых объектов в высокопроизводительных средах (JSON.Net) занимает несколько сотен миллисекунд.Довольно бессмысленно десериализовать всю накопленную строку JSON каждый раз, когда с сервера поступает новая порция данных.Поскольку к тому времени, как вы закончите десерлизацию, появится новая строка JSON, которую нужно десериализовать.

Если вы действительно заинтересованы в потоковой передаче результатов веб-сервиса клиенту, чтобы он мог читать частичные результаты, я не думаю, что JSON - это формат, который вам нужен.Вероятно, более простой формат CSV будет иметь больше смысла.

Лучше всего вместо использования Chunking + CSV просто подумать о создании 2-х типов веб-методов: веб-метод InitialLoad и веб-метод пейджинга.Вот как большинство мобильных веб-сервисов, с которыми я знаком, решают эту проблему.

1 голос
/ 12 января 2011

РЕДАКТИРОВАТЬ: Просто заметил, что вы имели в виду WP7.Проверьте Реактивные расширения для .NET http://msdn.microsoft.com/en-us/devlabs/ee794896

для JS

http://codebetter.com/matthewpodwysocki/2010/03/15/introduction-to-the-reactive-extensions-for-javascript-wikipedia-lookup/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...