ASP.NET 2.0 - Mais funcionalidades, menos código.

por Miguel Ferreira - miguel.ferreira@dotnetraptors.com.br

Fornecendo melhor desempenho, flexibilidade e redução no trabalho de codificação, o ASP.NET 2.0 vem para convencer os desenvolvedores que continuam criando aplicações em produtos concorrentes, ou mesmo no ASP tradicional, a migrar para o .NET. É meu objetivo mostrar algumas das muitas novidades que estão sendo preparadas para a versão final do ASP.NET 2.0.

Diversas funcionalidades requisitadas, estão sendo implementadas e estarão disponíveis com melhorias que vão desde controles especializados à IDE do Whidbey. Estas melhorias vem em diversas frentes:

  • Building block services - funcionalidades básicas que podem ser utilizadas por uma ampla gama de aplicações. Tomemos como exemplo, o suporte a filiação: um conjunto de APIs bem definidas permitem o armazenamento dos dados dos usuários em uma variedade de back-ends (SQL Server, Active Directory ou outros repositórios).

  • Page Frameworks - permitem criar funcionalidades de navegação no website.

  • Novos controles - construídos sobre os novos serviços e funcionalidades.

  • Visual Studio .NET - IDE melhorada e mais produtiva com servidor web embutido.

Este artigo foi baseado no Community Technolgy Preview de Março de 2004 e toda informação contida aqui é passível de ser alterada.

Nesta página

Building Block Services
Page Framework
Novos Controles
Whidbey
Conclusão

Building Block Services

O ASP.NET 2.0 introduz uma série de serviços constituintes que são, geralmente, requeridos na maioria das aplicações web modernas. Estes serviços constituintes visam substituir códigos proprietários em muitos dos casos. Alguns exemplos incluem:

Cadastramento ou Filiação - A maioria dos sistemas de internet atuais requer que o usuário se cadastre afim de obter acesso às informações e/ou funcionalidades especializadas. Este requerimento implica em algoritmos de validação de usuários e senhas, armazenamento seguro, procedimento de recuperação de senha perdida, entre outros.

As versões anteriores do ASP.NET requeriam que toda esta infraestrutura fosse criada pelo desenvolvedor. Já o ASP.NET 2.0 automatiza o processo com ferramentas que definem o schema do Banco de dados e componentes que processam a autenticação.

Personalização - O ASP.NET 2.0 permite a personalização do site com informações comuns, como o primeiro e o último nome do usuário, além de poder acumular informações de usuários não autenticados para, se for o caso, após a autenticação, associar estas informações com um determinado registro. Sites de comércio eletrônico, via de regra, permitem que o usuário encha o carrinho de compras para, só então - após a autenticação - associar este carrinho a um usuário e completar a transação.

Caching - Aqueles que puderam ler meu artigo sobre CACHING no ASP.NET (MSDN Magazine Dez. 2003) poderão verificar que uma das deficiências do sistema de dependência do cache da versão atual, para a qual propus um artifício técnico na ocasião, tem solução prevista para a versão 2.0.

Costumeiramente colocamos informações recuperadas do banco de dados no cache, acarretando melhoria na performance e evitando buscas desnecessárias no back-end. No ASP.NET 2.0, além dos recursos já discutidos anteriormente, teremos a tão esperada dependência associada ao banco de dados. A granularidade desta funcionalidade depende do banco de dados. O SQL Server 7.0 e 2000 permitem a invalidação por modificações na tabela (table level), mas uma maior granularidade (row level) poderá ser obtida no SQL Server 2005 (YUKON).

Podemos, agora, inserir um objeto no cache por meio de uma linha de código similar a:

Cache.Insert("Categorias", ds, new SqlCacheDependency ("Northwind", "Categories");

Repare no objeto do tipo SQLCacheDependency ocupando o lugar de um tipo velho conhecido nosso: CacheDependency.

No caso acima, se a tabela de categorias for alterada o DataSet é removido do cache. Da mesma forma podemos usar a dependência do banco no Cache de Saída (Output cache). Vejamos:

 <%@ OutputCache Duration="15" VaryByParam="None" SqlDependency="Northwind:Categories" %>

A diretiva acima instrui a expiração da página em cache após 15 segundos ou ao ter sido alterada a tabela de Categorias (Categories) no banco de dados Northwind. O que ocorrer primeiro.

Como não poderia deixar de ser, para a dependência do banco funcionar corretamente, no caso do SQL Server 7.0 e do 2000, precisamos configurar o ambiente. Isto de dá por meio do Aspnet_regsqlcache.exe ou do Webadmin.axd (ferramenta administrativa - GUI). Desta forma são criadas algumas triggers e uma tabela especial que é frequentemente consultada (a cada 5 segundos por uma thread de background) pelo ASP.NET para verificar as alterações. Este procedimento é desnecessário no SQL Server 2005.

Page Framework

Cc517981.aspnet2_01(pt-br,MSDN.10).gif

Figura 1. Master Page

Master Pages – A maioria dos webmaster procuram obter um visual consistente através das páginas de seus websites. De fato, não temos herança visual no ASP.NET, e funcionalidades como o suporte a templates ficaram para o ASP.NET 2.0.

Cc517981.aspnet2_02(pt-br,MSDN.10).gif

Figura 2. Content Page

Cc517981.aspnet2_03(pt-br,MSDN.10).gif

Poderemos definir (Figura 1.) páginas mestre, que especificam a disposição geral / layout de um conjunto de páginas, e criar páginas de conteúdo (Figura 2.) baseadas nestas páginas mestre. Este recurso permite a alteração do visual em uma página mestre implicando na consequente alteração de todas as páginas de conteúdo associadas. Algumas ferramentas no mercado tem funcionalidade similar, mas demandam a (re)geração e (re)publicação de todas as páginas. O ASP.NET 2.0, ao contrário, só demanda a publicação da nova página mestre. Vejamos as diretivas:

Página Mestre:

<%@ master language="C#" %>

Página de conteúdo:

<%@ page language="C#" masterPageFile="~/MasterPage.master" title="Untitled Page"%>

Temas e peles – Uma pele é um conjunto de propridedades que pode ser aplicado à um controle. Temas por sua vez, é uma coleção de peles, junto com informações sobre CSS, imagens, etc... Combinando-se temas e peles com funcionalidades de personalização, pode-se permitir aos usuários personalizar a aparência do site.

Cc517981.aspnet2_04(pt-br,MSDN.10).gif

Novos Controles

O ASP.NET 2.0 inclui cerca de 50 novos controles (ver amostra ao lado), muitos deles construídos sobre os novos serviços e funcionalidades. Um desenvolvedor pode arrastar para o webform os novos controles de login que usam os serviços de filiação para permitir ao usuário se registrar, autenticar, reconfigurar sua senha, entre outros. Adicionalmente, o controle é desenhado para aceitar temas e peles e trabalhar com o sistema de UI adaptativa, podendo renderizar-se apropriadamente em dispositivos como telefones celulares e pocket PCs.

Alguns controles lêem a hierarquia do site de um conjunto de arquivos xml como por exemplo o menu lateral (System.Web.UI.WebControls.Menu) da Master Page (Figura 1.) para criar vínculos de navegação automáticos. Estes arquivos podem ser criados manualmente, por meio do Visual Studio ou populados com informações do banco de dados tais como um sistema de gerenciamento de conteúdo (Content Management System).

Cc517981.aspnet2_05(pt-br,MSDN.10).gif

Whidbey

Uma mudança fundamental no processo de desenvolvimento é a possibilidade de se criar aplicações web SEM A NECESSIDADE DE SE TER O IIS INSTALADO. Isto se deve ao fato de o Whidbey possuir seu próprio servidor web embutido de forma que não é necessário o acesso administrativo para o debug das aplicações. Este servidor visa, entre outros objetivos, aumentar a segurança no desenvolvimento uma vez que estas aplicações não poderão ser acessadas remotamente, só estando disponíveis ao navegador local. Ao se fechar o Whidbey, o servidor embutido é removido da memória.

Cc517981.aspnet2_06(pt-br,MSDN.10).gif Cc517981.aspnet2_07(pt-br,MSDN.10).gif

Este recurso não proíbe àqueles que desejam continuar a criar suas aplicações direto no IIS de fazê-lo: apenas abre uma nova possibilidade. Na figura ao lado vemos os repositórios das aplicações web, entre os quais percebemos projetos criados diretamente no File System e executados pelo servidor http embutido além do Local IIS, FTP Sites e Remote Sites.

Suporte ao code inline – historicamente o ASP.NET tem permitido aos desenvolvedores a utilização tanto do code-behind como do code-inline. No primeiro a tags de marcação são armazenadas em um arquivo separado do código fonte, no segundo, ambos coexistem no mesmo arquivo. De fato, uma das funcionalidade mais requisistadas pelos desenvolvedores que preferem o modelo inline (um dos motivos desta preferência é a redução no número de arquivos a serem mantidos e distribuídos. Não se esqueça que não existe diferença no desempenho dos modelos) é o suporte ao intellisense.

Cc517981.aspnet2_08(pt-br,MSDN.10).gif

Preservação do HTML original – Este sempre foi uma demanda daqueles que utilizam ferramentas de terceiros para a criação do layout/design das páginas e este é um dos compromissos do Whidbey: Não alterar o html existente, nem mesmo espaços em branco, identação e/ou quebra de linhas.

Cc517981.aspnet2_09(pt-br,MSDN.10).gif

Tag outlining e Tag navigator - Por mais acostumado que o programador esteja a trabalhar diretamente no HTML, a medida que a complexidade aumenta, a dificuldade de visualização dos aninhamentos causa uma queda de produtividade. Para atender à esta demanda foram implementados o tag outilining e o tag navigator.

No HTML, tag outlining é a facilidade de expandir e recolher blocos de elementos aninhados ou não (Figura acima) permitindo-nos, ao se editar o documento, focar apenas nas regiões desejadas.

O tag navigator (Figura abaixo) é o recurso que permite identificar a localização de uma determinada Tag dentro da estrutura de um HTML complexo. Uma funcionalidade bem útil associada ao Tag navigator é a possibilidade de se selecionar toda uma tag, incluindo seu conteúdo/elementos filhos, ou apenas seu conteúdo/elementos filhos. O Whidbey permite, ainda, a navegação facilitada entre o Design, Source (Markup) e code-behind (Server Code) por meio de um único clique na barra de navegação ou por meio de atalhos como CTRL+PgDn ou CTRL+PgUp (já existentes na versão atual).

Cc517981.aspnet2_010(pt-br,MSDN.10).gif

Navegador alvo e validação – A nova IDE permite a definição do padrão HTML ou mesmo do navegador alvo ao se criar documentos de markup. Podemos, por exemplo, definir que o HTML sendo editado deverá renderizar corretamente em versões do Internet Explorer 3.02/Netscape Navigator 3.0 (Figura abaixo).

O documento será, portanto, validado em tempo real à medida que digitamos no editor, e os erros de validação serão agregados e exibidos na janela de tarefas (task list).

Cc517981.aspnet2_011(pt-br,MSDN.10).gif

Smart tasks – Ao se adicionar controles ao designer, um pop up com as listas de tarefas mais comuns associadas ao controle em questão é exibido. Pode-se, por exemplo, utilizar esta lista para se configurar as propriedades do controle ou mesmo, como no caso de um GridView (abaixo), indicar a fonte de dados com a qual este deverá se associar. No caso do GridView podemos também adicionar e remover colunas, configurar a paginação, ordenação, etc...

Cc517981.aspnet2_012(pt-br,MSDN.10).gif

Conclusão

Sumarizei neste artigo algumas funcionalidades notáveis que estão agendadas para a próxima versão do ASP.NET 2.0. Existem ainda diversas outros recursos como os novos DataSource Controls, a ferramenta administrativa (GUI) que facilita a tarefa de ler e escrever as configurações, o novo modelo de compilação, o cross page posting, que quebra a limitação de as páginas só postarem para elas mesmas, entre dezenas de outros recursos, sobre os quais falarei em outra ocasião.

Mostrar: