DevMedia no Tech Ed US – Cobertura do maior evento para desenvolvedores Microsoft

Report#2

Dentre as muitas novidades apresentadas até aqui no Tech Ed, procurei focar minha atenção em uma tecnologia que com certeza representa um marco na história da plataforma Windows e das ferramentas de desenvolvimento Microsoft. Estou falando do WinFX, recentemente renomeado para .NET Framework 3.0 (ainda bem!), conforme consta no blog de SomaSegar da MS (http://blogs.msdn.com/somasegar).

Nas várias palestras e sessões que assisti a respeito, e também conversando com alguns engenheiros da Microsoft, procurei saber mais sobre a tecnologia e o que ela representa para nós desenvolvedores .NET. Conto um pouco para vocês sobre o que vi por aqui!

O que é “WinFX”? Um breve histórico

Primeiro, uma breve explanação sobre o que é “WinFX”. Durante anos (20, para ser mais preciso), o Windows que conhecemos utilizou uma vasta API, um conjunto de procedures, rotinas e códigos para prover sua funcionalidade e permitir que novas aplicações fossem criadas para a plataforma. Se você já foi um programador C, ou Pascal, deve lembrar que tudo era feito de forma procedural, sem o uso de técnicas de orientação a objetos.

A MS bem que tentou criar um novo modelo de desenvolvimento OO em cima do Win32, o que chamou de COM, mas tinha muitas limitações. Essas rotinas da API eram organizadas por nome e utilizavam tipos primitivos (PChars, Cardinal etc.). Alguns exemplos de rotinas são GetWindowText, SetWindowPos. Linguagens de desenvolvimento criavam então frameworks sobre essa API, para tornar a programação mais intuitiva e orientada a objetos.

 

O .NET Framework, quando lançado, permitiu que desenvolvedores utilizassem um conjunto de classes e objetos de forma consistente, que encapsulavam a API Win32. Como uma plataforma, aplicações deixam de “enxergar” diretamente a API Win32, apesar dela ainda existir “por baixo”. O .NET funciona então como uma “camada” entre o SO e sua aplicação. E onde entra o WinFX nessa história?

Como novas aplicações rodam sobre o .NET, a MS pôde agora finalmente reimplementar o Windows, retirando a API Win32 “de baixo” e incluindo o .NET diretamente no Kernel. Sim, finalmente teremos um sistema operacional totalmente OO! (ou boa parte dele). O WinFX é o novo modelo de programação do Windows Vista, e foi construído em cima do .NET Framework 2.0. Devido a confusão gerada entre WinFX x .NET (porque os desenvolvedores começaram a perguntar onde estava o .NET no Windows Vista), a MS decidiu renomear a tecnologia para .NET Framework 3.0.

 

O lançamento do .NET por volta do ano de 2000 funcionou como uma espécie de estratégia. Se fosse necessário esperar o lançamento do Vista para que pudéssemos começar a desenvolvedor no novo modelo (.NET), provavelmente seria tarde demais. O .NET permitiu que desenvolvêssemos ontem (.NET 1.x e 2) deixando as aplicações prontas para o amanhã (Windows Vista). Funcionou como um “contrato”.

O Windows Vista foi desenvolvido sobre quatro grandes pilares:

·         Windows Presentation Foundation - WPF, conhecido pelo codename de “Avalon”;

·         Windows Communication Foundation - WCF, conhecido pelo codename de “Indigo”;

·         Windows Workflow Foundation - WF;

·         “Infocard” – ainda em codename;

O WPF é a nova tecnologia responsável pela apresentação gráfica no WinFx. Pense como uma evolução da tecnologia Windows Forms, porém permitindo a criação de UIs muito mais sofisticadas, atraentes, fazendo uso de recursos gráficos de última geração. Faz uso da placa gráfica, antes só usada por jogos. Acredite, sua aplicação Windows vai se parecer muito mais como uma tela inicial / menu de um jogo de PlayStation do que com uma aplicação Windows como conhecemos hoje! (aquelas com botões cinzas e o tradicional menu Arquivo ... ajuda). Mais adiante coloco uns screen-shots e comento mais sobre o WPF.

 

O WCF unifica a suíte existente de tecnologias distribuídas .NET, em um único modelo de programação. É uma “camada” sobre as tecnologias existentes para esse propósito, incluindo Enterprise Services (“COM+”), MSMQ (Message Queue), .NET Remoting e ASMX (Web Services), porém utilizando um modelo orientado a serviços. O Infocard simplifica a implementação de segurança no acesso a recursos e informações compartilhadas na Internet. WF é o modelo de programação para construção de aplicações baseadas em Workflow.

 

 

WPF

Aqui na conferência conversei um pouco com Norris Cheng, um dos engenheiros da Microsoft do time do WPF. Comentou que existem dois tipos de aplicação WPF: Windows e Web. Perguntei como ficaria o ASP.NET no .NET 3.0, se existe a alternativa de se utilizar WPF na Web. Uma aplicação WPF Web na verdade é uma aplicação Desktop tradicional, que roda dentro de um browser.

Quando o usuário acessa aplicação, o download é feito automaticamente para a máquina local, rodando dentro no Internet Explorer (não funciona em outros browsers). Nesse caso, não existe HTML, o que se vê é um formulário com controles Desktop. Quem se encarrega de controlar o download, publicação e controle de versão da aplicação que é instalada na máquina local, é uma tecnologia chamada ClickOnce, já disponível hoje para aplicações Windows Forms (tive a oportunidade de assistir uma palestra sobre a tecnologia, ministrada por Saurabh Pant).

 

Se uma nova versão da aplicação for distribuída no servidor, dependendo do tipo de publicação, o ClickOnce faz o download e atualização automática, entre uma série de outras vantagens. Com isso, temos a facilidade do modelo de distribuição Web disponível para aplicações Desktop.

Nesse caso, uma aplicação WPF Web não substitui uma aplicação ASP.NET. Aplicações ASP.NET têm suas vantagens: são distribuídas apenas no servidor e renderizam HTML para qualquer browser (inclusive outro SO). Além disso, para rodar aplicações WPF Web, o usuário precisa ter o .NET Framework 3.0 Runtime (finalmente o pessoal resolveu dar um nome descente ao “Redistributable”!), além de ter funcionalidade limitada por questões óbvias de segurança. Uma vantagem é que aplicações WPF Web e WPF Desktop são desenvolvidas exatamente da mesma forma (apesar de terem templates diferentes no VS), a única coisa que muda é a forma de publicação.

Perguntei ao Norris se o Windows Vista realmente foi todo escrito sobre o WinFx. Comentou que algumas partes do SO ainda continuam com código não gerenciado. Acredito que o mesmo vale para o Office. A seguir, pedi ao Norris que mostrasse algumas aplicações feitas em WPF, tirei alguns screen-shots, como você pode ver abaixo.

 

 

Na figura abaixo, ele mostrou como é simples incluir uma imagem em um menu ou ListBox:

 

 

E acredite, esses “peixinhos” aí são um Button dentro de outro!

 

 

Também mostrou como o WPF pode ser usado para criar aplicações estilo documento, que se ajustam conforme o tamanho da tela e redimensionamento:

 

 

Vídeos podem ser facilmente embutidos em aplicações WPF, rotacionados e exibidos simultaneamente com outros vídeos:

 

 

Na figura abaixo, os itens que você vê no estilo “box” no canto inferior direito, acredite, são itens de um ListBox.

 

 

Vale lembrar que o WPF utiliza um novo modelo de codificação, um pouco diferente do Windows Forms. Os controles de tela são representados agora em um arquivo com a extensão XALM (Extensible Application Markup Language), e não ficam mais codificados no InitializeComponent, comum em uma aplicação Windows Forms. Pense nesse arquivo como um ASPX do ASP.NET, porém usado para aplicações WPF.

Aplicações Windows Forms precisarão ser migradas quando forem rodar no WPF. Para pegar umas dicas sobre como seria essa migração, assisti aqui no evento a palestra “Windows Forms: How to Build Windows Forms Applications Today That Will Interoperate Well with Windows Presentation Foundation”, de Scott Morrison. Abaixo coloquei um exemplo de como seria a representação de alguns controles simples em uma aplicação WPF Web:

 

<Page x:Class="Page1"

   xmlns="http://schemas.microsoft.com/winfx/avalon/2005"

   xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005"

   >

   <StackPanel>

 

      <Button Click="ButtonClick"

              HorizontalAlignment="Left"

              Margin="10,5,10,5"

              Width="120">YES!

      Button>

   StackPanel>

Page>

Criando aplicações WPF no VS 2005

Uma boa notícia é que, mesmo sem o Windows Vista instalado, já é possível criar aplicações WPF no Windows XP SP2 ou Windows 2003 Server. E também rodá-las. Podemos utilizar o Visual Studio 2005, instalando algumas extensões e o WinFX. Todos os downloads estão disponíveis em:

 

http://msdn.microsoft.com/windowsvista/downloads/products/getthebeta/

 

Gostaria de mostrar um pequeno tutorial aqui de como criar uma aplicação HelloWorld, acho que o melhor lugar será na revista MSDN Magazine, nas próximas edições vou mostrar como criar algumas aplicações demo com a tecnologia. Abaixo alguns screen-shots de uma aplicação WPF bastante simples que criei no Hands on Lab aqui no evento:

 

 

Para mais informações sobre o WinFX e Windows Vista, acesse:

 

http://msdn.microsoft.com/windowsvista/

 

http://msdn.microsoft.com/winfx/

XPS

Uma outra interessante palestra que assisti foi “Windows Vista As a Document Platform: Programming XPS and 2007 Microsoft Office System Documents with WPF”, por Jesse McGatha, Marcio Mello. Foi apresentado o XPS (XML Paper Specification), um modelo de representação de documentos baseado em XML. Indo direto ao assunto, esse é o modelo usado pelo Office 2007, seus documentos agora são salvos em formato XML, e não mais em um formato binário e proprietário (por exemplo um .DOC). Ao salvar um documento no Word, você dá a extensão .DOCX. Qual o objetivo?

 

Ao usar um padrão já aceito e consolidado no mercado (o XML), aplicações “não-office” podem facilmente acessar o conteúdo de um documento, modificá-lo etc. Além disso, aplicações do próprio Office terão uma integração bem mais forte, justamente por utilizarem um formato padrão. É por esse motivo que podemos facilmente visualizar documentos de dentro de uma aplicação WPF.

No exemplo feito por Jesse, ele criou um documento DOCX no Word 2007 e a seguir renomeou para .ZIP. Ao abrir pelo shell, uma surpresa (eu reproduzi na figura abaixo, onde criei um documento simples com a palavra “Teste”). Temos acesso à estrutura do documento via shell! Se você excluir uma imagem do diretório, por exemplo, estará retirando do documento. Se trocar a figura, todos os locais do DOC que apresentam a imagem já refletirão a mudança. Se alterar o texto no arquivo do documento (observe que o que digitei fica no arquivo XML!), ele será exibido quando abrir o DOC.

E veja q não é preciso ter o Office. Com isso, você pode programaticamente interagir com o Word (e outras ferramentas) sem conhecer o formato proprietário do arquivo. Será possível criar uma planilha do Excel sem ter o Excel e assim por diante.

 

 

 

 

Mais informações em www.microsoft.com/xps

Fique ligado!

Amanhã falarei um pouco das novidades que serão apresentadas em outras palestras que assistirei, incluindo VSTO (Visual Studio Tools for Office), VSTS (Visual Studio Team System), dicas para aumentar a performance de aplicações ASP.NET e novidades do C# 2.0 e C# 3.0. Até lá!