Este é um post disponível para assinantes MVPREST com WCF Data Services - Artigo .net Magazine 84
Neste artigo será demonstrado como criar uma pequena aplicação para Locadora com opções de consulta e atualização de informações de filmes, clientes e reservas através de um site se comunicando com serviços no padrão REST, além de uma aplicação para gerenciamento da Locadora em desktop. Será utilizado para o desenvolvimento da aplicação: ASP.NET Web Forms, Windows Forms e WCF Data Services, destacando os conceitos de REST, OData e Entity Framework 4.
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da .net Magazine 84
REST (Representational State Transfer) é uma técnica de engenharia de software para sistemas hipermídia distribuídos como a World Wide Web. O termo se originou no ano de 2000, em uma tese de doutorado (PHD) sobre a web escrita por Roy Fielding, um dos principais autores da especificação do protocolo HTTP que é utilizado por sites da internet.
Os sistemas que seguem os princípios REST geralmente são chamados de RESTful. No .NET com o lançamento do Service Pack 1 do Framework 3.5 foi incluído o ADO.NET Data Services, anteriormente chamado de Astoria e que agora na versão 4.0 do Framework, com o alinhamento dos produtos, passou a ser chamado de WCF Data Services, tecnologia que implementa os princípios de REST.
Uma aplicação RESTFul combina o uso dos princípios estabelecidos pela técnica do REST que podemos destacar como os principais:
1 – Possui um protocolo cliente/servidor sem estado, ou seja, cada mensagem HTTP contém toda a informação necessária para compreender o pedido;
2 – Uso de um conjunto bem definido de operações que se aplica a todos os recursos de informações. As operações mais importantes são POST, GET, PUT e DELETE que podem ser comparadas com operações CRUD para persistência de dados;
3 – Cada recurso no sistema REST é unicamente direcionado através da sua URI - Uniform Resource Identifier.
REST é basicamente uma forma de pensar, não um protocolo ou padrão, com ele temos um estilo de projetar aplicativos fracamente acoplados que contam com recursos nomeados. Talvez a parte mais complicada em uma aplicação REST é definir quais recursos você vai expor e como serão os critérios de segurança.
A Microsoft logo resolveu criar um padrão para o uso do REST que foi denominado de OData ou Open Data Protocol (http://www.odata.org), no entanto não se tornou um padrão fechado é totalmente aberto e permite qualquer um livremente interoperar com implementações OData.
Nota do DevMan
Em 2006 a Microsoft lançou a versão 3.0 do .NET Framework, que nada mais era do que "grandes blocos" que foram adicionados ao 2.0. Entre esses grandes blocos, figura o WCF. Como todo mundo sabe, ele é o pilar para comunicação dentro da plataforma .NET. A estrutura deste framework facilitou a entrada de novos produtos, também criados pela Microsoft, para atender cenários específicos. Desde a sua primeira versão, o WCF possui muitas funcionalidades, e a Microsoft está incrementando-o cada vez mais. O Windows Communication Foundation (WCF) é o pilar de comunicação da plataforma .NET. Ele foi criado para unificar todas as tecnologias que existiam até então, como COM+, .NET Remoting, ASP.NET Web Services (ASMX) etc., criando um framework extensível, que aborda de forma genérica, o modelo de criação de serviços, independentemente do protocolo onde ela está sendo publicado.
O OData foi anunciado no PDC e tem como objetivo principal o compartilhamento de informações entre ambientes diferentes, então ele estabelece duas partes principais onde temos os produtores (producers) e os consumidores (consumers) de informação. A Microsoft foi a primeira a utilizar o OData já no Service Pack 1 do Visual Studio 2008 com o ADO.NET Data Services.
A equipe de desenvolvimento do WCF Data Services sempre se empenhou em desenvolver meios para que qualquer fonte de dados (Bancos de dados, serviços, Sharepoint) pudesse ser acessado por qualquer meio programático (.NET, Java, PHP, Delphi, Silverlight etc.) utilizando como comunicação um protocolo simples, baseado em REST. Durante o trabalho de pesquisa foi detectado um problema comum, que foi chamado de “Silo de Informações”.
Esse problema é caracterizado na situação onde você já possui um compartilhamento de dados para um determinado ambiente e então precisa compartilhar com outro diferente. Muitas vezes essa adaptação é difícil de ser aplicada. Com o objetivo de vencer essa barreira (Figura 1), surgiu o OData ou Open Data Protocol.
O OData é um protocolo aberto e padronizado para compartilhamento de informações. Basicamente ele define um ambiente, um ecossistema onde temos algumas partes envolvidas definidas. Como já citado, temos os produtores de informação (data producers) e os consumidores de informação (data consumers). Aplicando HTTP, AtomPub e JSON o protocolo garante acesso livre às informações entre o ecossistema OData. E para incentivar outras empresas a utilizar o protocolo, a própria Microsoft foi a primeira a utilizá-lo. O Data Services Framework do VS2008 SP1 já oferecia suporte ao protocolo, sem contar o SQL Server 2008 R2, Windows Azure e SharePoint 2010.
Neste artigo será utilizada a versão final do Visual Studio 2010 e que já vem com os SDKs necessários para o uso do WCF Data Services, mas é possível utilizar outro SDK encontrado no site do OData (veja a sessão links). Também será necessária uma instância do SQL Server 2005/2008 (pode ser a versão Express), que é o banco de dados utilizado no exemplo.
Projeto de exemplo
A solução de exemplo contém quatro projetos, conforme apresentado na Figura 2. O projeto Locadora.Dominio é do tipo Class Library e é responsável pelo mapeamento objeto relacional e conexão com o banco de dados, Locadora.DataServices é do tipo Web Application e é responsável por expor os dados (chamado “data producer”), Locadora.AppAdmin é uma aplicação Windows responsável por visualizar as reservas dos clientes e finalmente Locadora.AppWeb é uma aplicação Web Forms onde o cliente pode consultar a lista de filmes disponíveis para reserva e efetuar a mesma.
Modelo
No projeto Locadora.Dominio consta o modelo conforme apresentado na Figura 3. É um modelo simples para a Locadora no intuito de retirar algumas complexidades para atingir melhor o objetivo com o WCF Data Services. É possível perceber que foram desconsideradas diversas informações que seriam importantes para um negócio de Locação e que não são relevantes para o artigo neste momento. Além disso, também deixamos algumas normalizações mais simplificadas para não estender demais o exemplo.
Com o modelo pronto é necessário criar o banco de dados, isso é chamado de Model-First, pois primeiramente modelam-se as entidades de negócio e depois se cria o banco de dados. Também utiliza o ADO.NET Entity Framework 4 (EF) aplicando o uso de POCO (Plain Old CLR Object). Após desenvolver o modelo é necessário criar fisicamente as tabelas na engine de banco de dados. Dentro do Visual Studio, é possível clicar com o botão direito sobre o modelo e escolher a opção Generate Database from Model, que cria os scripts necessários com os comandos DDL (Data Definition Language) capazes de gerar as tabelas. Com isso tem-se basicamente o domínio pronto, é importante salientar que não é o objetivo desacoplar o EF4 do domínio, fato que é indicado quando se utilizam padrões como DDD.
ATENÇÃO! A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVP
Space do autor


1
0
