Há poucos dias Rafael Godinho e eu realizamos um WebCast sobre REST e aplicações RESTful (você pode encontrar o WebCast aqui: https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032410135&culture=pt-BR ).
Uma das coisas que acredito que deixamos de chamar a atenção neste WebCast foi sobre o uso do Linq e de chamadas assíncronas no Silverlight com o ADO.Net Data Services.
Primeiro, para quem não sabe, o ADO.Net Data Services é uma tecnologia que oferece interfaces REST para serem acessadas por agentes externos – isto é, interfaces clientes ou outros sistemas externos. As interfaces exposta são interfaces CRUD utilizando os verbos do http (GET, PUT, etc.) onde a uri, no caso de um read, pode ter expressões de filtragem (ex.: http://.../Livros()?$filter=(novo eq true) ). É importante também saber que o ADO.Net Data Services expõe entidades que podem vir de um Entity Framework (com quase nenhum esforço) ou de entidades em memória (estes últimos, com um pequeno esforço).
Quando um serviço REST é exposto pelo ADO.Net Data Services o cliente Silverlight pode usar a API do System.Data.Services.Client para acessar o serviço REST remoto. Para isto, ele cria um contexto indicando a uri raiz dos serviços a serem chamados e , com ele, pode realizar queries Linq como se estivesse junto ao Banco de Dados local.
Os aspectos que não chamamos a atenção no WebCast são:
É muito simples e creio que vale uma olhada nestas tecnologias. Sugiro também o artigo do John Papa sobre o assunto: http://msdn.microsoft.com/en-us/magazine/dd569758.aspx.
Abraços