msdn12_capa.JPG

Clique aqui para ler todos os artigos desta edição

Coluna Encarando o Desenvolvedor

SmartClients

A maioria dos novos aplicativos desenvolvidos hoje é feita para a Web. “Para a Web” quer dizer que o aplicativo roda em um servidor e troca páginas HTML com um navegador como o Internet Explorer ou Mozilla. O aplicativo pode ser “mais ou menos burro”, dependendo da quantidade de scripts de cliente (“JavaScript”) que se coloca na página.

Caso a página não contenha nenhuma linha de script de cliente, ela é HTML “pura” e todo o código é executado no servidor, mesmo para as coisas mais simples como validar se um campo foi preenchido. Hoje em dia é muito difícil encontrar uma página assim, até porque ferramentas como o ASP.NET geram automaticamente scripts de cliente para coisas relativamente simples, como validação de campos texto e processamento imediato (“postback”) de ações como seleção em “listboxes” ou clique em links.

Algumas coisas mais sofisticadas, como menus de navegação, estão disponíveis gratuitamente na Web e também não dão muito trabalho para incluir nos aplicativos, até porque o script não é compilado e é fácil conseguir “inspiração” em outros sites.

Até aqui, tudo bem. Infelizmente, os “chatos” dos usuários estão acostumados com um padrão de interface muito mais interativa e agradável, que já é oferecida atualmente pelos aplicativos GUI escritos com ferramentas tradicionais como Visual Basic ou Delphi. Na maioria dos casos é até possível imitar estes mesmos recursos como barras de ferramentas e caixas de diálogo através do uso de scripts de cliente desenvolvidos especialmente para os aplicativos.

As coisas ficam complicadas quando desejamos fazer coisas mais complexas como os scripts de cliente, especialmente relacionadas à lógica exclusiva dos aplicativos. Eu já vi aplicativos bastante completos rodando apenas no cliente, com interfaces que lembram à aplicativos dos tempos do Windows 3.11, com menus, barras de ferramentas e caixas de diálogo. Fico imaginando o trabalho que deu para fazer esse tipo de coisa em uma linguagem pobre e sem tipos como o JavaScript e com um ambiente de desenvolvimento e depuração bastante limitado.

A programação de scripts de cliente é, em geral, muito mais complexa e menos produtiva que a programação de aplicativos comuns em Visual Basic. Esta perda de produtividade é enorme, usualmente na casa de uma ordem de magnitude. Na verdade, uma página que envia scipts para o navegador é essencialmente um gerador de aplicativos e desenvolver geradores de aplicativos não é fácil.

A questão então é a seguinte: temos que manter o extremamente bem sucedido modelo de distribuição e atualização da Web, mas com maior produtividade no desenvolvimento de código no cliente. Efetivamente, nos últimos anos as ferramentas como o Flash da Macromedia ou mesmo applets Java tem sido usadas em situações onde se deseja um desenvolvimento no cliente mais fácil e/ou poderoso.

A popularização da plataforma .NET traz outra alternativa: os aplicativos SmartClient, capazes de ser distribuídos pela Web mas mantendo a interface Windows e com programação nas linguagens tradicionais do .NET como VB.NET ou C#. Outra alternativa surgida há a pouco tempo é hospedar esses aplicativos SmartClient ou mesmo controles dentro do Microsoft Office 2003 com o uso de um “kit” de desenvolvimento chamado VSTO – Visual Studio Tools for the Office System. Essa é alternativa interessante se for interessante integrar a funcionalidade de seu aplicativo com a funcionalidade de aplicativos Office 2003 como Outlook ou Excel.

Em qualquer dos casos, o modelo de desenvolvimento é idêntico ao feito hoje com ferramentas para Windows como o Visual Basic. Esse modelo é produtivo e permite a criação de aplicativos “espertos” nos quais os usuários terão uma “boa experiência”. Os aplicativos podem ser executáveis ou “pecinhas” – controles contidos em arquivos DLL.

A distribuição pode ser feita de várias formas. Pode ser um arquivo “.msi” de instalação tradicional, mas também pode ser um conjunto de arquivos em uma pasta no servidor Web. O Visual Studio .NET 2005 trará ainda uma tecnologia chamada “ClickOnce” que permitirá atualizações transacionais (“tudo ou nada”), mantendo versões anteriores e com possibilidade do aplicativo “saber” se está on-line ou off-line. Este modelo de distribuição baseado na Web é bastante atraente, pois permite que as atualizações de versão sejam feitas de forma centralizada e instantânea, como ocorre hoje na Web.

Os aplicativos SmartClient aliam as vantagens dos aplicativos com interface rica com a distribuição na Web.

Minha bola de cristal diz que ainda ouviremos falar muito de SmartClient no futuro.