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

 

DER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt">

Nota do DevMan

O projeto Moonlight é um projeto open source desenvolvido pela Novell, com o apoio da Microsoft, para usar o Silverlight em Linux. Veja mais em http://www.mono-project.com/Moonlight.

 

Sem dúvida, você pode criar uma aplicação Web que traga a mesma experiência de uma aplicação desktop, mas para isso você deverá trabalhar com Ajax e criar milhares de linhas de código em JavaScript, o que, sem dúvida, não é uma tarefa simples.

Por outro lado, quando você usa Silverlight, pode criar aplicações muito ricas, com mídia, animações, usando controles semelhantes aos que usaria em uma aplicação desktop, usando sua linguagem de programação preferida: você pode criar programas em Silverlight usando não só o C# ou o VB.net. Você também pode usar IronPyton, IronRuby ou mesmo JScript gerenciado. Para aqueles que gostam de Delphi, a RemObjects tem o Oxygene, que será a base para o Delphi Prism (a nova versão do Delphi), a ferramenta da Embarcadero para desenvolvimento de aplicações .Net (inclusive Silverlight) baseadas em linguagem Delphi, que funcionará como um plug-in tendo como ambiente principal o VS. Isto quer dizer que você pode criar aplicações para a Web com usabilidade semelhante a uma aplicação desktop, usando o Visual Studio, sem precisar utilizar diversas linguagens de programação. Sem dúvida, é um grande avanço, não?

Por ser uma tecnologia voltada à Web, o Silverlight tem acesso limitado à máquina do usuário: embora possamos abrir um arquivo local usando a caixa de diálogo de abrir arquivos ou usando Isolated Storage, não podemos acessar diretamente bancos de dados no servidor, pois não temos acesso ao módulo cliente do banco de dados (como uma aplicação desktop) e não estamos executando no servidor (como uma aplicação ASP.Net): as aplicações Silverlight são empacotadas num arquivo com extensão xap e executadas no browser do cliente, graças a um plug-in de 4MB que é instalado na máquina do usuário.

 

Nota do DevMan

Isolated Storage é uma área de armazenamento local fora do cache do browser que permite armazenar pequenas porções de dados em uma área acessível ao usuário ou à aplicação. Ela fica em uma área escondida no diretório privado do usuário. O tamanho default desta área é de 1MB, porém isto pode ser alterado.

 

Nota do DevMan

Um arquivo xap é, na realidade, um arquivo zip contendo as dlls requeridas pela aplicação e os arquivos necessários para sua execução. Este arquivo é carregado no browser, descompactado e executado pelo plug-in. Se você quer ver o conteúdo de um arquivo xap, crie uma aplicação Silverlight, renomeie o arquivo xap resultante para zip e abra-o num editor de arquivos zip.

 

Por isso, não podemos fazer uma aplicação cliente-servidor, acessando diretamente o banco de dados, como poderíamos fazer com aplicações desktop ou ASP.Net. Teremos que criar uma aplicação multi-camadas, onde a aplicação Silverlight acessa uma camada intermediária de acesso a dados usando um serviço Windows Communication Foundation (WCF) que, por sua vez, acessa o servidor.

 

Nota do DevMan

Windows Communication Foundation (WCF) faz parte do .net Framework 3.0 e é a tecnologia de comunicações que engloba as tecnologias de comunicações que a antecederam: Web Services, remoting, message queues e transações distribuídas.

 

Embora isso seja um pouco mais complicado, este tipo de arquitetura traz um benefício muito grande: usando camadas desacopladas, podemos facilmente substituir uma camada, sem precisar refazer todo o sistema. Caso queiramos substituir o cliente Silverlight por um WPF, WinForms ou mesmo ASP.Net, basta criar uma nova camada de apresentação que acessa o nosso Web Service. E nada impede que criemos mais de uma camada de apresentação para acessar os dados: WPF para usuários baseados em estações Windows com .net Framework 3.5, Silverlight para usuários Windows ou Mac em laptops, aplicações Compact Framework para usuários com Windows Mobile ou ASP.Net para todos os outros. Nossas regras de negócio e o acesso aos dados permanecem inalterados.

 

Nota do DevMan

Windows Presentation Foundation (WPF) é a tecnologia de interfaces para criação de aplicações desktop introduzida no .net Framework 3.0. Ela permite a separação entre código e interface e usa a mesma linguagem de markup usada no Silverlight (XAML).

 

O acesso a dados será feito com LINQ to SQL, uma tecnologia introduzida no .net Framework 3.5, que permite o mapeamento objeto-relacional usando bancos de dados SQL-Server. A partir de um banco de dados, o LINQ to SQL cria um modelo de classes, onde passamos a acessar os dados de maneira orientada a objetos: não precisamos mais nos preocupar com select ou insert no banco de dados, pois não estamos mais trabalhando com tabelas, e sim com classes.

Usando LINQ to SQL, toda a manipulação de dados é feita na classe. Por exemplo, se tivéssemos no banco de dados uma tabela chamada Clientes, ela seria mapeada para uma classe com nome Cliente e a inserção de dados seria feita com um código semelhante a:

 

Cliente cli = new Cliente();

// Altera os dados do cliente atual

 

Para recuperar dados destas classes mapeadas, usamos uma linguagem de consulta muito semelhante à do SQL. Por exemplo, quando queremos listar os clientes de Londrina, podemos criar algo como:

 

var query = from c in dc.Clientes

                 where c.Cidade == "Londrina"

                 select c;

 

Aqui cabe explicar um pouco o código anterior. Quando declaramos uma variável com a palavra-chave var, introduzida no C# 3.0, não estamos querendo dizer que esta variável não tem tipo, ou que o C# deixou de ser uma linguagem fortemente tipada. Apenas estamos deixando para o compilador deduzir o tipo de variável, o que ele pode fazer analisando a expressão do lado direito da igualdade (na realidade, query é do tipo IQueriable<Cliente>). Em seguida, usamos from c in dc.Clientes. A variável dc representa o contexto de dados (DataContext), que contém as classes e as funções para fazer o mapeamento objeto-relacional, manipulando o banco de dados e gerando as informações para as classes. Uma das classes do DataContext é Clientes, que contém uma coleção de elementos do tipo Cliente. No caso, estamos fazendo uma consulta à coleção, filtrando os dados com a palavra-chave where e, finalmente, selecionando os clientes filtrados. A variável query contém os clientes de Londrina e pode ser usada quando queremos apresentar estes dados.

Como falamos anteriormente, não podemos usar os dados da consulta diretamente em nossa aplicação Silverlight, pois não temos acesso ao banco de dados. Precisamos de uma camada que acesse os dados e ligá-la à camada de apresentação, com Silverlight. Para isso, usamos um Web Service, que será criado com WCF e fará a ponte entre os dados e a apresentação.

 

Instalando o Silverlight e iniciando o projeto

Antes de começar a trabalhar com Silverlight, você deve baixar e instalar algumas ferramentas:

· Visual Studio SP1 – você pode usar qualquer versão do Visual Studio, inclusive as versões Express. Você pode atualizar a versão para o SP1 e, neste caso, o .net Framework 3.5 SP1 será também instalado. Se não quiser instalar o SP1, deve baixar e instalar o SP1 do Framework. As versões Express com o SP1 podem ser baixadas gratuitamente em http://tinyurl.com/vs2008xpsp1;

· Silverlight Tools for Visual Studio 2008 – é um conjunto de ferramentas que ajuda a criação de aplicações ...

Quer ler esse conteúdo completo? Tenha acesso completo