Esse artigo faz parte da revista .NET Magazine edição 63. Clique aqui para ler todos os artigos desta edição

Imagem

ASP.NET Dynamic Data

Desenvolvendo aplicações dinâmicas

 

Sou um grande fã de geradores de código e ferramentas CASE, os softwares que fazem softwares. Qualquer solução que tenta automatizar o desenvolvimento de software, visa o aumento de produtividade.

Quando um trabalho é repetitivo, seja ele qual for, sempre existe uma oportunidade de automatizá-lo. E isso não é diferente no desenvolvimento de software. Se olharmos para as aplicações que desenvolvemos no nosso dia-a-dia, veremos que boa parte do nosso trabalho é de repetição. Não é a toa que uma das ferramentas mais utilizadas por um programador seja o famoso CTRL+C / CTRL+V.

É com olhos voltados para esta realidade que surgem ferramentas como o ASP.NET Dynamic Data. O ASP.NET Dynamic Data, como o próprio nome sugere, é um framework voltado para o desenvolvimento rápido e funcional de Data-Driven Applications.

Numa tradução livre, podemos dizer que Data-Driven Applications são aplicações orientadas a Dados. Este é um conceito também conhecido como DDDAS (Domain Data Driven Application System), que prega que a aplicação, ou parte dela, é criada dinamicamente tendo como base os dados e a estrutura destes dados. Esse também é um dos objetivos por trás do conceito de meta-dados.      

O ASP.NET Dynamic Data trabalha em conjunto com um modelo que representa e mapeia a estrutura de dados de um banco de dados relacional. Este modelo pode ser criado com o uso do LINQ to SQL ou do Entity Framework, que são as duas mais atuais ferramentas de OR/M da Microsoft e com as quais o ASP.NET Dynamic Data é compatível.

Como veremos, é com base neste modelo de dados que o ASP.NET será capaz de criar dinamicamente as interfaces que farão a manutenção cadastral nas entidades declaradas no modelo. Para a criação destas interfaces o ASP.NET Dynamic Data irá utilizar os próprios controles do ASP.NET, como DetailsView, FormView, GridView e ListView.

 

Os Andaimes

O ASP.NET Dynamic Data trabalha com um conceito chamado Scaffolding, que significa andaime, ou a estrutura temporária que é feita em torno de um prédio durante a sua construção. Este termo é muito utilizado no Ruby On Rails e é um conceito de meta-programação para a construção de aplicações baseadas em banco de dados.

Scaffolding é uma técnica utilizada por alguns frameworks MVC (Model-View-Controller), onde o programador especifica como um banco de dados deve ser utilizado. O compilador neste caso usa essa especificação para gerar o código que a aplicação irá utilizar para realizar as operações CRUD, Create-Read-Update-Delete, nas tabelas do banco de dados.

Essa estrutura básica que é criada automaticamente é o que se chama de Scaffold, ou a estrutura sobre a qual o programador irá construir uma aplicação completa.

        

Nota do DevMan

Ruby on Rails é um framework gratuito que agiliza o desenvolvimento de sites orientados a banco de dados, fazendo uso do padrão MVC. Ele é composto por subframeworks, que realizam tarefas específicas como abstrair os dados, originalmente em tabelas, para que possam ser tratados como classes e objetos na aplicação; Gerar a visualização desses dados usando HTML, XML, JavaScript e outros; Gerenciamento de Email e WebServices. Para mais detalhes visite www.rubyonrails.pro.br

 

O ASP.NET Dynamic Data utiliza deste mesmo conceito para a geração das operações cadastrais (CRUD) básicas do modelo de dados especificado no LINQ to SQL ou EF. Além disso, ele inclui uma série de outras funcionalidades básicas na aplicação, como: filtros para chaves estrangeiras e campos booleanos, chaves estrangeiras são convertidas por nomes amigáveis, algumas validações também são criadas automaticamente etc.

Como veremos, o ASP.NET Dynamic Data trabalha com uma extensa quantidade de templates, que estendem as funcionalidades de controles como GridView e DetailsView, para possibilitar a criação das interfaces em tempo de execução. Estes templates fazem parte do próprio projeto criado com o ASP.NET Dynamic Data e podem ser facilmente customizados para atender necessidades específicas.

        

Nota do DevMan

 

Model-view-controller (MVC) é um padrão de arquitetura de software. Sua principal meta é separar a lógica da apresentação. De uma forma simples isso quer dizer que não teremos a lógica da aplicação atrelada aos formulários/páginas mas sim, separados. Isso é possível porque o MVC introduz três figuras:

 

·     View: é a interface com o usuário;

·     Model: os dados e regras de negócios que devem ser exibidos na View;

·     Controller: é responsável em ligar a view ao model, coordenando as ações feitas pelo usuário para que elas atinjam o model.

 

A Microsoft está desenvolvendo o ASP.NET MVC Framework, um framework voltado exclusivamente para a criação de aplicações ASP.NET com a utilização do padrão MVC. O ASP.NET MVC Framework está atualmente disponível na versão 1 e pode ser baixado por aqui: http://www.asp.net/mvc/

 

 

Definindo o Database “VentoNorte”

Como estamos falando de um modelo de desenvolvimento baseado no database, a primeira coisa que devemos fazer para construir aplicações com o Dynamic Data é definir nosso banco de dados. Você já deve estar cansado de ver exemplos baseados no database Northwind da Microsoft. O problema é que este é o database mais didático que temos disponível e ilustra muito bem como é o desenvolvimento de uma aplicação com o ASP.NET Dynamic Data.

Mas para evitarmos a mesmice, vamos usar uma versão reduzida e abrasileirada do Norhtwind, que convenientemente chamaremos de VentoNorte. Essa versão tem algumas das tabelas do Northwind, porém com os nomes das tabelas, colunas e relacionamentos em português. Como os nossos testes serão muito mais ricos se tivermos dados nestas tabelas, eu mantive os dados do Northwind. Veja na Figura 1 o diagrama de entidades e relacionamentos do database VentoNorte.

 

Imagem

Figura 1. Estrutura do Database VentoNorte

 

Você pode criar a estrutura deste database no próprio SQL Server 2005, baseando-se neste diagrama, onde temos todas as informações necessárias para a criação das tabelas e relacionamentos. Opcionalmente você pode digitar o script da Listagem 1, que irá criar esta mesma estrutura. Mas essas duas opções irão resultar em um database vazio. É por isso que eu sugiro que você baixe uma versão do database VentoNorte do site da DevMedia, pois esse sim será um database com dados.

 

Listagem 1. Script para a criação das tabelas e relacionamentos do database VentoNorte

USE [VentoNorte]

GO

/****** Object:  Table [dbo].[Clientes]    Script Date: 02/28/2009 18:54:29 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[Clientes](

         [ClienteID] [nchar](5) NOT NULL,

         [ClienteNome] [nvarchar](40) NOT NULL,

         [ClienteContato] [nvarchar](30) NULL,

         [ClienteCargo] [nvarchar](30) NULL,

         [ClienteEndereco] [nvarchar](60) NULL,

         [ClienteCidade] [nvarchar](15) NULL,

         [ClienteRegiao] [nvarchar](15) NULL,

         [ClienteCEP] [nvarchar](10) NULL,

         [ClientePais] [nvarchar](15) NULL,

         [ClienteFone] [nvarchar](24) NULL,

         [ClienteFax] [nvarchar](24) NULL,

 CONSTRAINT [PK_Clientes] PRIMARY KEY CLUSTERED

(

         [ClienteID] ASC

...

Quer ler esse conteúdo completo? Tenha acesso completo