Каков наиболее эффективный способ отправки полезных данных OData по проводам? "Плотный JSON?"
Я разрабатываю распределенное приложение, которое будет состоять из множества сервисов REST. В последнее время я возвращался к вопросу о том, реализовывать ли мои REST-сервисы с помощью веб-API ASP.NET MVC 4 или OData. Кажется, что веб-API когда-нибудь будет тем, что мне нужно, но сейчас он только наполовину испечен. В частности, он имеет только частичную реализацию URI-запросов в стиле OData и не выполняет гипермедиа "из коробки".
Так что это заставляет меня еще раз долго смотреть на OData. Мне очень нравятся возможности запросов URI и структурные гипермедиа для отложенной загрузки; Я думаю, что я буду использовать эти функции в моем приложении. Тем не менее, спецификация Atom Pub представляется крайне неэффективной.
Недавно я прочитал пост об эффективном формате OData, в котором упоминается "плотный JSON", но на самом деле такой вещи не существует. Это правда? И даже если такого понятия, как плотный JSON, не существует, обычный JSON все же намного эффективнее, чем Atom Pub, верно?
Есть ли ситуации, когда я хотел бы использовать Atom Pub поверх JSON?
1 ответ
Должно быть очень мало различий между ATOM и JSON на семантическом уровне с OData. Кроме того, большинство серверов OData (наверняка, службы данных WCF) поддерживают оба, так что клиент выбирает, какой из них использовать. Как упоминается в сообщении в блоге от Пабло, для получения наилучшего размера полезной нагрузки необходимо включить сжатие HTTP. Отлично работает как на ATOM, так и на JSON.
Чтение JSON имеет тенденцию быть быстрее (разбор XML довольно дорогой), но это если вы беспокоитесь о потреблении процессора клиентом. Если я правильно помню, в прошлый раз, когда я видел цифры, размер сжатой полезной нагрузки для ATOM и JSON ничем не отличается.
ATOM PUB обычно проще использовать в клиенте, который имеет хорошие библиотеки XML или ATOM, а не в формате JSON. И наоборот. Но кроме этого, не должно быть большой разницы.