Я мог бы взглянуть на службы данных ADO.NET , например Astoria, в VS2008 SP1.
Это позволяет вам предоставлять данные через веб-сервис (WCF, выставляющий ATOM, IIRC), но вам не нужно знать все эти детали: инструментарий беспокоится об этом для вас: вы просто получаете регулярные источники IQueryable <T> на контекст данных (не совсем такой же, как в контексте данных LINQ-to-SQL, но такая же концепция).
Хорошо, что запрос LINQ (например, фильтрация (Where), пейджинг (Skip / Take) и т. Д.) Может быть составлен на всем пути от клиента, через веб-службу и до хранилища данных с поддержкой LINQ (LINQ-to-SQL или Entity Framework и т. Д.). Таким образом, только правые данные поступают через провод: если вы запрашиваете первые 10 строк (20000), заказанных по имени, то это то, что вы получаете: 10 строк из базы данных; 10 рядов по проводу, беспорядок.