Olá pessoal, tudo certo?

Em posts anteriores, falamos um pouco sobre a evolução da arquitetua WinDNA para as mais novas tecnologias da plataforma .NET. Veja os links:

Do Windows DNA para o mundo orientado a serviços : a visão Software + Serviço e a Cloud
Do Windows DNA para o mundo orientado a serviços : uma proposta para estudo.
Do Windows DNA para o mundo orientado a serviços : cada caso é um caso?

Alguns amigos confessaram lágrimas saudosas, quando viram o desenho do WinDNA... :)

Como descrito acima, o ASP.NET + AJAX + Silverlight 2.0 aparece como alternativa para interfaces web em nossas aplicações. Assim, vamos falar um pouco de Silverlight neste post.

image

Para começar bem, veja um exemplo de Silverlight 2.0 em ação...

Zoo de Sorocaba!! :)
Ref.: http://zoo.sorocaba.sp.gov.br/

Bacana né? É nosso primeiro grande caso de Silverlight brasileiro.  :)

Silverlight é uma tecnologia que permite a criação de experiências ricas para o usuário na Web, com alta interatividade e conteúdo multimídia na Internet. Com o Silverlight é possível criar interfaces de forte apelo visual (RIA - Rich Internet Application), conectadas a transações e bases de dados, criando uma categoria nova de aplicações, muito aderente aos padrões exigidos pela Web 2.0.

Outro ponto muito importante sobre Silverlight é sua portabilidade. Como vimos no exemplos dos impostos, através de um plug-in, aplicações Silverlight podem ser executadas em praticamente todas as versões de browsers do mercado, como Internet Explorer, Firefox (para Mac e PC), Safari, etc.

Silverlight é baseado em XAML (pronuncia-se zamel) ou eXtensible Application Markup Language, que é essencialmente XML. Isso trás uma série de benefícios, como:

  • XAML faz com que Silverlight seja indexável pelos motores de busca de hoje, uma vez que não é um pacote em formato binário;
  • Silverlight é acessível via o DOM - Document Object Model. Isso significa que as mesmas técnicas usadas hoje em AJAX para atualização de partes de uma árvores são válidas, para atualização de partes de uma aplicação Silverlight;
  • Silverlight é um subconjunto de recursos do WPF - Windows Presentation Foundation; Assim, todos o aprendizado sobre WPF pode ser transferido para o WPF/e;

De modo geral, uma aplicação Silverlight é formada por páginas .XAML e arquivos de comportamento para o Code Behind (em VB.NET ou C#), implementando ações disparadas pelo usuário. A solução, uma vez compilada, gera um assembly .NET, que deve ser executado no browser cliente, através do plug-in de Silverlight.

Para a chamada de uma aplicação Silverlight a partir de uma página na Web, indicamos o source da aplicação, como no exemplo a seguir:

<object data="data:application/x-silverlight," type="application/x-silverlight-2-b1" width="100%" height="100%">
 <param name="source" value="SilverlightApplicationWCAMB.xap"/>
 <param name="onerror" value="onSilverlightError" />
 <param name="background" value="white" />
</object>
 

A extensão .xap indica o pacote da aplicação Silverlight que será chamada, no exemplo, a SilverlightApplicationWCAMB.xap. De fato, o formato .xap é um zip, que encapsula os arquivos da aplicação, nos moldes do que acontece com o pacote .jar de um Applet Java.

No exemplo acima, o pacote SilverlightApplicationWCAMB.xap encapsula os arquivos:

  • AppManifest.xaml
  • SilverlightApplicationWCAMB.dll
  • System.Windows.Controls.dll
  • System.Windows.Controls.Extended.dll

Para saber o que o pacote .xap está trazendo, mude a extensão do seu arquivo para MySilverlightApplication.xap.zip. :) 

Uma pergunta que sempre surge é sobre o ambiente de desenvolvimento para Silverlight. Nesse caso, citamos a família Microsoft Expression, com os produtos Expression Studio, Expression Web, Expression Blend™, Expression Design, Expression Media e o Expression Encoder.

Nessa família, o Microsoft Expression Blend 2.5, atualmente em versão Preview, irá suportar os recursos do Silverlight 2.0 de forma completa, fornecendo um ambiente definitivo para o desenvolvimento de interfaces Web com recursos Silverlight.

Download - Microsoft Expression Blend 2.5 March 2008 Preview (27 MB)
Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=32A3E916-E681-4955-BC9F-CFBA49273C7C&displaylang=en

image

Mas no Visual Studio 2008, com a instalação do kit para Silverlight 2.0 você também recebe 2 templates básicos de projeto:

  • Silverlight Application
  • Silverlight Class Library

Finalmente, vale citar que quando pensamos no roadmap de produtos para Web na plataforma Microsoft, encontramos dois pacotes hoje em dia: o ASP.NET 3.5 Extensions e o Silverlight 2.0 Beta 1.

ASP.NET 3.5 Extensions apresenta um conjunto de novos recursos que são adicionados ao Visual Studio 2008 e .NET 3.5, como:
- ASP.NET MVC
- ASP.NET AJAX improvements
- ASP.NET Dynamic Data Support
- ASP.NET Silverlight Support
- ADO.NET Data Services
- ADO.NET Entity Framework

Download - ASP.NET 3.5 Extensions Preview (3.6 MB)
Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=A9C6BC06-B894-4B11-8300-35BD2F8FC908&displaylang=en

Enquanto que o próprio Silverlight 2.0 empacota recursos como:
- Framework para interface com usuários rico; 
- Controles ricos;
- Suporte de rede otimizado para RIA;
- Biblioteca de classes básica para suporte a RIA, etc.

Download - Microsoft Silverlight Tools Beta 1 for Visual Studio 2008 (54.5 MB)
Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=e0bae58e-9c0b-4090-a1db-f134d9f095fd&displaylang=en

Para saber mais...

O blog do ScottGu é uma dica sempre presente:

ScottGu's Blog : First Look at Silverlight 2
Ref.: http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx

ScottGu's Blog : First Look at Using Expression Blend with Silverlight 2 <<< Muito Bom!!!
Ref.: http://weblogs.asp.net/scottgu/archive/2008/02/28/first-look-at-using-expression-blend-with-silverlight-2.aspx

No próximo post, vamos falar um pouco sobre a arquitetura RIA - Rich Internet Application - e quais são os componentes e interações de uma aplicação baseada em Silverlight

Por enquanto é só! Até o próximo post :)

Waldemir.