POWERED BY
e-magazine
CODIFICANDO.NET
J A N / F E V 2 0 0 7
E D I Ç Ã O 6 N Ú M E R O 5 A N O I
Editorial
Parece que foi ontem, mas já estamos em 2008. Esta primeira edição do ano contempla excelentes mate-
riais e colunas e inicia uma fase em que a revista passa a lutar por um conteúdo mais ligado ao dia-a-dia
dos profissionais de tecnologia e desenvolvimento.
A revista Codificando.Net cresceu nos últimos tempos em relação ao número de downloads mas enco-
lheu em relação ao número de colaboradores. As portas estão abertas para toda comunidade. Nosso
editorial é totalmente aberto para contribuições da comunidade e estamos sempre aguardando que as
pessoas tomem o gosto por divulgar tecnologia.
Esta edição também apresenta mais dois editores Diego Nogare e Sergio Gonçalves (Ganso) com o obje-
tivo de dar um novo sangue ao nosso time e conseguirmos aumentar o conteúdo a cada edição.
Alexandre Tarifa
editor@codificandomagazine.net
Equipe
Editor:
Alexandre Tarifa
Emerson Facunte
Diego Nogare
Sergio Gonçalves
Fernando Borges (Capa)
Reporter
Alfred Myers
Colaboradores:
Feio Tomaz
Maurício Wieler
Diego Nogare
Alexandre Lopes
3
Entrevista - Lançamentos 2008
A revista Codificando e-Magazine através do repórter Alfred Myers, MVP de C#, realizou uma pesquisa por e-
mail com os principais nomes da tecnologia no Brasil, fazendo três perguntas sobre os lançamentos das versões
2008 das ferramentas de Desenvolvimento e Infra-Estrutura. As perguntas foram elaboradas pelo nosso repór-
ter de plantão Alfred Myers.
Perguntas:
1) Qual a principal novidade em 2008 do produto ou tecnologia na qual você é MVP?
2) Quais as ferramentas que não poderão faltar no seu computador em 2008?
3) Qual idéia, ferramenta, produto, tecnologia você acha que ganhará destaque em 2008? Por quê?
1) Acredito que 2008 deve ser o ano do Silverlight, com o lançamento do Silverlight 2.0 e a possibilidade de
desenvolver aplicativos .net para múltiplas plataformas no browser.
2) O Visual Studio 2008 é uma ferramenta bastante completa para o desenvolvimento de aplicações .Net, des-
de aplicações WinForms/WPF ou Silverlight até aplicações para Compact Framework ou Office.
3) O Silverlight deve ganhar destaque, com a possibilidade da criação de aplicações ricas para a Web. Com ele,
o XAML deve ganhar maior destaque e, por conseqüência, as atenções devem se voltar também para o
WPF, na criação de aplicações desktop.
1) As tecnologias Sharepoint (Windows Sharepoint Services 3.0 e Office Sharepoint Server 2007) estão enqua-
dradas na próxima onda (wave) de lançamentos da Microsoft; portanto, acredito que grandes novidades
neste contexto devem ser esperadas para 2009/2010!
Outrora, tenho acompanhado algumas movimentações interessantes para:
Suportabilidade do Windows Sharepoint Services 3.0 como uma role do Windows Server 2008
[lançamento confirmado para este ano] – sendo uma implementação anunciada pelos times de produto. Mas
há alguns meses atrás esta discussão foi novamente colocada em pauta, e a decisão final foi para a não im-
plementação desta funcionalidade por questões de flexibilidade e independência entre os produtos e, conse-
qüentemente, entre as versões/build´s dos mesmos.
A suportabilidade das tecnologias Sharepoint ao SQL Server 2008 – onde acredito que seja praticamente
nativo, sem grandes necessidades de modificações ou “fixes”.
O Visual Studio .Net 2008 já foi lançado, e apresenta diversas (muitas novidades) para o desenvolvimento
de aplicações. No cenário de desenvolvimento e customizações avançadas para as tecnologias Sharepoint,
onde normalmente o Visual Studio .Net 2005 é a ferramenta ideal, o lançamento do Visual Studio .Net 2008
4
Entrevista - Lançamentos 2008
trás grandes evoluções no desenvolvimento de workflows baseados no Windows Workflow Foundation.
Alias, espero que este lançamento (Visual Studio .Net 2008) seja um fator motivador para as próximas versões
do “Windows SharePoint Services 3.0 Tools: Visual Studio Extensions”
2. Windows Vista (with SP1), Office System 2007 (with SP1). InfoPath 2007, OneNote 2007, Groove
2007, Microsoft ® Business Data Catalog Definition Editor, Visual Studio .Net 2008 (Windows Workflow Foun-
dation e Windows SharePoint Services 3.0 Tools: Visual Studio Extensions), BdcMetaMan, Microsoft Virtual PC
e Microsoft Virtual Server 2005.
O resto vai ficar virtualizado! ;-)
3. Eu acredito que o SQL Server 2008 seja a grande sensação deste ano. Primeiramente pelas funcionali-
dades e características anunciadas durante as versões betas e CTP (Community Technology Preview), que re-
presentam um avanço incrível nas capacidades de gerenciamento e otimização no modelo de armazenamento de
dados corporativos.
Minha sensação também é baseada na própria arquitetura da plataforma de produtos, serviços e soluções Micro-
soft que - com exceção do Exchange Server (e provavelmente de outros serviços menos relevantes) – estão
baseadas completamente nos recursos providos pelo SQL Server, com o uso intensivo e em larga escala.
Para idéias e tecnologias, gostaria de citar:
- Microsoft Popfly - http://www.popfly.com/
- Microsoft Live Labs : Volta - http://labs.live.com/volta/
- OOXML – Office Open XML
- Windows Live Plataform
- Sharepoint (é claro) – sendo um grande ano de implementações mais complexas e completas. Vejam mais in-
formações em http://www.sharepointbrasil.net
1. Algo que vem se apresentando é o uso do Application Portfolio Management como parte do ferramen-
tal para gerenciamento da arquitetura corporativa. Muito importante já que o nível de complexidade do conjun-
to de sistemas de uma empresa tende a crescer exponencialmente e o uso de ferramentas deste tipo, como o
Project Portfolio Server da Microsoft, possibilita uma análise estratégica sobre o patrimônio digital da empresa,
auxiliando o arquiteto corporativo na definição do direcionamento tecnológico da empresa, que orienta a reali-
zação de cada projeto de TI.
2. Todo o pacote Office 2007, incluindo o Project Professional, OneNote e Visio, e o Visual Studio 2008
com o Team Foundation Server Explorer. Não pode faltar também o Virtual PC, com vários Virtuais Machines
para manter o meu Data Center móvel.
3. Este ano deve apresentar uma evolução na implementação dos conceitos de Service Oriented Architec-
ture e suas especializações, como Software + Services e Office Business Applications. Vários casos de sucesso
de implementações de Enterprise Service Bus, Business Intelligence, Unified Communications e Portais de Cola-
boração, a Microsoft oferece hoje uma plataforma madura para realização de tais projetos e o mercado também
está mais bem preparado para receber e tirar proveito de tudo isso.
5
Entrevista - Lançamentos 2008
Fabio Câmara Microsoft MVP
Fabio Camara (fabio.camara@vstsrocks.com.br) é MCT, MCP, MCAD, MCPD, MCITP, MCTS, MCSD.NET, MSF
Practitioner, Certified ITIL Foundations e Certified SCRUM Master– Acredita em bons resultados em projetos
com técnicas ágeis, principalmente para as características do mercado brasileiro. Ministra treinamentos e
“coaching” para projetos conforme pode ser verificado no site http://www.fcamara.com.br
1. O Visual Studio Team System tem muitas novidades e posso cometer alguma injustiça em minha avaliação.
Vamos colocar assim: A novidade que eu mais gostei no Visual Studio Team System 2008 foram as novas funcio-
nalidades de Build Automation que permitiram o conceito Continuos Integration.
2. TFS 2008, VSTS 2008, Office 2007, MOSS 2007 e One Note.
3. Na minha previsão, o VSTS vai ganhar destaque porque vai deixar de ser visto como uma ferramenta de
controle de versão e será visto como uma ferramenta de automação de ciclo de vida de desenvolvimento
de software
1) O ASP.NET não sofreu muitas alterações. As novidades estão naquelas tecnologias e funcionalidades que o
circundam como é o caso do MVC e o IIS 7.0.
2) Visual Studio .NET 2008 + Windows Vista Business + IIS 7.0.
6
Entrevista - Lançamentos 2008
3. Acredito que o MVC roubará a cena nos próximos meses. Isso é devido à grande exigência que a comunida-
de fez para que fosse implementado uma alternativa ao tradicional Web Forms. Claro que, em paralelo, outras
tecnologias vão sendo disponibilizadas (como é o caso das Parallel Extensions) e outras vão amadurecendo cada
vez mais (WCF, WF, WPF e Cardspace), tornando a plataforma .NET cada vez mais completa.
Maira Wenzel
MCSD, é líder de programação do time de Usuários Educacionais de ASP .NET. Vem trabalhando extensivamen-
te com tecnologias Microsoft desde 2000 incluindo SQL Server, ASP.NET, C#, Visual Basic and Sharepoint Ser-
ver.
1) ASP.NET Dynamic Data. É possível conferir esta tecnologia na versão CTP do ASP.NET 3.5 Extensions Pre-
view.
2) Não posso ficar sem o Word, o Outlook e o Visual Studio 2008.
3) Acho que uma tecnologia que vai ter muito destaque em 2008 é o ASP.NET MVC. O ASP.NET MVC é a
implementação da Microsoft utilizando a arquitetura MVC (model-view-controller). Esta arquitetura por
fazer uma divisão de responsabilidades, facilita a manutenção do código, o gerenciamento de complexidade
e o teste das aplicações.
http://shop.linhadecodigo.com.br/treinamento.asp?id=2953
7 Merge com SQL Server 2008
Uma das grandes novidades do SQL Server 2008 é a facilidade para mesclar dados utilizando o conceito de MERGE. Esta operação permite
recuperar dados de uma origem e realizar diversas ações baseadas nos resultados de JOIN (junção) entre a origem e o destino. O MERGE au-
menta consideravelmente o desempenho na utilização de INSERT, UPDATE e DELETE em casos específicos.
Depois de criar e inserir alguns registros em cada uma das duas tabelas separadas das Lojas, vamos criar a tabela tblLojas. Repare que a estru-
tura das 3 tabelas são iguais, isso não é uma regra, é só para simplificar o exemplo. Poderiam ser diferentes, sem problema algum.
Finalmente chegamos ao ponto onde utilizaremos o MERGE para colocar todas as informações na tabela tblLojas, baseada nas tabelas tblLoja1
e tblLoja2.
No primeiro exemplo de MERGE, utilizaremos a tabela tblLojas como sendo o destino dos dados e a tabela tblLojas1 como sendo a origem.
Faremos a ligação das duas tabelas nos baseando na coluna proCodigo [terceira linha]. Quando a clausula ON for satisfatório (verdadeira), o
processamento executará o bloco definido em MATCHED, para resultados cuja clausula ON seja negativa, o SQL Server 2008 executará o
bloco NOT MATCHED.
Neste momento, como a tabela tblLojas ainda está vazia, somente o bloco NOT MATCHED (que insere os valores) será executado. Con-
sultando a tabela tblLojas, os dados estão idênticos à
MERGE tblLojas des tabela tblLoja1.
USING tblLoja2 ori Agora, para executar o MERGE da tabela tblLoja2 com a
ON ori.proCodigo = des.proCodigo tabela tblLojas, criamos o segundo exemplo de código que é
WHEN MATCHED THEN
muito parecido com o primeiro, a não ser pela tabela utiliza-
UPDATE SET des.proDescricao = 'AmbasLojas'
da como origem dos dados e pelos processamentos que se-
WHEN NOT MATCHED THEN
rão executados com base no resultado da clausula ON.
Agora, depois de executar esse código que, quando encontra
proCodigo que existe na tabela tblLojas e também existem na tabela tblLoja2, atualiza a proDescricao para „AmbasLojas‟, consultar a tabela tblLojas, consegui-
mos ver com clareza que alguns dados foram inseridos e outros dados atualizados.
SELECT * FROM tblLojas
Na hora que populamos as tabelas das lojas, os produtos de código 15 a 20 se repetiram propositalmente, para forçar esta
igualdade de dados, e como está no exemplo, atualizar a tabela destino.
Concluímos que utilizar o MERGE é mais rápido e simples do que escrever código para fazer uma junção de dados de duas
tabelas. Esta nova funcionalidade deve ser utilizada sempre que possível. Ela é muito mais performática do que criar um
procedimento fazendo as verificações manualmente.
Diego Nogare é Graduado em Ciência da Computação e Pós-Graduado em Engenharia de Computação com ênfase em Desenvolvi-
mento Web com .NET, Colaborador do Portal Linha de Código, co-Líder do grupo de usuários Codificando .NET, co-Líder dos Micro-
soft Student Partners (MSP) de São Paulo, possui certificações MCP e MCTS em SQL Server 2005, é palestrante em eventos da Micro-
soft, Codificando .NET e INETA BR, mantém o site www.diegonogare.net.
9 Artigo: Eu uso metodologia ágil, e você?
Como vender a utilização de metodologias ágeis em projetos para organizações tipicamente tradicionais? Diferente de ou-
tros assuntos técnicos que beiram questões religiosas (ver discussões entre Java e .Net), há nos diretores e gerentes das
corporações uma prudência racional que independe de metodologia. Na verdade, todo gestor sensato quer avidamente três
premissas realizadas em seus projetos: o negócio atendido, o orçamento respeitado e o cliente satisfeito (não necessaria-
mente nesta ordem).
Um caso prático
Iniciamos a reunião na grande sala, muito luxuosa para os padrões que estamos acostumados a trabalhar. Havia cerca de três
empresas representadas na sala e aparentemente todas na mesma situação.
Um diretor de TI de uma respeitável organização me perguntou:
O que está acontecendo com os projetos hoje?
Simples, a TI é lenta demais e os negócios são muito rápidos – ele mesmo respondeu. Isso tem 10 anos no máximo e seu
surgimento confunde-se com a utilização da Internet, mas é a dura realidade atual dos projetos de software.
Seu papel hoje nesta reunião é me fazer compreender o motivo pelo qual eu permitiria você implantar suas técnicas ágeis
em meu departamento de TI, me disse o diretor com verdadeiro desdém. E continuou falando: Argumentos relacionados
com o controle do sucesso do projeto, principalmente do ponto de vista financeiro, são argumentos inválidos se comparar-
mos técnicas ágeis de controle e técnicas baseadas em PMBok. Portanto seja mais criativo que isto!
Ele passou ainda uns 30 minutos expondo toda sua descrença, eu até pensei que a reunião acabaria e eu não teria chance de
falar. Abruptamente ele cala-se e olha para mim. Entendi imediatamente que chegou minha vez. Cerca de 8 pessoas caladas
numa mesa oval esperando um argumento mágico vindo de mim.
Colhendo a motivação
Comecei trazendo novas questões, não que eu quisesse ganhar tempo para estruturar os meus argumentos, mas eu precisa-
va entender porque este diretor com a opinião contra metodologias ágeis resolveu me receber numa reunião. Eu simples-
mente queria entender o que estávamos fazendo ali naquela sala de reunião luxuosa.
Parece-me que os problemas foram bem explanados, contudo não consegui captar a motivação. Qual a motivação de vocês
para buscar mudanças? Entendi que não estão plenamente satisfeitos com as técnicas que utilizam hoje, entretanto percebi
que estão acostumados com as técnicas e acomodados com os resultados alcançados. Sendo assim, para que conhecer pos-
sibilidades diferentes de técnicas e conseqüentemente de resultados?
O diretor imediatamente questionou-me em tom mais alto ao invés de responder: _ Você está afirmando que estamos aco-
modados? Minha resposta politicamente inadequada foi:
Independentemente de classificar se há ou não há “zona de conforto”, quero apresentar a minha leitura sobre o significado
da palavra insanidade. Insanidade para mim é esperar por resultados diferentes sem fazer nada diferente. Há alguns anos se
praticam as mesmas técnicas, como podemos esperar resultados diferentes?
Aonde você quer chegar? Retrucou o diretor irritado.
Quero encontrar a motivação! Respondi sem mostrar intimidação. As propostas ágeis são tão sérias como todas as propos-
tas de metodologias que você conhece, portanto se não há motivação para mudanças e o objetivo é apenas comparar uma
técnica com outra, avise-me, pois trilharei por caminhos mais teóricos neste caso.
Neste momento eu sabia que a reunião iria longe, porém eu precisava “recuperar” o diretor. Procuro uma resposta simples,
a mais simples que vier em sua mente agora, por favor, me responda o que estamos fazendo aqui agora.
Meu cliente não está se sentindo bem atendido! Escapuliu da boca do diretor. Muito obrigado, eu respondi em cima.
10 Artigo: Eu uso metodologia ágil, e você?
Obtendo o cenário
A organização de nosso departamento de TI é formada por três sub-áreas: uma espécie de escritório de projetos, uma área
de qualidade e a área de desenvolvimento propriamente dita. Obviamente temos pessoas de infra-estrutura que também são
responsáveis pelos ambientes de desenvolvimento, testes e produção.
Com este cenário procuramos ter controle de todas as atividades, porém mesmo assim vivemos um dilema: _ se atendemos
aos pedidos dos usuários após o escopo definido, perdemos o controle sobre o orçamento e prorrogamos o prazo; _ se
congelamos o escopo previamente definido, apesar de entregar com o orçamento previsto e no prazo combinado, nossos
clientes afirmam que não foram atendidos.
Afinal, o que podemos fazer diferente? Perguntou o diretor em tom mais amigável.
Explicando os motivos
Vejo muito naturalmente em seu cenário o conflito de atividades de controle, também chamadas atividades de conformida-
de, com atividades de resultado. Apesar de ser um problema comum, não há literatura acessível ou cursos que orientem a
compreensão e resolução deste conflito.
As atividades de controle focam em corrigir desvios e não no aprendizado, ou seja, partem do principio que o plano sempre
tem que ser perfeito. Se o plano inicial precisa ser alterado, refaz-se imediatamente todo o plano. Isto explica também por-
que os técnicos não gostam quando os usuários pedem mudanças, pois é muito trabalho seja lá qual for o tamanho da mu-
dança.
Quando afirmo que não há aprendizado neste cenário, caracterizo assim porque ninguém se propõe a entender o porquê do
novo pedido do usuário ou da mudança sobre algo previamente combinado. É uma atitude binária, “sim” vamos fazer e o
impacto será revelado posteriormente ou “não” podemos, pois o impacto será fatal ao projeto.
Deve haver uma razão para tantas mudanças ou para inúmeros pedidos novos, quando vamos nos responsabilizar em com-
preender isso e transformar nossa atitude?
O controle de qualidade, da forma automatizada que vocês usam, consome uma enormidade de tempo. Este tempo extra
com qualidade, além de consumir mais atividades de conformidade, também são muito questionadas pelos “sponsors1” dos
projetos.
A mistura de atividades de controle e atividades de qualidade no seu cenário criam um efeito “bola de neve” em seus proje-
tos. Nestes projetos com problemas, vocês aumentam a prioridade das atividades de conformidade na tentativa de retomar
o plano perfeito ao invés de aumentar o foco nas atividades de resultado. Vocês aumentam os testes acreditando que a ins-
peção é a melhor forma de proteger-se da decepção do cliente. No fim, mesmo tendo trabalhado arduamente durante todo
o projeto, há uma sensação em todos de que não foi legal.
1 Sponsors: são executivos e / ou clientes que aprovam o orçamento do projeto e são responsáveis pelo pagamento .
Classifique e priorize as atividades junto com seu cliente, deixando atividades de menor valor para o final de projeto. É quase que afirmar:
faça do mais difícil para o mais fácil.
Desta forma, novos requisitos podem ser trocados por requisitos de menor valor que seriam desenvolvidos mais para o final do projeto.
Nos testes, pense que automação é muito bom para garantir que determinados comportamentos do software não sejam perdidos diante as
alterações. Na fase de construção, isso não tem tanto valor. Recomendo aplicar técnicas baseadas em “testes comportamentais2” durante
esta fase, pois são mais simples, mais econômicas e eficientes.
Pratique isso por 3 meses e avalie os resultados.
A receita final
Mesmo entendendo que muitos executivos querem simplesmente comprar uma metodologia como um segredo mágico, fala-se a palavra
certa e tudo funciona, não constatamos isso em nosso mundo real.
Metodologia não se compra, se implanta. Depende dos próprios executivos, dos gerentes de projetos e principalmente do fator humano
presente. Entenda-se por fator humano o respeito à intuição criativa dos clientes e desenvolvedores.
Temos comprovado que quando se trabalha sério com propostas de mudanças e motivação na equipe, com três meses já alcançamos resul-
tados diferentes. Para a autonomia técnica plena da equipe pode ser necessário mais tempo, entretanto quando sponsors percebem pro-
gresso, qualquer investimento se justifica e tudo fica mais fácil.
A participação de um consultor externo fora da dinâmica dos projetos existentes tem se demonstrado um acelerador providencial. Apenas
recomendamos cuidado para ratificar o conhecimento prático deste profissional, pois implantar ciclo de vida de desenvolvimento é 2 Tes-
tes Comportamentais ou Behavioral Tests: Técnicas de testes baseadas na interação do ser humano com os produtos desenvolvidos. Des-
taca-se pela facilidade de implantação e pelo baixo investimento. Para saber mais visite o site http://www.fcamara.com.br
Sempre bem mais profundo que as teorias podem alcançar. A melhor forma de se certificar sobre o consultor é verificando seu histórico
de realizações.
Resumindo conclusivamente, é necessário entender a diferença entre risco e atividade.
Quando você cadastra uma atividade em seu aplicativo específico de controle de atividades, você espera uma tarefa detalhada e um produ-
to resultante desta atividade associado.
Quando você cadastra um risco no mesmo aplicativo, o que fazer? Todo risco impõe uma mudança de atitude para que resultados diferen-
tes aconteçam.
Fabio Camara (fabio.camara@vstsrocks.com.br) é MCT, MCP, MCAD, MCPD, MCITP, MCTS, MCSD.NET, MSF Practitioner, Certified
ITIL Foundations e Certified SCRUM Master– Acredita em bons resultados em projetos com técnicas ágeis, principalmente para as carac-
terísticas do mercado brasileiro. Ministra treinamentos e “coaching” para projetos conforme pode ser verificado no site http://
www.fcamara.com.br
12 Por dentro da Base Class Library
O MVP de Asp.Net Israel Aéce disponibilizou em seu site Projetando .Net (www.projetando.net) um material fantástico sobre Base Class Li-
brary. Veja uma pequena parte deste material neste artigo e faça o download totalmente grátis dos capítulos.
A Base Classe Library (também conhecida como BCL) é um conjunto de classes que o .NET disponibiliza para todas as linguagens que rodam
sob o .NET Framework. Essa base encapsula várias funcionalidades que tornam o trabalho do desenvolvedor muito mais fácil. As classes conti-
das dentro da BCL são comuns para qualquer tipo de aplicação, ou seja, independentemente de tecnologia (ASP.NET, Windows Forms, WPF,
etc.), você poderá consumir essas classes que, representam tarefas que são comumente utilizadas. A imagem abaixo exibe onde a BCL está
encaixada dentro da plataforma .NET.
A versão 2.0 adicionou novos tipos e namespaces, enriquecendo ainda mais esta estrutura. Essas classes vão desde novas coleções (tipadas) até
novos namespaces, como é o caso do System.Transactions. Apesar do .NET Framework estar em sua versão 3.5, ele utiliza o .NET 2.0 como seu
núcleo. A figura abaixo ilustra perfeitamente a posição do .NET 2.0 dentro do .NET 3.X.
A BCL é composta por vários namespaces e, através dos capítulos abaixo, veremos detalhadamente cada um dos principais deles. A idéia é
abordar o conteúdo mais útil ao dia-a-dia, mostrando exemplos em Visual Basic .NET e Visual C#. Sendo assim, nem todas as classes/
funcionalidades serão cobertas aqui, mas, para isso, poderá recorrer ao MSDN Library.
Conteúdo
Capítulo 1 – Tipos de dados e Interfaces
Este capítulo abordará a arquitetura de tipos fornecido pelo .NET Framework, onde na primeira parte do capítulo, será abordado os tipos pa-
drões e veremos como identificar se trata-se de um tipo valor ou referência. Além disso, analisaremos um problema grave, deixado de lado
por muitos desenvolvedores, que é a questão do boxing e unboxing. Ainda nessa primeira parte, analisaremos alguns novos tipos introduzidos
nesta versão do .NET Framework, em principal, os Generics. Na segunda e última parte do mesmo, vamos abordar as várias Interfaces que estão
disponíveis para serem implementados em tipos customizados, fornecendo funcionalidades adicionais ao tipo criado.
Capítulo 2 – Trabalhando com Coleções
As coleções são componentes importantes em qualquer tipo de aplicação e, para isso, esse capítulo abordará extensamente o
uso das mesmas, começando pelas coleções primárias, fornecidas desde as primeiras versões do .NET Framework até as novas
coleções, introduzidas na versão 2.0 do .NET Framework, quais fazem uso dos Generics. Além das coleções, analisaremos as
Interfaces disponíveis para podermos estender as funcionalidades existentes e customizarmos para o nosso cenário.
Capítulo 3 – Utilização de Assemblies.
Um Assembly é a menor unidade de reutilização, segurança e controle de versão. O Assembly é algo importante que deve ser
analisado cuidadosamente, pois toda aplicação .NET depois de compilada gerará um Assembly. Este capítulo abordará a sua cri-
ação desde um utilitário de linha de comando até o Visual Studio .NET. Além disso, abordaremos também outros assuntos rela-
cionados a Assemblies, como por exemplo, strong names, GAC (Global Assembly Cache), instaladores e arquivos de configura-
ção.
Capítulo 4 – Monitoramento e depuração de aplicações
Toda e qualquer aplicação necessita de algum tipo de monitoramento de seu código para detectar possíveis problemas que pos-
sam acontecer e que devem ser analisados. O .NET Framework fornece várias classes que ajudam nesse monitoramento e, este
capítulo, é responsável por apresentar essas classes que vão desde a manipulação do Event Log do Windows até classes que
interagem com o WMI - Windows Management Instrumentation.
Capítulo 5 – Manipulando o sistema de arquivos
Grande parte das aplicações comerciais que temos atualmente manipulam arquivos. Esses arquivos são arquivos de bancos, ar-
quivos de parceiros e fornecedores que servem para troca de informações. Enquanto os XML Web Services ainda não são uma
realidade para muitas empresas, a manipulação de arquivos e seus respectivos conteúdos são ainda muito utilizados. Tendo esse
cenário, o capítulo em questão abordará as principais classes contidas dentro do namespace System.IO para exem-
13 Por dentro da Base Class Library
Capítulo 6 – Serialização
A serialização de dados é cada dia mais utilizada em aplicações. Por mais que isso aconteça nos bastidores, esse capítulo abordará desde o seu
conceito até como implementá-la; e ainda, em seus diversos formatos, utilizando as classes fornecidas pelo .NET Framework 2.0. Além disso,
analisaremos classes e Interfaces que temos disponíveis, que proporcionaram o processo de serialização e deserialização mais flexível, onde
podemos customizar e interceptar cada um desses processos de acordo com a nossa necessidade.
Capítulo 8 – Criptografia
Criptografia de dados é um ponto muito importante, nos mais diversos tipos de aplicações. Geralmente, em aplicações onde alguns dos dados
são muito sigilosos, como é o caso de aplicações financeiras, quais mantêm os dados de seus clientes, é necessário que se mantenha esses
dados seguros, pois, se esses dados caírem em mãos erradas, essas pessoas com más intenções, não consigam entender e/ou recuperar esses
dados em sua forma legível. Esse capítulo abordará extensamente as classes responsáveis por criptografia e hashing que o .NET Framework
disponibiliza, bem como utilizá-las e como aplicá-las ao dia-a-dia.
Capítulo 13 – Reflection
Reflection é a habilidade de extrair informações de metadados de um determinado tipo, ou seja, quais parâmetros, métodos, entre outros mem-
bros um determinado tipo possui. Isso torna a aplicação bastante flexível, onde podemos extrair informações necessárias para podermos custo-
mizar e automatizar a criação de ferramentas e utilitários que auxiliam os próprios desenvolvedores. Além disso, permite a criação em runtime de
Assemblies e como instanciar classes via programação. Esse capítulo propõe-se a explicar como criar esse tipo de funcionalidade dentro da apli-
cação.
Utilizando o TransactionScope
O TransactionScope é iniciado quando se cria um novo objeto TransactionScope.
É altamente recomendado que a declaração do scope seja feito dentro da diretiva using, pois ela garante que o objeto dure
somente o tempo necessário para sua utilização.
Vamos aos exemplos:
Adicione a referência no projeto ao System.Transaction.
Obs: Caso ocorra algum problema na execução do bloco de código (dentro do using ) automaticamente a transação é abor-
tada e o Transaction Maneger executa o Roll Back das alterações.
RollBack:
O RollBack é executado automaticamente quando ocorrer qualquer exceção no bloco que está sendo executado dentro da
transação.
Exemplo de utilização:
No cenário abaixo, temos uma transação onde gravamos informações coletadas separadamente (endereço, dados pessoais,
etc). Com o Transaction Scope temos a liberdade de gravar as informações separadamente. Suponhamos que estamos gravan-
do o cliente e após gravar o Endereço e o Telefone do Cliente da um problema na gravação dos Dados pessoais do mesmo
sendo assim o transactionScope faz o Roll Back de tudo! Voltando o objeto ao seu estado original.
16
Gerenciando Transações com Trasaction Scope no Asp.Net 2.0
17
Gerenciando Transações com Trasaction Scope no Asp.Net 2.0
Caso ocorra algum erro durante a gravação de algum desses metodos o TrasactionScope faz o RollBack de tudo, como dito
anteriormente. Não havendo nenhum problema a transação é completada normalmente.
A configuração do ambiente
Para que o transactionScope funcione no servidor precisamos fazer algumas configurações, mais somente se o servidor for XP
sp2 pra cima! Em Win2000 não precisamos mexer em nada!
Lembrando que essa configuração só deve ser feita em ambientes com sistema operacional Win XP ou Win Server2003. E a
mesma deve ser feita tanto no servidor de WEB quanto no de Banco de Dados.
Fabiano Belmonte
Senior Architect da Saraiva.COM, especialista em aplicações e-Business com larga experiência em B2B (Submarino.Com, Ame-
ricanas.Com e Saraiva.Com). Trabalha há 5 anos com a tecnologia .Net, aplicando conhecimentos nas diversas áreas: institui-
ções financeiras (sistema SPB), e-Commerce, gerenciamento logístico, entre outras.
RECORDAR É VIVER!
21 2º XNA Challenge e uma História de Sucesso
A Microsoft Brasil promove diversas competições e eventos sobre suas ferramentas e tecnologias durante todos os anos. Profissionais de TI e
estudantes de todo o Brasil participam massivamente nestes eventos, em busca de mais conhecimento e oportunidades para a carreira. Neste
contexto, no final de 2006 foi anunciado o primeiro XNA Challenge que recebeu dezenas de projetos inscritos e teve a participação de cente-
nas de pessoas na final em Fevereiro de 2007. Toda a repercussão marcou no país a data em que uma multidão de programadores (mesmo os
mais iniciantes) começaram a desenvolver jogos sob uma tecnologia nova chamada XNA.
O XNA é um framework que permite aos programadores produzir um jogo mais rápido ao utilizar um ambiente orientado aos jogos com
métodos e controles especiais. Baseado na linguagem de programação chamada C#, o XNA configura-se como uma extensão ao Visual Studio,
mesmo o Express Edition. Atualmente está na versão 2.0 e já existem expectativas e boatos sobre sua próxima versão, a 3.0.
Como tudo que é bom, a gente pede bis. E eles atendem! Anunciado no segundo semestre de 2007, o 2o. XNA Challenge teve o tema "Meio
Ambiente Sustentável", diretamente ligado a Imagine Cup '08, que definiu o challenge como um trampolim para a competição internacional já
que em 2008 haveria uma nova categoria, a Game Development. Tudo definido, tempo passando e diversos competidores programando.
Dos projetos submetidos, os cinco melhores foram selecionados para participar de uma final em São Paulo aberta ao público que iria definir o
campeão, o segundo e o terceiro (além de um prêmio adicional, de maior indicação do público presente). Dos finalistas, dois projetos são
Grupo de Projeto e Desenvolvimento de Jogos (GPDJ) da Unicamp, que comentarei mais a respeito.
Voltando ao challenge, a criatividade rolou solta. Bruno Evangelista (UFMG) criou "Alice, os Parasitas e o Livro do Tempo" em que o jogador
encarna uma menina com poderes especiais para salvar o planeta de seres malignos. Da Unesp, Guilherme Campos apareceu com "City Rain",
um jogo a lá Sim City em que o jogador constrói uma cidade na posição de prefeito e aprende sobre ecologia e urbanismo. Outro competidor,
José Lourenço (UNIVAP), participou com "Great Adventures of Ted" onde você precisa juntar os cristais e combater o vilão Shredder.
Carolina Gomes (GPDJ/Unicamp) desenvolveu "Gariman" em que ela definiu: "o jogador encarna um simpático lixeiro que tem como ambição
ser aprovado como membro dos Gariman, o esquadrão de elite que viaja pelo mundo a limpar cidades". O game foi desenvolvido em uma
equipe maior incluindo Thiago Coser, André Esteve e Lucas Bueno, todos integrantes do GPDJ da Unicamp, e o objetivo final é a conquista na
França da Imagine Cup '08.
22 2º XNA Challenge e uma História de Sucesso
Por fim, o último competidor e campeão do torneio foi Vítor Antoniolli (GPDJ/Unicamp) com o game "Recicle" em que a missão é despoluir
um rio coletando corretamente os lixos recicláveis. Recicle foi desenvolvido por Vítor Antoniolli e Zhenlei Ji, com participação de Fábio Reis,
todos do GPDJ da Unicamp. Além do prêmio do júri o game também levou o prêmio adicional decidido pelo público do evento.
A esta altura você deve estar se perguntando de onde saiu esse grupo de jogos da Unicamp chamado GPDJ. Pois bem, contarei sobre a histó-
ria do grupo e o sucesso que felizmente obtivemos no mundo dos games, ao menos até o momento. Antes, devo me apresentar: atuo como
coordenador do grupo. O GPDJ formou-se de uma iniciativa de dois professores do Instituto de Computação da Unicamp, em que eles pro-
curavam alunos para desenvolver um teste na férias. Por causa do período, somente 4 alunos deixaram as férias de lado para 15 dias de pro-
gramação e dessa experiência nasceu o iCoco (vice-campeão SBGames 2007). No projeto iCoco atuei já como coordenador, ajudando os
alunos nos entraves mas não durante toda a programação.
Em seguida, mais alunos aderiram ao grupo e iniciou-se o projeto Gariman, em Agosto. Como alguns dos alunos não estavam diretamente
ligados com o projeto Gariman, em Dezembro eles começaram a produção do Recicle pensando diretamente no 2o. XNA Challenge. Feliz-
mente, como mencionado, ambos foram selecionados entre os 5 finalistas (40%). Em seguida, ambos os projetos foram submetidos (com mo-
dificações) para a Imagine Cup '08 e dos 8 projetos brasileiros aceitos para o Round 2 dois são do GPDJ (25%).
Bruno Melo (brunoamelo@gmail.com) é graduando em Engenharia de Computação na Universidade Estadual de Campinas (Unicamp). Mi-
crosoft Student Partner, campeão nacional 2º. XNA Challenge, coordenador do Grupo de Projeto e Desenvolvimento de Jogos da Unicamp e
desenvolvedor do Microsoft Innovation Center/Interop.
23 Programa MSP – Microsoft Student Partners
Pelo contrário do que muitas pessoas pensam; participar de programas patrocinados pela Microsoft não exige que você venda sua alma ao
diabo, muito pelo contrário, diversos programas incentivam e impulsionam muitas decisões do nosso futuro sem cobrar nada por isso. Dois
exemplos bem reais destes programas são MVP [Microsoft Most Valuable Professional] e MSP [Microsoft Student Partners]. Ambos os progra-
mas visam incentivar as pessoas que de uma forma direta ou indireta ajudam outras pessoas a aprender alguma tecnologia da Microsoft. O
programa MVP é voltado aos profissionais do mercado de trabalho que se destacam nas comunidades de tecnologias. Os profissionais que
cedem um pouco de seu tempo para ajudar a outras pessoas tirando dúvidas, dando treinamentos, cursos, palestras, escrevendo artigos, tem
chance de conseguir um titulo de MVP. O responsável pelo programa na América Latina é o brasileiro Leonardo Tolomelli, que por sinal nos
cedeu uma entrevista na edição 0 – Junho/2007.
Já o programa MSP é voltado exclusivamente para estudantes, não importa se é de nível médio ou de doutorado, para ser um MSP tem que
ser estudante. O ingresso para o programa é mediante indicações e tarefas que são realizadas em universidades ou escolas, com o intuito de
divulgar tecnologias aos estudantes interessados. A base do programa é explorar os talentos dos alunos, fazendo-os crescer pessoal e profis-
sionalmente. Cada MSP é atrelado a uma instituição de ensino, e deve apresentar à Microsoft comprovante de rendimento nos estudos, além
de divulgar as tecnologias a outros estudantes através de palestras, workshops, cursos, e quaisquer outros eventos que possam levar conheci-
mento a estes estudantes.
A maioria dos MSPs é ou foi líder de célula acadêmica. As células acadêmicas são os nomes dos grupos de estudantes que se unem com o
intuito de estudar, aprender e divulgar alguma ou várias tecnologias Microsoft, seja na parte de Desenvolvimento de Software ou em Infra-
Estrutura de TI. Uma célula acadêmica é apoiada pela Microsoft, que fornece material para que os alunos que participam da célula possam a-
prender aquela tecnologia e que consiga empregá-la no mercado de trabalho. Ainda na área acadêmica, o programa Imagine Cup é a maior e
mais completa competição de tecnologia do mundo, revelando diversos [talentos] alunos de destaque ao redor do mundo que conseguem
chances para ingressar profissionalmente na Microsoft. Contando com competidores de mais de 100 países e de nove categorias diferentes, a
Imagine Cup a cada ano aborda um tema atual e de grande importância para o planeta. O Brasil tem nome de peso na competição, e sempre
volta como um dos campeões em alguma categoria. Em 2007 a final da competição foi na Coréia, este ano será na França. Além da viagem,
hospedagem, alimentação e passeio turístico, gratuito a todos os competidores que forem pra final, dependendo da categoria competida, a
equipe ganhadora ainda ganha uma bolada de US$25.000 (isso mesmo, 25 mil dólares!). Em 2007, na categoria de Software Embarcado, a equi-
pe “TriventDreams ED” ganhou em primeiro lugar, e a equipe “Papapaçoca” conseguiu o terceiro lugar na categoria de Filme de Curta Metra-
gem, ambas equipes possuíam MSPs em seu elenco. No Brasil, a área acadêmica é representada por Amintas Neto e sua equipe que com muita
colaboração, responsabilidade e bom humor nos ajudam a estabelecer uma base acadêmica nas universidades do país.
Diego Nogare é Graduado em Ciência da Computação e Pós-Graduado em Engenharia de Computação com ênfase em Desenvolvi-
mento Web com .NET, Colaborador do Portal Linha de Código, co-Líder do grupo de usuários Codificando .NET, co-Líder dos Micro-
soft Student Partners (MSP) de São Paulo, possui certificações MCP e MCTS em SQL Server 2005, é palestrante em eventos da Micro-
soft, Codificando .NET e INETA BR, mantém o site www.diegonogare.net.
24 Coluna: Desvendando o SQL Server
Pessoal, nesta série de artigos para a revista Codificando e-Magazine, estou demonstrando o uso de XML com SQL Server 2005.
Os seguintes tópicos estarão sendo abordados:
com FOR XML nas consultas desenvolvidas em Transact-SQL (disponível também na versão 2000 do SQL Server).
FOR XML converte o resultado do SELECT em estrutura XML e apresenta diversos modos de apresentação: RAW, AUTO,
PATH e EXPLICITY
Agora, iremos praticar, usando o banco de dados criado anteriormente no segundo artigo da coluna “Desvendando o SQL Ser-
ver”.
Exemplos:
USE CodificandoXML
GO
--- 1. exemplo basico de FOR XML RAW
select * from UniversalLog FOR XML RAW
--- 2. exemplo basico de FOR XML AUTO
select * from UniversalLog FOR XML AUTO
--- 3. exemplo basico de FOR XML PATH
select * from UniversalLog FOR XML PATH
--- 4. exemplo basico de FOR XML EXPLICIT
select * from UniversalLog FOR XML EXPLICIT
25 Coluna: Desvendando o SQL Server
Suporte para valores NULL no XML:
Por default o mecanismo de formatação XML do SQL Server 2005 ignora valores NULL, O SQL Server 2005 pode ser instruído
a gerar linhas “vazias” para colunas com valores NULL. Utiliza-se XSINIL para gerar linhas “vazias”
Exemplos:
declare @myXML XML
SET @myXML = (select 100 'coluna 1', 200 'coluna 2', NULL 'coluna 3', 400 'coluna 4'
FOR XML RAW)
SQL SERVER
SELECT @myXML
XQUERY e XPATH:
O W3C desenvolveu duas linguagens de consultas que fornecem uma poderosa capacidade para manipular estruturas XML.
XQUERY é uma linguagem de consulta criada para dados XML.
Dependendo de como os dados XML foram armazenados, o SQL Server 2005 oferece duas tecnologias distintas para modificar
dados, se os dados estão armazenados em coluna XML, pode-se utilizar o método modify() para incluir, apagar ou atualizar os
dados XML(Neste artigo estaremos focando o método modify()).
Por outro lado, se os dados estão armazenados em estrutura relacional, mas processados como XML, pode-se usar FOR XML
ou SQLXML.
A linguagem XQUERY não oferece palavras-chave para manipulação de dados, mas a Microsoft estendeu as capacidades da
XQUERY no SQL Server 2005 incluindo um conjunto de instruções para que o desenvolvedor possa adicionar atualizar e apagar
dados XML (XML DML = Data Manipulation Language).
O método Modify() recebe um único parâmetro de entrada que obriga a validação XML DML e executa no XML.
Exemplo para remover empregados com códigos 1, 2 e 3 dos seus respectivos departamentos (7, 4, 1) usando a palavra-chave
delete:
Existem três palavras-chave no XML DML definidas pelo SQL Server 2005: Insert, replace value of e delete.
update text in the first manufacturing step SET @myDoc.modify(' replace value of (/Root/Location/step[1]/text())[1] with "new
text describing the manu step" ')
Exemplos:
USE CodificandoXML
GO
UPDATE UniversalLog
SET LogRecord.modify('
insert <information flag="custom"><message>SQL Server service is starting</message></information>
into logRecord[1]')
WHERE ApplicationName = 'SalesApp'
27 Coluna: Desvendando o SQL Server
UPDATE UniversalLog
SET LogRecord.modify('
replace value of (logRecord/information/message)[1]
with "Not enough memory"')
WHERE ApplicationName = 'HoursReport'
UPDATE UniversalLog
SET LogRecord.modify('
delete logRecord/post')
SQL SERVER
Você pode criar índices XML usando a mesma definição do Transact SQL para criar índices relacionais. A sintaxe para criar um
índice primário XML segue abaixo:
Podem-se criar índices secundários sendo que, para este tipo de índice, existem 3 tipos distintos:
PATH, VALUE e PROPERTY.
Por enquanto ficaremos por aqui finalizando os estudos de XML e SQL Server 2005. Preparem-se, a viagem promete! Na próxi-
ma edição estarei apresentando algumas novas funcionalidades do SQL Server 2008.
Alexandre Lopes atua como consultor especialista em SQL Server em projetos da Y2K-TI (http://www.y2k-ti.com.br).
Possui mais de 10 anos de experiência na área de TI, sendo certificado Microsoft com os títulos MCT, MCSE e MCDBA. Como
instrutor MCT (Microsoft Certified Trainer) possui cerca de 4.200 horas ministrando treinamento oficial Microsoft.
29
Cinema
MEU NOME NÃO
É JOHNNY
http://www.meunomenaoejohnnyfilme.com.br/
O cinema brasileiro mais uma vez nos contempla com um anti-herói com cara de
mocinho. Na realidade Johnny, ou melhor, João Guilherme Estrella, é o herói do fil-
me. A maioria de nós torce por seu triunfo; chora por suas angústias, se emociona
com a sua trajetória.
Meu Nome Não É Johnny eleva ainda mais o nível do cinema brasileiro, chegando ao
patamar dos grandes filmes europeus. Mas o objetivo aqui não é fazer comparativos,
seja com o belíssimo mercado europeu ou com a bilionária fábrica de cinema holly-
woodiana.
A produtora Mariza Leão deu a tacada certa na escolha do elenco, colocando a frente,
Selton Mello no papel do carismático Johnny, Julia Lemmertz como mãe do protago-
nista e também a doidinha Cléo Pires, inspiração e perdição do nosso herói.
Mariza apostou forte no diretor Mauro Lima, que até então fez seus melhores traba-
lhos na música, produzindo e dirigindo bons vídeo-clipes e assinando alguns arranjos musicais. Mauro mandou bem na dinâmica dos diálogos.
Ok, nobres, como de costume, chega de ladainha e vamos pra pancada: análise do filme!
“O que é iiiiissso, vééééei? Que filme é esse? Alucinante, empolgante, vééééi, me fala aí!?”. Essa pérola saiu de
um brother, que prefiro manter anônimo, mas que retrata o sentimento de quem assiste ao filme.
Johhny, um playboy de classe média-alta, adorado pelos pais e muito popular entre os amigos, vive sempre
acelerado, bom anfitrião das festas promovidas que ocorrem em sua mansão. Consumindo uma droguinha
aqui, outra ali, mas nada pra deixá-lo doidão, até que vê uma excelente oportunidade de negócio naquele
movimento todo. Compra uma pequena quantidade e revende. Lucro certo. Aumenta o volume de com-
pra e melhora o nível das festas. O dinheiro entra e sai muito fácil da mão de Johnny.
Numa das festanças conhece Sofia, interpretada por Cléo Pires, e tem um romance avassalador. Numa
grande transação, Johnny vai torrar seu dinheiro na Europa, com sua doce amada.
Cenas dramáticas se misturam com momentos hilários e por que não dizer impagáveis, como a chegada de um novo chefe na prisão. O novo big boss,
interpretado por Luis Miranda (da trupe do Sob Nova Direção) chega pilhado pedindo “Meque Donáud”, “meque nuguétis” e outras iguarias com sua gíria
hilariante. É dele também um dos momentos mais engraçados do filme, quando Johnny é forçado „a traduzir um diálogo entre brasileiros e africanos.
Cássia Kiss, também tem uma atuação interessante no papel de juíza. Ela consegue transmitir um forte sentimento de angústia, momentos de reflexão e
muita energia. Fique atento ao postal enviado pela juíza. Não perca tempo. Vá contemplar o cinema nacional com esse bom filme. Altamente recomenda-
do.
Blogs:
Alexandre Tarifa: http://blogs.vstsrocks.com.br/alexandretarifa/default.aspx
Emerson Facunte: http://www.facunte.com.br
Diego Nogare: http://www.diegonogare.net
Sites Recomendados:
Visual Studio 2008: http://msdn2.microsoft.com/en-us/vstudio/aa700830.aspx
SQL Server CTP: http://www.microsoft.com/sqlserver/2008/en/us/trial-software.aspx
31
.Close()
Windows Forms... também conhecida de Desktop, winforms, client, aplicaçãozinha que se instala, etc... é um tipo de aplicação utiliza-
do a alguns anos (desde a era VB) em muitas empresas como padrão de interface de aplicações. Como todas as outras tecnologias
sofreu muitas alterações durante esses anos, e dentro da plataforma .Net foi incorporada oficialmente como Windows Application e
a versão mais recente é a 2.0.
Muitas pessoas dizem que seria o fim das aplicações Windows Forms com o domínio das aplicações web... que domínio? Enfim, nin-
guém pode negar que desenvolver uma aplicação Windows Forms é muito mais produtivo do que uma aplicação web... mas tudo
bem, pouco importa se o desenvolvedor tem mais trabalho ou não... pensando no cliente... uma aplicação Windows Forms também
oferece uma produtividade MUITO superior... e não venham me dizer que os frameworks AJAX da vida oferece uma produtividade
semelhante que é IMPOSSÍVEL.
Tecnicamente a justificativa é simples: Windows Forms – todo o poder do computador do cliente. Web – todo o poder (pouco) do
Browser.
Agora, se pensarmos em distribuição, é inegável também que é muito mais simples distribuir uma aplicação Web... mesmo com re-
cursos novos como o Click Once, que utiliza Web para distribuir... podemos dizer que Web tem uma vantagem boa.
Porém, como grandes partes das aplicações Windows Forms são feitas como solução para ambientes coorporativos, ai o cenário
muda... distribuir Windows Forms fica tão fácil como uma aplicação Web.
Acredito que a morte do Windows Forms não viria devido às aplicações Web.
Finalizado essa discussão agora entra a briga mais acirrada. A Microsoft lançou recentemente as aplicações WPF (Windows Presenta-
tion Foundation) que é uma revolução do Windows Forms com um ambiente gráfico mais rico (3D) oferecendo recursos de interfa-
ce realmente muito ricos... mais ricos do que Windows forms.
Fazendo uma comparação boba: Asp.Net – Classe média, Windows Forms – Classe Alta e WPF – Milionários.
Porém tudo tem um custo. Hoje ainda, mesmo com o Visual Studio 2008, é muito mais produtivo desenvolver uma aplicação Win-
dows Forms... são mais de 10 anos de maturidade e ferramentas evoluindo.
Ainda sim, muitas aplicações vão ser feitas em WPF. Principais razões: Modismo, vão dizer por ai que é legal e algumas realmente por
necessitar dos recursos sensacionais do WPF.
Agora, aplicações comerciais... faturamento, contas a pagar, BI, folha de pagamento, etc etc etc... não existe a menor razão para isso.
Alexandre Tarifa é MVP Visual Developer Visual Basic .Net, bacharel/pós graduado em Ciência da Computação, trabalha em
diversos projetos. Tem participado de diversos projetos que começam como Web e terminam com Smart Client.
Especialista .Net e Líder de Projetos na ITGROUP (www.itgroup.com.br), editor da revista Codificando e-Magazine e fanático
torcedor do São Paulo Futebol Clube. Blog: www.vstsrocks.com.br/alexandretarifa.