Neste artigo vamos falar sobre o ADO.NET Data Services, conhecido também como Astória, uma tecnologia da plataforma .NET que permite desenvolver aplicações Web utilizando princípios básicos da comunicação HTTP. Veremos quais são estes princípios que envolvem o REST, um pouco de sua arquitetura e formas de expor serviços Web. Serão mostrados também conceitos e comparações entre JSON e XML. Ao final deste artigo criaremos uma aplicação para expor uma fonte de dados com Astória e a consumiremos com um cliente utilizando AJAX.
Para que serve
Disponibilizar serviços Web é fundamental para o sucesso de praticamente qualquer projeto. O Astória permite fazer isto de forma simples e rápida. Seguir boas práticas de desenvolvimento Web, permitindo que o usuário navegue por sua aplicação através de forma intuitiva também é uma das grandes vantagens da utilização do Astória.
Em que situações o tema é útil
É útil quando precisamos disponibilizar formas de acesso, ou até mesmo manipulação de dados, através de serviços web, baseados no padrão de troca de mensagem HTTP. O Astória é uma perfeita combinação para sistemas que utiliza AJAX, Flash, Silverlight, ou outras tecnologias, já que é uma forma eficiente de obter e manipular dados de um servidor a partir de uma aplicação RIA (Rich Internet Application). É possível inclusive integrar o Astória com aplicações Mobile.
Resumo do DevMan
Neste artigo veremos o que é o REST e seus princípios. Também veremos como o ADO.NET Data Services (Astória) segue esses princípios em sua arquitetura. Vamos explorar a possibilidade de realizar consultas através do Astória, como aplicar segurança e como fornecer e manipular dados.
O .NET 3.5 SP1 introduziu uma nova forma de disponibilizar serviços via Web utilizando o próprio HTTP e REST (Representational State Transfer), já conhecido dos desenvolvedores Java e Rails, possibilitando a manipulação de dados através de URI. Neste artigo veremos o que é a tecnologia REST e como utilizá-la na plataforma .NET com o ADO.NET Data Services. Na primeira etapa do artigo serão apresentados alguns dos conceitos básicos das tecnologias envolvidas. Em seguida serão apresentados os principais recursos do ADO.NET Data Services, como: disponibilizar dados, operações CRUD (Create, Retrieve/Read, Update e Destroy/Delete), segurança e finalmente a aplicação cliente. Mostrarei em poucas linhas de código como disponibilizar dados em XML utilizando os princípios do REST.
O Cenário, o problema e a solução
Certamente você já criou alguma aplicação Web e por mais simples que seja a aplicação, quando o usuário a acessa, há uma requisição ao servidor. O ASP.NET retorna, além dos dados requisitados, todas as outras informações para apresentação, como cor, fonte, imagens, tabelas utilizadas no layout, divs, entre outros elementos HTML. Ou seja, a apresentação é enviada junto com os dados.
Uma arquitetura que está ganhando cada vez mais espaço na Web é a separação dos dados da apresentação. Com a utilização do AJAX os dados podem ser apresentados de forma assíncrona e o servidor não precisa necessariamente mandar a informação já formatada, podendo mandar apenas os dados estruturados. Neste caso a formatação é aplicada pelo próprio JavaScript, já no cliente. O mesmo se aplica quando pensamos em fazer uma aplicação em Silverlight, que pode solicitar os dados ao servidor e apresentá-los no seu padrão já definido em XAML (eXtensible Application Markup Language). Outra possibilidade é apresentar utilizando o Flash. Neste caso, o Flash faz uma requisição ao servidor, que enviará somente os dados inerentes ao sistema, sem a necessidade de nenhuma informação extra de apresentação, pois as informações apresentadas já foram definidas na construção do aplicativo flash. Ou seja, uma vez que os dados são recebidos, eles podem ser apresentados em um padrão já definido, seja em Silverlight, Flash, HTML com JavaScript, Desktop, Mobile entre outras tecnologias.
Quando pensamos em arquitetura distribuída e que a interface do usuário pode ser uma combinação de diversas aplicações, a separação de dados das informações de apresentação também pode ser de grande utilidade, possibilitando economizar recursos e distribuí-los em diversos servidores, ganhando escalabilidade.
Quando falamos em tornar a experiência do usuário mais rica, certamente temos que criar mecanismos que possibilitem uma interação cliente-servidor de forma inteligente e rápida. Estamos acostumados a criar diversos métodos que interagem com o cliente e para cada nova necessidade, novos métodos são criados. Veremos como evitar a criação de novos métodos utilizando o ADO.NET Data Services.
JSON
Atualmente, o ADO.NET Data Services suporta JSON e XML para troca de dados. JavaScript Object Notation, ou JSON é um modo de estruturar dados utilizando a sintaxe JavaScript. É uma alternativa para o retorno do resultado de consultas REST, sendo XML o padrão em .NET. Com JavaScript a grande vantagem de JSON sobre a XML é que não necessita de um manipulador XML, pois já está estruturado na linguagem. Logo aplicações AJAX ficam mais simples de serem desenvolvidas (nosso exemplo final usará esse formato). Grandes empresas como Google, Yahoo entre diversas outras, utilizam este formato para serviços Web. Um exemplo simples de um formato JSON, com informações de uma imagem do Yahoo, pode ser vista a seguir na Tabela 1. Ao lado é apresentada a sintaxe equivalente em XML. Note que a sintaxe JSON é a mesma do Javascript, utilizando Chaves para definir os níveis. A XML utiliza tags, para definição dos níveis. Além disso, as tags XML são case sensitive.
Vamos tomar como exemplo a definição de uma imagem, conforme Tabela 1. A primeira linha da tabela mostra a abertura do “nó”, ou seja, a identificação da informação. Em JSON é necessário abrir chaves, identificar com uma string, seguida de dois pontos, enquanto que em XML é necessário criar uma tag, similar à sintaxe do HTML.
Tabela 1. Comparação da sintaxe JSON com sintaxe XML
Vimos que o JSON, assim como o XML, é um formato texto, legível e estruturado, mas não possui as tags da XML. Mas afinal, qual é melhor? Como tudo em programação, depende. Se você for trabalhar com Javascript, por exemplo, o recomendado é o uso do JSON. Em alguns outros cenários, como simplesmente armazenar alguns dados, ou intercâmbio de informação entre sistemas distintos, XML pode ser uma boa saída, visto que quase todas as linguagens possuem suporte ao XML.
O que é o REST?
REST significa Representational State Transfer. É um conjunto de diretrizes de desenvolvimento de software para distribuição de sistemas hipermídia que trabalham em cima do HTTP. Através de requisições HTTP (POST, PUT, GET, DELETE), enviadas juntos com o cabeçalho HTTP, torna possível a troca de informações, através do URI.
Estes dados podem ser representados por JSON ou XML, definidos através do content-type. O content-type do HTTP define o tipo do conteúdo da resposta, como por exemplo, HTML, jpg, XML, entre outros.
Quando os protocolos de comunicação foram surgindo, como exemplo, CORBA e SOAP, um movimento contra estes protocolos surgiu, alegando que eles não entendiam os princípios básicos de comunicação via Internet. O HTTP havia sido projetado para atender todas as necessidades que o CORBA, SOAP e outros procuravam suprir. O REST, por se basear em comunicação voltada a HTTP, pode passar por firewalls e é facilmente integrado com outros sistemas independente da plataforma.
...