Каков наилучший способ получения данных JSON с точки зрения производительности? - PullRequest
0 голосов
/ 12 февраля 2010

В настоящее время я использую HttpWebRequest для извлечения json данных с внешнего сайта, и производительность не была хорошей wcf намного лучше?

Мне нужен совет специалиста по этому вопросу.

Ответы [ 3 ]

0 голосов
/ 12 февраля 2010

Наверное, нет, но это не правильный вопрос.

Чтобы ответить на него: WCF, который, безусловно, поддерживает JSON, в конечном итоге собирается использовать HttpWebRequest на нижнем уровне, и у него, безусловно, будет та же задержка в сети. Что еще более важно, он будет использовать тот же сервер, чтобы получить JSON. У WCF есть много преимуществ в создании, обслуживании и настройке веб-сервисов и клиентов, но это не волшебно быстрее. Возможно, ваш метод десериализации JSON действительно медленный по сравнению с тем, который WCF будет использовать по умолчанию, но я сомневаюсь в этом.

И это поднимает действительно важный момент: выясните, почему производительность плохая . Смена фреймворков - это только понятная опция оптимизации, если вы знаете, что медленно, и, как следствие, то, как сделать что-то другое, сделает его менее медленным. Это сервер? Это десериализация? Это сеть? Это проверка подлинности или какая-то другая деталь запроса? И так далее.

Итак, настоящий ответ: профиль! Как только вы узнаете, в чем действительно заключается проблема с производительностью, вы можете принять обоснованное решение о том, поможет ли такая среда, как WCF.

0 голосов
/ 07 марта 2011

+ 1 к тому, что сказал Исаак, но я бы добавил, что если вы здесь используете WCF, он будет внутренне использовать HttpWebRequest в большинстве мест, так что вы определенно не будете повышать производительность вообще. Однако один из способов непреднамеренного повышения производительности - это то, как WCF перерабатывает, повторно использует, объединяет и кэширует большинство транспортных объектов внутри страны. Так что в конечном итоге это восходит к совету Исаака по профилированию.

0 голосов
/ 12 февраля 2010

Краткий ответ: нет.

Более длинный ответ заключается в том, что WCF - это API, который не определяет метод связи, но поддерживает несколько методов. Тем не менее, эти методы обычно работают над SOAP, что подразумевает больше подслушивания, чем JSON, и может показаться, что мир решил перейти от SOAP .

Какого рода производительность вы ищете и что получаете? Возможно, вы просто сталкиваетесь с физическими ограничениями сетевых расположений, и в этом случае вы можете попытаться сделать свой интерфейс более отзывчивым, даже если данные вялые.

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

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