Можно ли передавать объекты через OData?

Я новичок в OData, поэтому, пожалуйста, потерпите со мной.

предполагая, что я использую IQueryable с OData, и количество записей, генерируемых сервером, велико (скажем, 10000), можно ли начать обработку сущностей на клиенте по мере их поступления (до получения всего потока HTTP)?

концепция, которую я имею в виду, похожа на использование LINQ с SqlDataReader (подробности), где данные извлекаются из SQL (базовый только серверный курсор, подключенный к SqlDataReader), только как записи перечисляются поставщиком LINQ2SQL.

HTTP разрешает потоковую передачу. Может ли OData IQueryable воспользоваться этой поддержкой? Если сквозная потоковая передача может быть достигнута, данные будут перечислены на сервере и поток (получить сериализованный) в поток HTTP по одной записи за раз. Поскольку поток получен клиентом и десериализован, сущности могут быть перечислены и продолжать поступать в время.

это принятие желаемого за действительное?

1 ответов


возможно ли потоковое содержимое с помощью служб данных WCF? Да, это. Для этого нужно реализовать поставщика потокового который там, чтобы разрешить потоковую передачу двоичных больших объектов (BLOB) данных, таких как фотографии, видео и документы (Сущности)

Если большой результирующий набор передается из IIS, это feed/xml / json, и он недействителен, пока ответ не будет завершен. Однако можно выполнить несколько параллельных запросов используя $skip и $ top параметры, чтобы разделить этот resultset на несколько меньших запросов и присоединиться к ним, когда они прибудут.

обновление: Другой вариант может просто создать свою собственную инфраструктуру для потоковой передачи по WCF ds, как этот парень http://blogs.msdn.com/b/tom_laird-mcconnell/archive/2010/01/18/using-ado-net-wcf-data-services-for-streaming-infinite-event-result-sets.aspx