Apresentando ADO .NET Data Services


Uma das novidades do service pack 1 do .NET Framework 3.5 chama-se ADO .NET Data Services (codinome Astoria) cujo objetivo é permitir a navegação pelos dados de uma fonte de dados publicados na web (nuvem)/intranet usando uma interface REST e formatando os dados em JSON.

O que é REST ?

O termo REST- Representation State Transfer, se referia originalmente a um conjunto de princípios de arquitetura (descritos mais abaixo), na atualidade se usa no sentido mas amplo para descrever qualquer interface web simples que utiliza XML e HTTP (ou YAML, JSON, ou texto puro), sem as abstrações adicionais dos protocolos baseados em padrões de trocas de mensagem como o protocolo de serviços web SOAP. É possível desenhar sistemas de serviços web de acordo com o estilo arquitetural REST descrito por Fielding, e também é possível desenhar interfaces XMLHTTP de acordo com o estilo de RPC mas sem utilizar SOAP. Estes usos diferentes do termo REST causam certa confusão em discussões técnicas, onde RPC não é um exemplo de REST.

Os sistemas que seguem os princípios REST são freqüentemente chamados de RESTful; os defensores mais ferrenhos do REST são chamados pelos mesmos de RESTafarianos

REST afirma que a web já desfrutou de escalabilidade como resultado de uma série de desenhos fundamentais chaves:

  • Um protocolo cliente/servidor sem estado: cada mensagem HTTP contém toda a informação necessária para compreender o pedido. Como resultado, nem o cliente e nem o servidor necessitam gravar nenhum estado das comunicações entre mensagens. Na prática, muitas aplicações baseadas em HTTP utilizam cookies e outros mecanismos para manter o estado da sessão (algumas destas práticas, como a reescrita de URLs, não são permitidas pela regra do REST).
  • Um conjunto de operações bem definidas que se aplicam a todos os recursos de informação: HTTP em si define um pequeno conjunto de operações, as mais importantes são POST, GET, PUT e DELETE. Com freqüência estas operações são combinadas com operações  CRUD para a persistência de dados, onde POST não se encaixa exatamente neste esquema.
  • Uma sintaxe universal para identificar os recursos. No sistema REST, cada recurso é unicamente direcionado através da sua URI (Uniforme Resource Identifiers).
  • O uso de hipermídia, tanto para a informação da aplicação como para as transições de estado da aplicação: a representação deste estado em um sistema REST são tipicamente HTML ou XML. Como resultado disto, é possível navegar com um recurso REST a muitos outros, simplesmente seguindo ligações sem requerer o uso de registros ou outra infraestrutura adicional. (http://pt.wikipedia.org/wiki/REST)

O que é JSON ?

JSON (com a pronuncia djeisón), um acrônimo para  JavaScript Object Notation, é um formato leve para intercâmbio de dados computacionais. JSON é um subconjunto da notação de objeto de JavaScript, mas seu uso não requer Javascript exclusivamente.

A simplicidade de JSON tem resultado em seu uso difundido, especialmente como uma alternativa para XML e AJAX. Uma das vantagens reinvindicadas de JSON sobre XML como um formato para intercâmbio de dados neste contexto, é o fato de ser muito mais fácil escrever um analisador JSON. Em JavaScript mesmo, JSON pode ser analisado trivialmente usando a função eval(). Isto foi importante para a aceitação de JSON dentro da comunidade AJAX devido a presença deste recurso de JavaScript em todos os navegadores web atuais.
 

O que ADO .NET Data Services (Astoria)?

O ADO .NET Data Services é  baseado no WFC (Windows Comunication Foundation) e tem como objetivo a criação de serviços de dados a partir de qualquer fonte de dados e estruturando as informações como entidades de acordo com as especificações do EDM - Entity Data Model geradas a partir do Entity Framework ou  através de implementações IQueryable<T>.

Desta forma o ADO .NET Data Services possibilita consumir as informações de um banco de dados publicado na nuvem(web) ou na intranet e de efetuar buscas das informações baseada no protocolo REST (via http) visto que a interface REST implementa GET, POST, PUT e DELETE. Os serviços oferecidos podem ser acessados a partir de qualquer plataforma visto que as requisições são feitas via HTTP.

A interface IQueryable fornece a funcionalidade para dar valores a consultas em uma fonte de dados específica no qual o tipo de dados é conhecido.
Essa interface herda a interface IEnumerable<(Of <(T>)>) para que se ele representa uma consulta, os resultados da consulta que podem ser enumerados.

A Enumeração força a árvore de expressão associado a um objeto  IQueryable<(Of <(T>)>) a ser executada

Ou ainda nas palavras da própria Microsoft:

O ADO.NET Data Services Framework consiste em uma combinação de padrões e bibliotecas que permite que os dados sejam expostos como um serviço de dados flexível baseado em REST (Representational State Transfer) e que pode ser utilizado por clientes Web em uma rede corporativa ou pela Internet.

O ADO.NET Data Services Framework executa a criação de serviços de dados com qualquer fonte de dados. Um modelo de exibição conceitual do esquema de armazenamento subjacente pode ser exposto facilmente por meio da sofisticada integração com o ADO.NET Entity Framework.

Os serviços criados usando o ADO.NET Data Services Framework, assim como os serviços do Windows Live (dev.live.com) compatíveis, podem ser acessados facilmente em qualquer plataforma. Para aplicativos cliente em execução em plataformas Microsoft, é fornecido um conjunto de bibliotecas de cliente, a fim de simplificar a interação com serviços de dados. Por exemplo, clientes baseados no .NET Framework podem usar o LINQ para consultar serviços de dados e uma camada de objetos simples do .NET Framework para atualizar dados no serviço

Como o ADO .NET Data Services expõe um modelo de entidades, geralmente criamos o modelo usando os recursos do ADO .NET Entity Framework para efetuar o mapeamento das tabelas do banco de dados de forma a poder acessá-las via LINQ to Entities, mas você pode usar o IQueryable para que as URIs sejam convertidas em consultas pois o ADO .NET Data Services possibilita o mapeamento dos objetos que implementam a interface IQueryable para EntitySets.

Aguarde em breve um exemplo completo de um projeto usando ADO .NET Data Services.

Eu sei é apenas ADO .NET , mas eu gosto...

  • Uma introdução sobre o SQL Server Data Services (codinome “Sitka”) e o ADO.NET Data Services (codinome “Astoria”)
  • .NET Novidades 2009

  • ADO .NET Entity Framework - Usando LINQ to Entties


  • José Carlos Macoratti