codificando .net magazine - edição 03

34
ANO I NUMERO 3 Dicas | Colunistas | Promoções | Destaque do Mês | Powered by Microsoft Publisher #3 Codificando Net e-magazine

Upload: weliton-junior

Post on 12-Jun-2015

576 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Codificando .NET Magazine - Edição 03

ANO I NUMERO 3

Dicas | Colunistas | Promoções | Destaque do Mês |

Powered by Microsoft Publisher #3

Codificando Net e-magazine

Page 2: Codificando .NET Magazine - Edição 03

Chegamos na quarta edição, a número 3 e vamos evoluindo a cada edição graças ao forte apoio da comu-

nidade, colunistas, de MVPS, da Microsoft, etc... Estamos preparando um novo site para aumentar os aces-

sos a revista, em breve teremos um layout (valeu Thiago e agencia Cingular) muuuuuito melhor do que o

atual.

Esta edição um destaque especial aos brasileiros campeões da Imagine Cup na Coreia!!! Sensacional con-

quista!!! E dizem que o Brasil é só o pais do futebol :(

Teremos também um artigo sobre Metodologias muito interessante e dicas preciosas de performance,

segurança e boas práticas para ASP.Net... Imperdíveis.

E claro, nossos colunistas continuam implacáveis com colunas cada vez mais interessantes, quem perdeu

alguma coluna, basta baixar no site da revista http://www.codificandomagazine.net as edições anteriores.

Uma novidade desta edição é o artigo sobre Saúde e Nutrição, para pessoas ligadas a área de saúde... É

bom pararmos um pouco para ler sobre o assunto!

Mas o grande destaque é uma entrevista exclusiva com Paul Vick, feita pelo repórter Alfred Myers... Im-

perdível a leitura da entrevista com o arquiteto principal de VB na Micro-

soft.

Desejo a todos uma ótima leitura.

Alexandre Tarifa

[email protected]

Editorial

N E S T A

E D I Ç Ã O

Entrevista 3

Artigo

Ágil

5

Artigo

Asp.Net

10

Artigo

Saúde

12

Imagine Cup 13

Coluna

XNA

19

Coluna

Biz.talking

20

Coluna

SQL

22

Coluna

Silverlight

25

Coluna

Acadêmico

28

Coluna

Compact Plane

29

Entretenimento 33

Coluna:

.Close()

35

P O W E R E D B Y

C O D I F I C A N D O . N E T

S E T E M B R O 2 0 0 7 E D I Ç Ã O 3 A N O I

Codificando Net e-magazine

Equipe

Editor:

Alexandre Tarifa

Emerson Facunte

Reporter

Alfred Myers

Colaboradores:

Hélio Sá Moreira

Feio Tomaz

Eduardo Gomes

Maurício Wieler

Israel Aéce

JALF

Fábio Camara

Bruno Sonino

Ramon Durães

Diego Nogare

Alexandre Lopes

Page 3: Codificando .NET Magazine - Edição 03

Entrevista: Paul Vick - arquiteto do Visual Basic

Nosso repórter Alfred Myers entrevistou a arquiteto principal do Visual Basic Paul Vick. Veja a entrevista completa e exclusiva com um dos principais funcioná-

rios da Microsoft responsável pela linguagem mais utilizada do mundo.

Alfred Myers: Quem é você e o que você faz na Microsoft?

Paul Vick: Eu sou Paul Vick e sou um dos principais arquitetos (Principle Archi-

tect) no time de Visual Basic. O cargo de arquiteto pode significar muitas coisas

na Microsoft, mas no meu caso significa que eu ajudo a definir a direção técnica

do produto, mas não gerencio pessoas diretamente. Então posso fazer coisas de

que gosto como determinar como recursos serão projetados e escrever algum

código e não preciso me preocupar muito com as coisas de que não gosto como

rastrear bugs, definir tarefas e gerenciar o dia-a-dia do pessoal. Minha principal

área de responsabilidade é projeto (design) da linguagem e a arquitetura do com-

pilador que são coisas com que venho trabalhando de uma forma ou outra há

quase dez anos.

AM: Como você foi parar na Microsoft?

PV: A Microsoft me recrutou na universidade, então eu peguei um estágio no

meu primeiro ano do curso com o time de Access. Naquela época, para mim a

Microsoft nem fedia nem cheirava – eu sempre pensei que iria trabalhar numa

empresa como a Apple já que cresci brincando com um computador Apple ][+,

mas aquilo foi um ótimo estágio, então decidi continuar. Trabalhar com o time do

Access era maravilhoso e no final do estágio eles me ofereceram emprego. Eu

acabei decidindo voltar à universidade para acabar o meu curso, embora pudesse ter valido muito a pena financeiramente se eu tivesse ficado.

AM: No que você trabalhou antes de se juntar ao time do Visual Basic?

PV: Quando eu voltei à Microsoft, eu comecei a trabalhar no time do Access novamente da versão 1.0 até a 97 fazendo um monte de coisas no query designer

e no container de banco de dados. Eu também trabalhei bastante tempo no porte do Access para Windows 95 assim como fazendo trabalho de desempenho

para o Access 97. Depois que o Access 97 foi lançado, eu fiquei mais ou menos um ano trabalhando com OLE Automation, mas saí quando se tornou claro que

aquilo seria substituído pelo o que acabou se tornando o .NET Runtime.

AM: É verdade que o Access era escrito em Assembly até antes do 95?

PV: De forma alguma! O Access era escrito em C, embora eu imagino que um pouco de C++ tenha se infiltrado no código no decorrer dos anos. Quando o

Access começou, não acredito que a Microsoft tivesse um compilador C++ realmente sólido ainda. Não acredito que nada do código estivesse em assembly,

embora acredite que a implementação original do Access Basic (um precursor ao VBA) estivesse. Um fato interessante é que devido às limitações das ferra-

mentas da época, quando eu me juntei ao time, a compilação era feita no OS/2. Uma das coisas em que trabalhei no início foi mover a compilação para o Win-

dows.

AM: Existe alguma diferença de implementação dos tipos anônimos entre o Visual Basic e o C#? Quais são?

PV: A principal diferença é uma que veio bastante tarde no ciclo de produto do Visual Studio 2008. Os dois times perceberam que há situações onde os tipos

anônimos precisam ser imutáveis – isto é, todos os seus campos devem ser somente leitura. Geralmente, isto acontece quando os tipos anônimos são usados

como chaves, como por exemplo, quando você agrupa por múltiplos campos de uma vez. Já que nestas situações o tipo anônimo é utilizado como um valor

hash de um hash table, o valor dos campos não pode mudar.

O time de C# decidiu simplesmente tornar os tipos anônimos imutáveis. Já que lá os tipos anônimos não podem ser passados para fora do método, eles acre-

ditaram que isto não seria uma perda muito grande. Contudo, como você pode usar o late binding do Visual Basic para usar tipos anônimos passados de outros

métodos, nós tivemos uma abordagem diferente. Nós permitimos que você defina se determinados campos de um tipo anônimo são somente-leitura ou não

usando um modificador “Key”. Você pode obter mais informações em http://www.panopticoncentral.net/archive/2007/05/11/20566.aspx.

AM: Eu soube que o VB foi usado para escrever um compilador JScript. Que versão do compilador, a mesma que vem no .NET Frame-

work? É baseado no padrão proposto do ECMAScript 4.0?

PV: O compilador JScript baseado em .NET que foi liberado com a versão alfa do Silverlight 1.1 foi escrito usando Visual Basic 2005. Isto não é exatamente

uma surpresa, já que ele foi escrito por um antigo membro do time de Visual Basic. Ele implementa a versão atual 3.x da linguagem, imagino.

3

Page 4: Codificando .NET Magazine - Edição 03

Entrevista: Paul Vick - arquiteto do Visual Basic

AM: A versão atual do compilador VB é escrito em C++. O pessoal do Mono fez uma versão bootstrapping (eles podem usar o compilador

Basic deles para compilar o próprio compilador). Você disse a algum tempo que não havia motivo para portar a base de código do compi-

lador VB para VB. Alguma coisa mudou de lá pra cá?

PV: Embora isso possa ser divertido, eu acho que jamais haverá um bom motivo para escrever o compilador do VB em VB só por escrever. Se estivéssemos

começando hoje, nós provavelmente faríamos isto, mas dado ao enorme investimento que temos hoje na base de código, é difícil justificar tantos homens/ano

só para terminar onde começamos. Dito isto, ao passo que cada vez mais o mundo se move rumo ao .NET, nós necessariamente teremos de começar a inte-

roperar mais com código gerenciado e isto poderá ser o motivo que precisávamos para mover ao menos parte do compilador para código gerenciado. É uma

coisa que teremos de ver mais adiante.

AM: O Phoenix já é levado em consideração no planejamento da próxima versão do VB? Quais seriam os prós e contras de usá-lo?

PV: Pensar como o Phoenix pode se encaixar no compilador VB é definitivamente uma parte de nosso processo, mas nós não temos planos neste momento.

O trabalho que o time do Phoenix fez em análise de código, otimização de código e geração de código não-gerenciado é obviamente atraente e pode nos ofe-

recer benefícios em termos das funcionalidades e velocidade.

AM: Eu soube que o VBx está sendo construído em cima da DLR. Isto significa

que vocês estão jogando a base de código em C++ fora? Se não, quais os novos

recursos sendo desenvolvidos no próprio VB?

PV: Nós não estamos jogando nada fora, ainda... VBx é um protótipo em que estivemos

trabalhando que se integra com a DLR e permite que o VB seja hospedado como uma lingua-

gem de script usando o modelo de hospedagem (hosting) da DLR e também permite que o

VB interopere bem com outras linguagens DLR como Python, Ruby e JScript. Ele é escrito

em código gerenciado, mas o que isto significa em longo prazo é incerto já que é somente

um protótipo. Como eu respondi a uma pergunta anterior, é improvável que a gente simples-

mente vá jogar fora qualquer porção considerável do nosso código, embora eu possa imagi-

nar a gente escrevendo algumas partes em código gerenciado para trabalhar melhor com a

DLR.

AM: De que forma ser construído em cima da DLR faz o VB interoperar melhor

com outras linguagens que também o são como IronPython e IronRuby?

PV: Linguagens como Python e Ruby têm sistemas de tipos dinâmicos que não mapeiam bem

para o sistema de tipos da CLR. A DLR define uma maneira para chamadas dinâmicas passar

eficientemente entre as linguagens, então construir em cima da DLR nos permite chamar

métodos escritos em Ruby e Python de uma forma bastante natural. Como a DLR é bastante

preocupada com o desempenho de late-binding, construir em cima da DLR também significa que o late-binding a objetos “normais” da CLR ficará bem mais

rápido.

AM: Isto significa que as linguagens que não são construídas em cima da DLR não interoperam tão bem com as que são?

PV: Bem, qualquer linguagem que não é integrada com a DLR será capaz de chamar objetos produzidos por linguagens construídas em cima da DLR, mas vai

ser bem esquisito e não muito agradável.

AM: A DLR é o tipo de coisa que eventualmente será incorporada à CLR? Como a DLR evoluirá no futuro?

PV: Esta é uma pergunta excelente, mas que será melhor se perguntada ao time de DLR. Nossos planos são construir a nova versão do VB com integração à

DLR, então isto indicaria que a DLR estará amplamente disponível, mas exatamente como isto vai acontecer ainda é uma questão em aberto neste momento.

AM: Como você vê o papel da comunidade na evolução do VB?

PV: A comunidade nos fornece um feedback enorme através de mecanismos como os blogs, MSDN e o programa MVP, mas acredito que sempre haja espaço

para a melhoria. A versão 2008 do Visual Studio foi realmente dominada pelo LINQ, então há muitos pedidos e sugestões da comunidade que simplesmente

não foram incorporados, mas eu espero que sejam da próxima vez. E eu gostaria de nos ver divulgando nossas idéias e planos mais cedo para que as pessoas

tenham ainda mais tempo de nos dar feedback. A comunidade é parte fundamental do nosso processo de desenvolvimento e qualquer coisa que possamos

fazer para incluí-los ainda mais é maravilhoso!

FIM.

4

Page 5: Codificando .NET Magazine - Edição 03

Artigo: Um cardápio ágil para todos os gostos

Um projeto de software está com problemas sérios. Peguei um livro e li: O mau gerenciamento pode incrementar os custos de um projeto de software mais

rapidamente que qualquer outro fator, escreveu Barry Boehm em 1981. Peguei outro livro e li: Adicionar pessoas faz um atrasado projeto atrasar ainda mais, escre-

veu Frederick Brooks em 1995.

Neste cenário assustador questionei-me: o que vou fazer diferente se preciso de resultados diferentes? Como compreender os verdadeiros obstáculos do

gerenciamento de um projeto de software?

A resposta que mais gostei foi demonstrada pelos métodos ágeis. O pensamento ágil reconhece 5 obstáculos no gerenciamento de projetos de software. São

eles: pessoas, tempo, funcionalidades, orçamento e recursos (excluindo pessoas).

Vamos conhecer um pouco como as propostas ágeis e suas técnicas diferentes lidam com estes 5 obstáculos, comentando levemente particularidades sobre

XP, MSF, SCRUM e FDD.

eXtreme Programming

Métodos ágeis são propostas incomuns de técnicas para projetos de software. XP, como o nome sugere, é algo um pouco mais radical. Propostas estranhas de

técnicas esquisitas fazem os gerentes de projetos temerem utilizá-las em grandes projetos. Para atrapalhar ainda mais as poucas iniciativas de se quebrar para-

digmas, o radicalismo de alguns pensadores de XP afastam a compreensão sobre as reais vantagens e os benefícios para o negócio que podemos alcançar com

estes métodos.

A programação em pares, um dos mais diferentes e originais métodos do XP, traz para o gerente do projeto a necessidade de uma posição sem hipocrisia. Ou

você ama, ou você odeia. Até hoje não encontrei um gestor “em cima do muro” sobre esta técnica.

Como exemplo, vamos citar Karl Wiegers, famoso autor de livros técnicos, que afirma em seus ensinamentos que a programação em pares como forma de

inspecionar código não é efetiva na redução dos defeitos. Segundo o mesmo, entre 25 % e 35 % é o ganho atingido no aspecto “defect reduction”. Esta afirma-

tiva é questionada por David Anderson, outro grandioso autor, que defende um número percentual em torno de 50%.

Já em minha própria vivência, as reuniões em pé (stand-up meeting) são fabulosas em quase todos os aspectos. Particularmente acredito no pensamento de

Jonh Kennedy, ex-presidente dos EUA, que dizia: quando se quer não fazer nada fingindo que está trabalhando, entre em uma reunião.

Listamos a seguir os principais métodos polêmicos do XP:

Na minha leitura, o XP é uma proposta muito completa de ciclo de vida de desenvolvi-

mento de software, agradando ou não um gestor de projetos. Um dos principais funda-

dores do XP chama-se Kent Beck.

5

Page 6: Codificando .NET Magazine - Edição 03

Artigo: Um cardápio ágil para todos os gostos

FDD – Feature Driven Development

Criado entre 1997 e 1999 em Cingapura por um time liderado pelo Jeff De Luca, é uma simples compilação de práticas estabelecidas nos últimos 30 anos. Um

de seus maiores desenvolvedores, Peter Coad, definiu a idéia de Feature Definition e Feature List. Diversos renomados autores participaram da concepção das

idéias do FDD. Dentre estes destacamos: Tom De Marco, Tim Lister, Jerry Weinberg e Frederic Brooks.

Em sua essência, FDD é mais um método de gerenciamento de software do que um ciclo de vida de desenvolvimento de software. Resumidamente, FDD é

dividido em 5 fases que explicam sua função. São elas:

Shape Modeling – é uma forma de questionar se todos compreendem o que é para fazer, analisar requisitos não-funcionais e modelo de arquitetura;

Feature List – É a representação do escopo listando a compreensão do que é para ser feito e os requerimentos a serem desenvolvidos;

Plan by subject area – É a modularização da lista em conjuntos de funcionalidades relacionadas, permitindo o desenvolvimento de parte do sistema autono-

mamente;

Design by feature set – É uma orientação que determina o desenvolvimento com base no domínio do problema. Sugere-se nesta fase uma modelagem pro-

funda e detalhada em UML;

Build by Chief Programmer Work Package – É o empacotamento de pequenas funcionalidades, uma redução evolutiva que nasce na fase 2 até a fase 4.

Prioriza-se este pacote, codificando sua funcionalidades e criando unit tests.

FDD define também 4 camadas de arquitetura de software:

Notamos que o “core” de todas as fases e das camadas de arquitetura é a funcionalidade (feature). Cada funcionalidade é defin ida com uma fórmula simples,

que permite ser repetível e confiável. A fórmula da funcionalidade tem a seguinte estrutura:

<action> <result> <object>

Exemplo:

<action> O valor total de vendas

<result> Faturamento bruto mensal

<object> Produtos vendidos no período

6

Page 7: Codificando .NET Magazine - Edição 03

Artigo: Um cardápio ágil para todos os gostos

MSF – Microsoft Solutions Framework

Disseram-me que MSF só funciona em projetos com tecnologias da Microsoft. É impressionante a associação restritiva que naturalmente os desinformados

impõem as coisas. Também já ouvi que metodologias ágeis só são recomendadas para projetos pequenos. Pior que isso! Ouvi de uma diretora de TI de um

banco: _ Hoje nós somos ágeis (referindo-se a ausência de gestão e de análise de requisitos de seu departamento), queremos ser mais organizados.

Estudando o assunto há 9 anos, eu sempre considerei o MSF uma proposta equilibrada, aonde seus 2 modelos e suas 3 disciplinas nunca se apresentaram como

uma espécie de bíblia sagrada, determinística ao sucesso ou fracasso de seu projeto. Inclusive na versão 3.1 do MSF, antes da formalização das propostas ágeis

no ano de 2001, tinha como conceito chave: _ Stay agile, expect changes.

O MSF 4.2, possui duas novas instâncias: MSF for Agile Software Development e MSF for CMMI Process Improvement. Podemos afirmar que o MSF Agile é um

mix de posições equilibradas, pois defende um SDLC (Software Development Life Cycle) mais curto com iterações de no máximo 4 semanas, contudo preser-

va a importância dos papéis definidos previamente e abomina a linha “todo mundo pode fazer tudo no projeto”. Outro quesito de destaque nesta fusão são os

testes unitários e a preocupação com a cobertura de 100% do código fonte.

Um tema muito forte dentro do MSF Agile é integração. Metodologias ágeis necessitam que os “stakeholders” estejam presentes o tempo todo durante o pro-

jeto. Para isso são constituídos cenários de tarefas de trabalho que englobam atividades planejadas para um desenvolvedor. Estes cenários fazem parte de uma

determinada iteração do plano de iterações. Esta iteração agrupa os cenários de desenvolvedores e os cenários de testes (que são efetuados em seguida ao

desenvolvimento). Desta forma controla-se a integração de um time com papéis diversos dentro do projeto (usuário, desenvolvedor e analista de testes).

Para o MSF, um projeto precisa dos seguintes papéis (entende-se papéis como responsabilidades que devem ser assumidas por algum membro da equipe):

É árduo afirmar que foi o fundamentador do

MSF, porém o grande patrocinador sempre foi

a própria Microsoft. Para não ficar em branco

com nomes, Michael Cusomano, Steve Mc-

Connell destacam-se entre muitos outros

como personagens da história do MSF.

7

Page 8: Codificando .NET Magazine - Edição 03

Artigo: Um cardápio ágil para todos os gostos

SCRUM

SCRUM é um método de gerenciamento de software que pode ser usado com XP ou MSF. É baseado na teoria do controle empírico de processos e seus

fundamentos são originados na indústria de manufatura japonesa.

Segundo o SCRUM, o desenvolvimento deve ser trabalhado em 3 níveis: Sprint, Release e Product.

O ponto central é que os requisitos são convertidos em uma lista que contém valores do cliente chamada Product Backlog. Um sub-conjunto desta lista é cria-

do e chamado de Release Backlog. Este sub-conjunto é particionado mais uma vez transformando-se em Sprint, uma espécie de acordo de desenvolvimento de

funcionalidades que após aceito pela equipe não deve ser mais alterado.

Praticando SCRUM, o que mais chama a atenção é a simplicidade. Controlar projetos desta forma é participar de um jogo competitivo e saudável em que to-

dos se auto-avaliam todos os dias (daily stand-up meeting) tornando possível resultados e técnicas de melhoria contínua.

O gerente de projetos como conhecemos hoje, na proposta SCRUM, é chamado de SCRUM Master. Suas principais responsabilidades resumem-se em duas:

Proporcionar a passagem técnica e retirar todos os impedimentos. A equipe do projeto é dividida em apenas 3 papéis: o SCRUM Master (coach), o Product

Owner e a equipe.

Em diversos aspectos, as técnicas do SCRUM diferenciam-se das propostas convencionais. Destaque para:

Para saber mais sobre SCRUM, é imprescindível ler

algum dos títulos lançados por Ken Schwaber.

O que experimentar

Independente de sua curiosidade para novos sabores, os métodos ágeis são uma honesta resposta a pergunta: o que vou fazer diferente se preciso de resulta-

dos diferentes?

Baseados em processos iterativos incrementais e empíricos, os métodos ágeis são indiscutivelmente diferentes das propostas tradicionais que são fundamenta-

das em processos cascata. Esta diferença pode ser a resposta a sua dúvida também.

Experimente!

Fábio Câmara ([email protected]): Microsoft MVP VSTS, MCT, MCSD .NET, MCTS - TFS, ITIL Founda-

tions, Certified SCRUM Master e MSF Practitioner, Acredita em bons resultados em projetos com técnicas ágeis, prin-

cipalmente para as características do mercado brasileiro.

8

Page 10: Codificando .NET Magazine - Edição 03

Artigo: Performance, Boas Práticas e Segurança para Asp.Net

Recentemente um amigo me procurou para dar algumas dicas se segurança e performance para melhorar de uma aplicação Web. Depois da ajuda, eu

decidi disponibilizar essa listagem aqui na Codificando e-Magazine. Compilei algumas dicas e disponibilizei abaixo essa listagem, com algumas guidelines

que julgo necessárias para quando for desenvolver e disponibilizar a aplicação em um servidor Web. É importante dizer que isso pode ou não ser im-

portante, dependendo de qual o cenário da aplicação/empresa.

Performance

Desabilite a Session nas páginas que você não precisa dela. Isso pode ser realizado através do atributo EnableSessionState da diretiva @Page. Se não

for utilizar na aplicação como um todo, então desabilite a nível de aplicação, através do elemento enableSessionState no elemento do arquivo

Web.Config.

Sempre defina para false a propriedade EnableViewState para quando não precisar do ViewState na página Web. Através do atributo maxPageStateFi-

eldlength definido dentro do elemento , você tem a possibilidade de "quebrar" o campo __VIEWSTATE. Mas isso não traz melhora em termos de

performance. Essa configuração é útil para quando alguns proxies e firewalls barram o acesso a determinadas páginas, quando ela, por sua

vez, contém campos ocultos com um grande conteúdo.

Defina o atributo debug do elemento compilation para false. Quando definido como true em ambiente de produção, é um dos grandes vilões de

performance. Se desejar que todas as aplicações do servidor Web obrigatoriamente estejam com este mesmo comportamento, voce pode definir

para true o valor do atributo retail do elemento deployment do arquivo Machine.config do servidor Web.

Considere a utilização de OutputCache. Para facilitar a manutenção, utilize o CacheProfile.

Remova todos os módulos que não estão sendo utilizados pela aplicação.

Reduza a quantidade de round-trips entre o cliente e o servidor. Para isso, utilize sempre que possível o método Server.Transfer.

A compactação da resposta a ser enviada para o cliente é sempre uma boa opção. Além disso, remova caracteres desnecessários, como espaços

em branco e TABs.

Utilize sempre DataReader para ter uma forma eficiente de carga de dados.

Paginar os resultados é quase sempre uma necessidade para exibição de dados.

Defina para true o atributo enableKernelOutputCache do elemento httpRuntime (acredito que isso já seja o padrão). Isso tem um benefício a nível do

IIS, mas atente-se que, em alguns cenários, essa configuração pode trazer resultados inesperados.

Remova todos os HTTP Headers desnecessários. Quando você instala o .NET Framework, é criado um valor por padrão dentro do IIS, que é envia-

do como resposta para todos os clientes que consomem a aplicação. Geralmente é algo como: "X-Powered by ASP.NET". Você pode remover dire-

tamente do IIS ou via atributo enableVersionHeader do elemento httpRuntime.

Considere a utilização de páginas assíncronas quando possível.

1 0

Page 11: Codificando .NET Magazine - Edição 03

Artigo: Performance, Boas Práticas e Segurança para Asp.Net

Segurança

Toda aplicação Web roda sempre em FullTrust. Considere utilizar Medium (partial trust) já que ela atende a maioria dos casos, inclusive na versão

2.0 do .NET Framework, esse nível já concede acesso ao SqlClientPermission, responsável por gerenciar o acesso à servidores SQL Server. Para

alterar esse nível, você pode utilizar o atributo level do elemento trust no arquivo Web.Config da aplicação ou do servidor Web, se desejar que

todas as aplicações que estão rodando ali sejam definidas como medium trust.

Não permita que outros desenvolvedores sobrescrevam a sua policy. Para isso, defina o atributo allowOverride como false.

Sempre crie uma página padrão de erros para que os usuários seja redirecionados para ela quando um problema ocorrer. Para isso, configure a

seção do arquivo Web.Config. Neste mesmo local, evite que as exceções sejam enviadas para os usuários, definindo o atributo mode para Remote-

Only. Isso evitará exibir detalhes da exceção que ocorreu, qual pode comprometer a sua aplicação.

Todos os parâmetros fornecidos pelo usuário (Forms, QueryStrings, etc.) devem ser validados por tamanho, tipo e formato.

Páginas importantes, que podem sofrer alguma espécie de ataque, podemos configurar a sua propriedade ViewStateUserKey para um valor qualquer

(Session.SessionID), evitando assim, ataques de "one-click".

Nunca armazene informações sigilosas em QueryStrings ou ViewState. Se necessitar armazenar algo importante no ViewState, então criptografe-o.

Para isso defina o valor "Auto" para o atributo viewStateEncryptionMode do elemento e invoque o método RegisterRequiresViewStateEncryption na

página em que deseja armazenar o conteúdo sigiloso no ViewState.

Use SSL somente em páginas que realmente precisam deste nível de segurança.

Criptografe a seção de connectionStrings.

Criptografe a seção de appSettings quando ele possui informações confidenciais.

Quando for conectar com uma base de dados qualquer, utilize um usuário que só tenha permissão necessária para manipular os objetos que estão

sendo utilizados pela aplicação, nada mais.

Sempre armazena password "hasheados" na sua base de dados. Quando utiliza a arquitetura do Membership, ele já fornece isso intrinsicamente.

Defina para true o atributo httpOnlyCookies do elemento httpCookies no arquivo Web.Config. Esse atributo permite ou não que código client-side

acessem o cookie.

Boas Práticas

Sempre extraia strings de arquivos de Resources (*.resx). Mais cedo ou mais tarde, alguém sempre pede para você globalizar a aplicação. :)

Defina o nome da aplicação no atributo applicationName quando utilizar o Membership/RoleProvider/Profile.

Se estiver utilizando o tratamento global de exceções, habilite o Health Monitoring para logar as exceções e efetuar uma posterior análise.

Desabilite o Trace em produção. Quando precisar habilitá-lo para poder monitorar alguma requisição, então define o atributo localOnly como true, para que o

output possa ser somente visualizado no próprio computador onde a aplicação está sendo executada.

1 1

Israel Aéce ([email protected]) - Microsoft MVP, MCP, MCAD, MCTS e MCT.

Fundador do site Projetando.NET (http://www.projetando.net). Atualmente atua como desenvolvedor de aplica-

ções .NET. Blog: http://weblogs.pontonetpt.com/israelaece/.

Page 12: Codificando .NET Magazine - Edição 03

Saúde: Alimentação X Trabalho

O estresse da rotina diária, o sedentarismo e uma alimentação errada, vem sendo os grandes responsáveis pelo aparecimento de sintomas e doenças

crônicas que comprometem a qualidade de vida da maioria das pessoas e principalmente dos que entram em um escritório pela manhã e não tem hora

para sair. Um caso comum são as pessoas que trabalham em TI.

A alimentação saudável é um dos principais caminhos na busca da qualidade de vida, já que garante ao organismo a energia e os nutrientes essenciais

para o bom funcionamento do corpo.

É cientificamente comprovado que a mudança nos hábitos alimentares e a introdução de exercício físico na rotina pode influenciar fortemente vários

fatores de risco na população, como obesidade, hipertensão arterial, hipercolesterolemia, alteração nos níveis de glicose sanguínea, entre outros.

O que se percebe é que a dieta consumida por estas pessoas está produzindo uma série de desequilíbrios nutricionais. Hábitos como consumo excessi-

vo de gorduras saturadas e trans, alta ingestão de sódio, consumo excessivo de calorias, diminuição da ingestão de frutas, verduras e legumes, elevado

consumo de açúcares e deficiência de algumas vitaminas e minerais, são práticas comuns na rotina.

Seguem algumas dicas que podem te ajudar a melhorar seu estilo de vida:

Inclua algum tipo de exercício físico na sua rotina;

Nunca saia de casa sem se alimentar. Faça sempre um café da manhã com uma fonte de carboidrato (pão de preferência integral ou cereal sem

açúcar ou biscoitos integrais), uma fonte de proteína (frios magros ou queijos brancos e leite ou iogurte de preferência desnatados) e frutas ou sucos

naturais Esta refeição é fundamental para garantir melhor memorização, concentração e disposição para o dia de trabalho;

Procure não ficar mais de 3 horas em jejum. Tenha sempre algum alimento saudável para comer entre as refeições grandes. Boas opções são: fru-

tas, iogurtes, barra de cereal, suco de fruta natural, biscoito integral ou frutas secas.

Para os intervalos exclua da rotina as guloseimas: biscoitos recheados, salgadinhos, docinhos, chocolates, bolos, entre outros, que além de ser

muito calóricos, são ricos em gorduras;

Beba pelo menos 2 litros de água por dia;

Para o almoço:

- cuidado com os excessos, sempre olhe as opções do buffet antes de começar a se servir e planeje o que irá comer na refeição;

- se atente ao tamanho das porções, além de qualidade a quantidade deve ser controlada;

- procure não ingerir alimentos muito gordurosos como: massas com molho branco ou queijos amarelos, empanados, carnes gordas ou com

molhos gordurosos, frituras e saladas com maionese ou creme de leite.

- consuma todos os dias folhas e legumes crus que, além de ajudar no bom funcionamento do intestino, estes alimentos são ricos em fibras

que ajudam a reduzir a absorção de gorduras e atrapalham a absorção do açúcar;

- sempre que possível, troque os alimentos normais pelos integrais: arroz, macarrão e inclua grãos como lentilha, ervilha e grão de bico;

- escolha sempre preparações assadas, grelhadas, cozidas ou no vapor;

- na hora de escolher as bebidas evite os refrigerantes e sucos com açúcar. Opte sempre por água ou suco natural e não ultrapasse 250 ml.

- quanto a sobremesa os doces além de muito açúcar, normalmente são ricos em gordura e devem ser evitados. Frutas frescas são as melho-

res opções.

- se for substituir a refeição por um lanche rápido, muito cuidado. Procure escolher o tipo de pão, optando sempre pelo integral e controle a

quantidade de gordura do recheio. Sempre preferir recheios de carnes magras e grelhadas ou frios magros, sempre acompanhar os sanduí-

ches com saladas e não fritas e não adicionar molhos gordurosos como maionese.

Para a noite, continue não optando pelos alimentos gordurosos e lembre-se que este é o horário de menor gasto de energia do nosso corpo e por

isso nossas necessidades de ingestão de energia estão diminuídas. Prefira saladas, carnes magras, sanduíches integrais com frios magros, ou sopas

leves.

1 2

Andréa Andrade - Nutricionista da RGNutri Consultoria Nutricional, graduada pelo Centro Universitário São

Camilo, especialista em Administração Hoteleira pelo SENAC, especializando em Fisiologia do Exercício pela

UNIFESP/Escola Paulista de Medicina (EPM), extensão Universitária em Nutrição Esportiva pela FEFISA (Faculdade

de Educação Física de Santo André), nutricionista atuante na área de Qualidade de Vida Empresarial.

ÁREA ESPECÍFICA DE ESTUDO E ATUAÇÃO: Nutrição Esportiva e Qualidade de Vida.

Page 13: Codificando .NET Magazine - Edição 03

A taça do mundo é nossa!!! Imagine Cup 2007

A final da Imagine Cup 2007 aconteceu na Coréia e teve a participação de diversos times brasileiros, dentre eles o time campeão em uma das categori-

as! Formado por 4 estudantes, a equipe conquistou com um projeto que encantou os jurados e trouxe para as terras brasileiras mais um título, mas

desta vez, não é no futebol :)

E N T R E V I S T A C O M A E Q U I P E C A M P E Ã !

Codificando Magazine: Como funciona a final na Coréia? Como é o dia

-a-dia e regras da disputa final?

Equipe: Cada categoria tem suas próprias regras. A final da nossa categoria

(Desenvolvimento de Sistemas Embarcados) funciona assim: os 15 finalistas fazem

uma apresentação teórica e uma demonstração, ambas com perguntas dos juízes.

Depois, os 6 melhores são anunciados, e estes fazem uma apresentação final, que

pode ter uma demo opcionalmente. Finalmente os 3 primeiros lugares são anun-

ciados na cerimônia final.

CM: Fale um pouco sobre o projeto campeão, quais as funcionalidades

e tecnologias utilizadas.

E: O projeto campeão é o E-du, que tem como objetivo reduzir o analfabetismo

pelo munfo, principalmente em países em desenvolvimento. Ele é composto de

vários módulos, para alunos e professores. O módulo do aluno (chamado e-du

mesmo) roda num computador simples, o ebox 2300, com Windows CE. Neste

programa o aluno interage usando um mouse em forma de caneta para resolver

exercícios interativos (com vídeo, som, animações, fala, etc.), sozinho ou com outros amigos via Bluetooth. O programa também controla um boneco

motorizado, apelidado de "Waldomiro", que reage às ações do aluno no exercício e ajuda na motivação.

As ferramentas do professor começam com um gadget para Windows Vista que recolhe as informações dos alunos (também por Bluetooth) e abre

uma aplicação consolidadora (feita em WPF) chamada E-ducator. Nesta ferramenta o professor pode ver o desempenho por aluno ou por exercício,

ver uma reprodução exata do aluno fazendo o exercício, e exportar esses dados para uma planilha Excel. Além do E-ducator, o professor pode criar

exercícios novos usando um programa chamado E-ducreator, que permite que o professor crie de maneira muito fácil lições, com toda a interatividade

e possibilidade de programar voz e ações do boneco.

Depois de pronto o exercício, o professor pode enviar para um ou mais alunos por Bluetooth, ou ainda compartilhar os exercícios no portal Shar-e-du,

onde ele pode baixar e avaliar exercícios de outros professores. Algumas tecnologias usadas foram: Windows CE, WPF, Bluetooth, Vista Gadgets,

AJAX.

CM: Qual metodologia e ferramentas vocês utilizaram no projeto e

como organizaram a questão da distância já que estavam com um time

com pessoas em lugares diferentes do Brasil?

E: A metodologia se baseou no MSF, e utilizamos como ferramentas o Visual Studi-

o e o Expression Blend. Com relação à distância, muito do trabalho foi feito de

maneira dividida, com reuniões freqüentes por Skype e MSN, além de muito email.

O projeto deu uma acelerada geral quando o pessoal de Recife (André, Carlos e

Ivan) vieram para SP logo antes da final brasileira de Software Design, e também

quando chegávamos mais perto da final na Coréia.

CM: Qual foi o planejamento que vocês fizeram para o projeto desde a

final Brasileira? Quanto tempo antes da competição vocês já trabalha-

vam no projeto?

E: Depois do 2o lugar na final brasileira, decidimos investir todo nosso esforço na

categoria Desenvolvimento de Sistemas Embarcados, adaptando e expandindo nos-

so projeto para os requisitos de hardware e software que essa categoria tem. Nós juntamos esta equipe mais ou menos na época do Tech-Ed 2006

(Outubro/06), mas o projeto começou a ser desenvolvido mesmo a partir de janeiro/fevereiro.

1 3

Page 14: Codificando .NET Magazine - Edição 03

A taça do mundo é nossa!!! Imagine Cup 2007

Entrevistamos também 3 dos campeões! Acompanhem:

A N D R É F U R T A D O

Codificando Magazine: Olá AFurtado, fale um pouco sobre você, sua

formação e experiências em Desenvolvimento.

André Furtado: Olá! Falando um pouco de mim: atualmente sou engenheiro

de software e consultor pelo projeto Partec-MyTV, recém-contratado para

trabalhar na Microsoft Corp (começando em janeiro nos EUA) e doutorando

em Ciência da Computação pela Universidade Federal de Pernambuco (UFPE).

Sobre minha formação: sou bacharel e mestre em Ciência da Computação,

também pela UFPE. Sou Microsoft Student Partner desde 2004, Certified MSF

Practitioner, MCP, Certified IBM-DB2 Specialist, Sun Certified Java Programmer

1.4, um dos líderes do Sharp Shooters .NET (primeiro grupo de usuários .NET

do Brasil) e participei de algumas outras competições no passado recente, sen-

do campeão mundial / nacional da Imagine Cup 2005, vice-campeão nacional do

Primeiro Desafio GV-Intel de Empreendedorismo e Venture Capital e campeão do primeiro XNA Challenge Brazil.

CM: Qual a sensação de representar o Brasil nesta competição e acima de tudo trazer o título de campeão? Cite também os mem-

bros do time campeão.

AF: A sensação é única, não dá para resumir em palavras. Em um país onde as glórias, quando existem, ficam restritas ao mundo do futebol e do carna-

val, é muito gratificante empunhar a bandeira verde-amarela no topo do pódio para mostrar ao mundo que também temos competência em tecnologia.

[Membros: André Furtado, Carlos Rodrigues, Ivan Cardim e Roberto Sonnino]

CM: Em algum momento durante a competição, você chegou a desanimar ou até mesmo desacreditar na conquista? Se sim, em

que momento isso foi revertido?

AF: Participar de uma competição como a Imagine Cup é viver momentos de muita tensão, no limiar do controle de nossas emoções, para o bem ou

para o mal. Talvez quem está do lado de fora enxergue apenas o passeio pela Coréia ou o tratamento VIP oferecido pela Microsoft aos competidores,

mas a verdade é que esses momentos de competição são os mais difíceis e desgastantes do ano para mim. Apresentação após apresentação, demonstra-

ções, anúncios de quem se classificou ou não, seguidos de mais apresentações, enfim, é muita coisa junta, que demanda um coração forte. E garganta

forte também! Nos bastidores, cheguei a ficar rouco, até mesmo a cuspir sangue (espero que minha mãe não esteja lendo...) por causa da maratona de

ensaios no quarto do hotel e de uma virose que piorou com o ar-condicionado. Dar sangue pelo Brasil, esse era o lema.

Enfim, são muitos os obstáculos vivenciados, do fuso horário totalmente invertido aos problemas técnicos. Esses últimos, potencializados pela Lei de

Murphy, são um espetáculo à parte. Em especial, cito o Bluetooth Hell que vivenciamos no dia da viagem: os dispositivos pararam de se comunicar ade-

quadamente, pois havia muitos deles, e a “bruxa da interferência” baixou no projeto. Felizmente, vídeos de backup que havíamos gravado quando as

coisas funcionavam proporcionaram um Plano B, que foi prontamente utilizado quando problemas similares aconteceram na hora da demonstração em

Seul. Ao final, deu para transmitir a idéia aos juízes, o que foi o mais importante.

Não posso dizer que “desacreditei na conquista” em nenhum momento pelo simples fato de que nunca fiz da conquista uma obsessão. Pensava em dar

o nosso melhor. Se o nosso melhor fosse o suficiente para vencer, então que fosse bem-vinda a vitória. Como uma conseqüência, não como um objeti-

vo.

CM: Na competição, alguns outros projetos se destacaram na sua opinião? Fale um pouco sobre esses projetos.

Sem dúvida, os concorrentes assustam. A começar pela própria concorrência nacional. Os dois outros projetos brasileiros eram da UNESP, que já havia

chegado antes nas finais da competição, quando ela ainda se chamava Windows Embedded Student Challenge. A parafernália dos competidores interna-

cionais também impressionou, embora nós não tivéssemos muito tempo para ver os projetos concorrentes. O pessoal da polônia usava um dispositivo

na testa para tratar de dislexia. O pessoal da Romênia criou uma mesa que formava caracteres Braille em relevo, para os cegos. Entretanto, mesmo

concorrendo em um nicho mais popular, a alfabetização, nossa solução conseguiu se destacar.

CM: Qual curso e universidade você estuda? A universidade ajudou ou influenciou nesta conquista? Como?

Curso doutorado em Ciência da Computação pela Universidade Federal de Pernambuco (UFPE). Sem dúvida, a UFPE foi peça-chave no processo, espe-

cialmente de forma mais indireta, na construção de nosso embasamento. Acho que um diferencial da equipe campeã do Brasil em relação a muitas ou-

tras foi o modo bem-argumentado, “redondo”, em que nossa proposta foi defendida, além de segurança e embasamento nas respostas à temida sessão

de perguntas dos juízes. Acho que isso não é o tipo da coisa que se constrói do dia para a noite, são proficiências que se adquirem ao longo de um

período de aprendizado que dura anos. Posso dizer que ser parte desse ecossistema que existe em Pernambuco, chamado “Porto Digital”,

que concretiza as oportunidades explorando o que há de mais importante (capital humano), fez a diferença.

1 4

Page 15: Codificando .NET Magazine - Edição 03

A taça do mundo é nossa!!! Imagine Cup 2007

CM: Qual a mensagem que você deixa de incentivo para quem pensa em participar da Imagine Cup do ano que vem?

AF: A Imagine Cup é uma oportunidade ímpar. Não existe coisa igual no mundo, sem exageros. Ter sua idéia avaliada por especialistas na área (e de

graça), fazer networking com pessoas de dezenas de países, culturas e línguas, colocar o espírito empreendedor à prova, aprimorar habilidades técnicas,

de apresentação e de comunicação, sentir a gostosa responsabilidade de representar o seu país e, por fim, projetar e dar visibilidade ao seu próprio

trabalho e talento são alguns dos benefícios de participar de uma Imagine Cup. Mesmo que você não prossiga para as fases seguintes da competição, sua

participação já vai lhe ter dado bons frutos, nem que seja mais maturidade e conhecimento para participar novamente no ano seguinte. Não se preocu-

pe se você acha que seu projeto ou idéia não são muito competitivos. Eles evoluem na competição, especialmente a partir do feedback de outras pesso-

as, em especial dos juízes. Participe com humildade, visando engrandecer sua experiência, e não a vitória. Esse é o segredo para se viciar na Imagine Cup

e, mais cedo ou mais tarde, ser bem-sucedido na competição.

CM: Para finalizar, qual a coisa mais estranha que você comeu na Coréia?

AF: Em um dia da competição, fomos levados ao Estádio Olímpico de Seul, em que um prato coreano estava

sendo preparado: o “bimbimbop”. Montaram um enorme panelão desse prato típico, que é feito com arroz, ve-

getais e carne, misturados de uma maneira também típica. Escolheram 5 estudantes dos 300 presentes para fazer

a mistura, e eu e o Carlos Rodrigues, outro membro do grupo, não perdemos a oportunidade. Participamos da

mistura, empunhando garfos, colheres e espetos gigantes. A mistura foi bem-sucedida, porém acho que o tempe-

ro não agradou a muitos: pimenta em excesso para os padrões brasileiros! Muitos recorreram à fila da batata-

frita e sorvete do lado de fora...

Por fim, estendi por conta própria minha experiência na Coréia por mais dois dias, após a competição, conhecen-

do melhor Seul e arredores com a equipe de Portugal. Tive a oportunidade de conhecer e registrar algumas coi-

sas bizarras, como uma barraquinha de espetinho com a foto de um cachorro na frente... Se era ou não o que

vocês estão pensando, deixo para vocês mesmos concluírem. Basta olhar a foto. (em tempo: não, não experimen-

tei!)

R O B E R T O S O N I N O

CM: Olá Roberto, fale um pouco sobre você, sua formação e experiências em desen-

volvimento.

RS: Meu nome é Roberto Sonnino, tenho 19 anos, estudo Engenharia da Computação na Poli-USP e

desde novo trabalho com design e desenvolvimento. Hoje em dia tenho como especialidade a área

de interfaces. Além desse título, fui campeão da IC2006 Índia na categoria Interface Design e vice-

campeão em 2005 na categoria Desenvolvimento Web Ensino Médip. Desde 2006, sou Microsoft

Student Partner (assim como André e Carlos, da equipe) e estou sempre por aí dando palestras e

cursos. Também mantenho um blog em http://virtualdreams.com.br/blog.

CM: Qual a sensação de representar o Brasil nesta competição e acima de tudo trazer

o título de campeão? Cite também os membros do time campeão.

RS: É sempre ótimo poder representar o país, tentando mudar um pouco a visão que os estrangei-

ros têm do Brasil. Claro que trazer a taça é muito gratificante, uma sensação de que todo o trabalho valeu a pena, com mais ânimo para seguir em fren-

te!

CM: Em algum momento durante a competição, você chegou a desanimar ou até mesmo desacreditar na conquista? Se sim, em que

momento isso foi revertido?

RS: Acho que um momento que trouxe um pouco de desânimo (apesar de estarmos bem preparados e com pé no chão) foi logo após o 2o lugar na

final brasileira. Estávamos bastante confiantes e, quando não conseguimos na categoria Software Design, ficamos um pouco desanimados. Mas já tínha-

mos o caminho traçado para o "plano B", então logo voltamos aos trilhos com força total. Para mim essa IC foi uma lição de superação, mostrar na

prática que sempre dá para tentar de novo.

CM: Na competição, alguns outros projetos se destacaram na sua opinião? Fale um pouco sobre esses projetos.

RS: Infelizmente a competição foi bem corrida, e não tive muito tempo para ver outros projetos. Um projeto específico que me deixou bastante im-

pressionado foi o projeto da categoria Filme Curta-Metragem da equipe do Brasil, Papa-paçoca, que faturou o 3o lugar na competição com um trabalho

muito interessante, bonito e profissional. Parabéns para eles!

CM: Qual curso e universidade você estuda? A universidade ajudou ou influenciou nesta conquista? Como?

RS: Eu estudo Engenharia da Computação na Poli - USP. Nessa conquista, a universidade não teve muita influência direta, já que eu estava trabalhando

com uma equipe com 3 integrantes da UFPE. Quase virei pernambucano! Mas é claro que os estudos na universidade dão um apoio técni-

co e pedagógico que são essenciais não só na Imagine Cup, como para a vida.

1 5

Page 16: Codificando .NET Magazine - Edição 03

A taça do mundo é nossa!!! Imagine Cup 2007

CM: Qual a mensagem que você deixa de incentivo para quem pensa em participar da Imagine Cup do ano que vem?

AF: A Imagine Cup é uma oportunidade ímpar. Não existe coisa igual no mundo, sem exageros. Ter sua idéia avaliada por especialistas na área (e de

graça), fazer networking com pessoas de dezenas de países, culturas e línguas, colocar o espírito empreendedor à prova, aprimorar habilidades técnicas,

de apresentação e de comunicação, sentir a gostosa responsabilidade de representar o seu país e, por fim, projetar e dar visibilidade ao seu próprio

trabalho e talento são alguns dos benefícios de participar de uma Imagine Cup. Mesmo que você não prossiga para as fases seguintes da competição, sua

participação já vai lhe ter dado bons frutos, nem que seja mais maturidade e conhecimento para participar novamente no ano seguinte. Não se preocu-

pe se você acha que seu projeto ou idéia não são muito competitivos. Eles evoluem na competição, especialmente a partir do feedback de outras pesso-

as, em especial dos juízes. Participe com humildade, visando engrandecer sua experiência, e não a vitória. Esse é o segredo para se viciar na Imagine Cup

e, mais cedo ou mais tarde, ser bem-sucedido na competição.

CM: Qual a mensagem que você deixa de incentivo para quem pensa em participar da Imagine Cup do ano que vem?

RS: A mensagem principal é: não deixe de tentar. Na Imagine Cup você nunca tem nada a perder, e cada etapa sempre traz aprendizado, experiência

profissional e muitos contatos. E ainda pode trazer uma viagem para o outro lado do mundo, representar seu país, e ganhar um prêmio!

CM: Para finalizar, qual a coisa mais estranha que você comeu na Coréia J ?

RS: Com certeza, foi o Bibimbop preparado com o suor de meus colegas de time André e Carlos! É uma mistura de legumes e arroz, com um molho

de soja e pimenta, preparada numa mega-panela. O pior é o legume altamente apimentado que vinha como acompanhamento!

C A R L O S E D U A R D O R O D R I G U E S

CM: Olá Carlos Eduardo Rodrigues, fale um pouco sobre você, sua formação e experi-

ências em desenvolvimento.

CE: Eu sou formado em Ciência da Computação pela Universidade Federal de Pernambuco e atu-

almente estou em vias de conclusão do mestrado em CC na mesma instituição. Dentro do curso,

sempre me dediquei à área de hardware e sistemas embarcados, porém sem deixar de lado outras

áreas como o desenvolvimento de jogos e infra-estrutura de TI. Trabalho na área desde 2001,

tendo utilizado várias tecnologias e linguagens de programação ao longo destes anos, com desta-

que para assembly, VHDL, C, Java (J2SE, J2ME e J2EE). Conheci a plataforma .NET em 2003 duran-

te um projeto acadêmico e desde então tenho trabalhando constantemente com ela, tendo obtido

várias certificações MCTS de desenvolvimento e a certificação MCITP em Windows Vista.

CM: Qual a sensação de representar o Brasil nesta competição e acima de tudo tra-

zer o título de campeão? Cite também os membros do time campeão.

CE: A sensação é a melhor possível! É muito gratificante poder mostrar às pessoas lá fora (e aqui

dentro também!) que o Brasil não é apenas um país de samba e futebol, e que tem competência

em áreas mais relevantes, como TI. Por esta razão, o título é um símbolo muito significativo para

os brasileiros, uma vez que nossa cultura tende a não dar tanta importância aos que não chegam

em primeiro lugar. Para nós por outro lado, o título é a coroação de um trabalho de meses de

uma equipe que teve que superar as mais diversas dificuldades (técnicas, de logística e de infra-

estrutura) para conseguir criar uma solução capaz de competir com os outros projetos do mundo. Tivemos na nossa equipe a feliz coincidência de

possuir membros com competências complementares à realização do projeto que acima de tudo estavam unidos por um grande sentimento de amiza-

de. Isso certamente foi um diferencial do time.

CM: Em algum momento durante a competição, você chegou a desanimar ou até mesmo desacreditar na conquista? Se sim, em que

momento isso foi revertido?

CE: Sim. Quando eu cheguei na Coréia e vi os outros concorrentes da categoria de sistemas embarcados, eu fiquei um pouco preocupado, pois CE:

achei que a nossa solução não atendia tão bem aos requisitos da competição quanto os projetos dos outros times. No entanto, ao longo do tempo

fomos refinando a apresentação e recebendo um ótimo feedback dos juízes, o que foi aumentando a nossa confiança.

CM: Na competição, alguns outros projetos se destacaram na sua opinião? Fale um pouco sobre esses projetos.

CE: Infelizmente eu não tive tempo de visitar os outros estandes ou assistir outras apresentações da competição de Embedded para compreender bem

os outros projetos... No entanto, dois projetos me chamaram atenção: o do Canadá, que é um "simulador do corpo humano" usado para ensinar pri-

meiros socorros, e um dos projetos da Romênia, similar ao competidor brasileiro de SD, Know Touch, que traduz texto impresso para

braille em tempo real.

1 6

Page 17: Codificando .NET Magazine - Edição 03

A taça do mundo é nossa!!! Imagine Cup 2007

CM: Qual curso e universidade você estuda? A universidade ajudou ou influenciou nesta conquista? Como?

CE: Eu devo a minha formação ao Centro de Informática (CIn) da Universidade Federal de Pernambuco. Eu diria que a excelente qualidade da minha

formação não só ajudou como foi essencial na conquista . No CIn, os alunos são estimulados desde o começo do curso a inovar nos seus projetos e

não se limitar ao conteúdo aprendido na sala de aula na hora de implementá-los.

CM: Qual a mensagem que você deixa de incentivo para quem pensa em participar da Imagine Cup do ano que vem?

CE: Não tenham medo de sonhar! Não deixe que a falta de conhecimento sobre determinada área ou tecnologia limite a sua criatividade! No mundo de

hoje, o conhecimento necessário para dar vida às idéias pode ser adquirido em qualquer momento. Além disso, sempre existem pessoas mais experien-

tes (professores, competidores de edições anteriores da Imagine Cup, Student Partners da Microsoft) a quem você pode recorrer em caso de necessi-

dade.

CM: Para finalizar, qual a coisa mais estranha que você comeu na Coréia J ?

CE: Ótima pergunta! Ao contrário da Índia, aonde tínhamos uma surpresa a cada refeição, o cardápio coreano estava bastante "internacional", com

comidas que agradavam a todos os paladares. Mas obviamente, algumas vezes comemos coisas não-identificadas que eram, todavia, deliciosas!

FIM.

1 7

Page 18: Codificando .NET Magazine - Edição 03

RECORDAR É VIVER!

Page 19: Codificando .NET Magazine - Edição 03

WiiMote, o badalado da Nintendo sob controle no XNA O badalado controle da Nintendo fez história na area de video-

games. Acredito que nem mesmo a Nintendo previu tamanho

sucesso.

Hoje em dia é possível observar o Wii-

Mote em ação nos diversos tipos de

jogos: futebol, fitness, boliche, golf, ja

pessoa, rpgs, simuladores de corrida,

entre outros.

O aparelhinho também ganhou alguns

acessórios, tornando ainda mais realistica

a jogabilidade.

Imagine você jogando tênis com um

acessório parecido com uma raquete? E

uma luta medieval com espada e escudo?

Sensacional, não acham?

Bem, as possibilidades vão além, conquis-

tando os desenvolvedores do PC.

Para fazer com que o PC reconheça o

aparelho é necessário um dispositivo Blue-

tooth. Você poderá encontrar tal disposi-

tivo em qualquer loja especializada em in-

formática. Para facilitar, procure disposi-

tivos no padrão USB, assim você poderá conectar em qualquer PC.

Para nossa sorte, um dos adoradores da tecnologia, também gosta

muito de C# e XNA, e nos brindou com uma excelente library com

uma dezena de recursos interessantes.

Baixe a biblioteca neste endereço:

http://channel9.msdn.com/ShowPost.aspx?PostId=291133

Feito isso, siga as instruções do nobre brasuca Gutembergue, um

grande entusiasta de games e forte colaborador da SharpGames:

http://SharpGames.Net/Artigos/Wiimote+no+XNA+.xna

Para animar ainda mais a festa conheça melhor os commandos do

Wiimote:

http://www.wiili.org/index.php/wiimote

Idéias para você detonar:

Que tal começar com um simples game de ping-pong?

Avance e tente criar uma paródia de Arkanoid

Agora que você está detonando, crie algum simulador de

física para ajudá-lo nos estudos

Um game de fitness iria muito bem, não acham? Pelo

menos pra mim que preciso perder umas “toneladas”.

E um game que simula cobrança de faltas?

Por falar nisso, que tal um game que simula arremessos

no basquete? Quem sabe nossos jogadores não melhoram a

pontaria?

Um game para melhorar/treinar a coordenação motora

Um game que auxilie no tratamento fisioterapêutico

Jovens Jedis, as possibilidades são infinitas, limitadas somente pela

sua imaginação.

Se desenvolver algo com a tecnologia, não pense duas vezes para

nos mostrar.

U-ha! U-ha! U-ha!

Emerson Facunte

Facunte é MVP Visual Developer ASP/ASP.Net, co-Owner Framework.Net Microsoft Latam, entusiasta de aplicações e-business, XNA

Game Designer, publicou 9 livros e mais de 120 artigos, ministrou palestras, cursos e workshops para cerca de 20.000 pessoas em todo o

país, membro-fundador do DUG-BR, membro-fundador do VSTS Rocks Brasil, Lider do grupo Codificando.Net, Arquiteto de Software da

Saraiva.COM, professor de Ciência da Computação da UNIP e de pós-graduação em Engenharia de WebSites da UNICSUL-SP

1 9

Page 20: Codificando .NET Magazine - Edição 03

Coluna: BizTalk.ing

Conversamos na coluna do mês anterior sobre os artefatos BizTalk que são utilizados para a construção de uma integração, seja

ela uma solução de Messaging ou um Business Process. Dessa maneira, imagino que deva ter ficado um pouco mais claro como

o BizTalk funciona “internamente”. Ainda falta uma “peça” importante, que é conectar as “pontas do BizTalk” que serão integra-

das. Essa conexão é feita através dos adaptadores (adapters no inglês original). Os adaptadores são “pedaços de códigos” que

contém as instruções para a conexão do BizTalk com as entidades que desejamos integrar, as aplicações.

Uma maneira simples para que entendamos esses adaptadores é compará-los aos adaptadores presentes no mundo físico. Em

nosso dia-a-dia, o exemplo mais óbvio é a tomada de energia elétrica. Podemos ainda compará-los aos conectores do nosso

microcomputador: saída de rede, entrada do teclado, entrada e saída de modem, etc. Temos três categorias de adaptadores:

Application adapters (Adaptadores para Aplicações)

Estes adaptadores conectam o BizTalk a aplicações, tais como: um pacote ERP, um sistema de CRM ou ainda um sistema especi-

alista desenvolvido in-house. Exemplo: SAP, JDE, PeopleSoft, e Siebel.

Technology adapters (Adaptadores para Tecnologias)

Os Adaptadores para Tecnologias fornecem uma ponte para várias tecnologias e protocolos. Os adaptadores que acompanham

o BizTalk Server 2006 provem suporte para: EDI, File, FTP, HTTP, MSMQ, SMTP, Web services e MQSeries. Além da possibili-

dade de acesso a componentes e a API .NET.

Data adapters (Adaptadores para Dados)

Estes adaptadores conectam o BizTalk Server a Banco de Dados, tais como: SQL Server, Oracle, ou DB2.

A lista completa dos adaptadores disponíveis para o BizTalk Server 2006 pode ser facilmente encontrada na documentação que

acompanha o produto, ou ainda no seguinte endereço: http://www.microsoft.com/biztalk/evaluation/adapter/default.mspx.

Outra importante fonte de informação a respeito dos adaptadores do BizTalk é o site do MSDN: http://msdn2.microsoft.com/en

-us/biztalk/aa937652.aspx.

O BizTalk Server 2006 possui um “modelo simétrico” para os adaptadores, expondo as mesmas funcionalidades para adaptado-

res de envio e recebimento de mensagens.

Todos os adaptadores executam atividades associadas com a normalização de transporte, como receber uma mensagem do

BizTalk entregando-a a um destino, usando um protocolo específico. Por exemplo, o adaptador SOAP envia mensagens usando

o protocolo SOAP e o Adaptador SAP envia mensagens usando o protocolo RFC.

Adicionalmente alguns adaptadores executam atividades ligadas à normalização de dados. Podemos citar o adaptador SQL que

representa a estrutura da tabela em um XML, e o adaptador SAP que representa um IDOC em um XML como exemplos dessa

normalização. Em tempo de desenvolvimento dos adaptadores é importante ter em mente que a normalização de dados só deve

ser utilizada quando necessário, uma vez que o mapeamento nos prove um rico suporte a normalização de dados.

Normalmente nossa primeira experiência com adaptadores do BizTalk se dá na configuração de um Receive ou Send Port. Se

você já fez uma dessas atividades ao menos uma vez, pode não ter percebido, mas quando escolheu um transport type estava

especificando qual adaptador seria usado pelo Port..

Temos quatro padrões de comunicação suportados por um adaptador, que podem ser:

One Way Receive

O BizTalk recebe uma mensagem através de um protocolo especifico, “passa-a” através de um Pipeline, e então persiste a men-

sagem no MessageBox.

One Way Send

O BizTalk “pega” uma mensagem do MessageBox, submete-a a um Pipeline, e então envia ao destino apropriado usando o pro-

tocolo específico.

Biz

ta

lk

.in

g

2 0

Page 21: Codificando .NET Magazine - Edição 03

Coluna: BizTalk.ing

Request Response

O BizTalk recebe uma mensagem da mesma maneira que faria no caso do One Way Receive, porem a aplicação que executou a

chamada aguarda por uma resposta do BizTalk para finalizar o processo. Um exemplo desse tipo de interação é quando expo-

mos uma orquestração como um WebService. Nesse caso, a aplicação cliente faz uma chamada para o adaptador SOAP, inician-

do a orquestração, e então aguarda a resposta.

Solicit Response

O BizTalk envia uma mensagem da mesma maneira que faria no caso do One Way Send, mas aguarda uma resposta da aplicação

externa. Um exemplo desse modelo é quando uma orquestração consume um webservice via adaptador SOAP. Nesse caso a

orquestração efetua uma chamada e aguarda pela resposta.

Um detalhe importante é que, nos casos dos padrões Request Response e Solicit Response algumas questões referentes a chama-

das síncronas ou assíncronas devem ser observadas com cuidado durante o “desenho” do processo.

Nos casos de adaptares para Aplicações e de adaptadores para Dados é necessário o uso de Schemas que representem as men-

sagens e que serão usados pelo adaptador no seu projeto BizTalk. Esses Schemas podem ser gerados usando o Wizard disponí-

vel no Visual Studio 2005.

A Microsoft fornece uma grande quantidade de adaptadores junto com o BizTalk Server 2006. Alguns são instalados automatica-

mente junto com o BizTalk. Outros adaptadores, também fornecidos pela Microsoft, devem ser instalados separadamente. Para

maiores informações, consulte a documentação ou o endereço citado anteriormente.

É possível também adquirir adaptadores de empresas especializadas no desenvolvimento de adaptadores e também adaptadores

desenvolvidos pelas comunidades de desenvolvedores. A diferença fundamental entre esses adaptadores é que as empresas

especializadas “normalmente” cobram pelo uso do adaptador e fornecem suporte para o produto, enquanto que os adaptadores

desenvolvidos pela comunidade geralmente são gratuitos, com código fonte aberto, mas não fornecem nenhum tipo de suporte

ou garantia.

É comum nos depararmos com uma situação em que nenhum dos adaptadores disponíveis atenda as nossas necessidades. Se

esse for o seu caso é possível também desenvolver seu próprio adaptador customizado usando o BizTalk Server Adapter Fra-

mework. Para desenvolver seu próprio adaptador, a dica é consultar a documentação no site do MSDN (link citado acima) e

também usar o SDK que acompanha o BizTalk.

Desenvolver adaptadores, comumente é uma tarefa que consome tempo, pois envolve conhecimentos profundos da tecnologia

que será integrada. Como a conhecidíssima equação diz que: Tempo=Dinheiro, significa que o custo de implantação da integra-

ção aumenta quando precisamos desenvolver um adaptador específico. Além disso, normalmente o TCO (Total Cost of Ow-

nership – Custo Total de Propriedade) associado ao desenvolvimento “manual” de um adaptador é superior ao valor de aquisi-

ção do mesmo de um terceiro reconhecido pela Microsoft.

Uma decisão chave em um projeto de integração (e também do produto de integração a ser usado) é quais adaptadores precisa-

rão ser comprados e quais precisarão ser escritos pelos desenvolvedores.

A melhor situação acontece nas integrações em que não existe necessidade de aquisição de adaptadores, nem necessidade de

desenvolvimento “in-house”.

Para nossa felicidade, no quesito adaptadores, a Microsoft vem melhorado bastante e fornecendo uma variedade enorme de

adaptadores embarcados no BizTalk Server. Sem custo adicional e agregando ainda mais valor ao produto. Nota 10.

Até a próxima !!!

Biz

ta

lk

.in

g

2 1

Feio Tomaz ([email protected]) é tecnólogo em Processamento de Dados, formado pela Fatec-

Americana. MCTS em BizTalk Server 2006, trabalha desde 2004 como consultor especialista em Desenvolvimento de Processos

de Negócio e Soluções de Integração. Atualmente é consultor da ITGROUP. Algumas vezes perde a esperança, mas consegue

encontrá-la novamente toda sexta-feira.

Page 22: Codificando .NET Magazine - Edição 03

Coluna: Desvendando o SQL Server

Pessoal,

Iremos a partir deste mes desvendar os segredos de usar XML com SQL Server 2005.

Neste segundo artigo para a revista Codificando.net e o primeiro de uma série, irei demonstrar o uso de XML

com SQL Server 2005. No decorrer deste e dos próximos artigos, irei abordar os seguintes tópicos:

Introdução: XML e SQL Server 2005

Gerenciando dados XML

Trabalhando com XML

Dados XML e tecnologia SQL Server

Modificando dados XML

Criando Indices XML

Os 3 primeiros tópicos serão abordados agora, e no próximo mês abordaremos os tópicos restantes.

I N T R O D U Ç Ã O : X M L E S Q L S E R V E R

A XML (eXtensible Markup Language, ou Linguagem de Marcação Estendida) é um subconjunto da SGML

(Standard Generalized Markup Language, ou Linguagem de Marcação Padrão Generalizada) que permite que uma

marcação específica seja criada para especificar idéias e compartilhá-las.

O SQL Server 2005 é um produto da Microsoft para análise e gerenciamento de dados que entrega maior escala-

bilidade, disponibilidade e segurança para aplicações corporativas enquanto torna-as fáceis de serem criadas, imple-

mentadas e gerenciadas.

G E R E N C I A N D O D A D O S X M L

A inclusão de suporte nativo ao XML no SQL Server 2005 representou uma excelente alternativa para DBAs e

Developers acostumados ao uso de dados relacionais. Ao contrário dos dados relacionais, XML pode apresentar

os dados de forma estruturada, semi-estruturada e desestrutura. O SQL Server 2005 oferece no seu mecanismo

original e no otimizador de consultas, o suporte total e integrado a esses dados XML.

T R A B A L H A N D O C O M X M L

XML é uma plataforma independente; possui um formato de representação de dados que oferece benefícios sobre

o formato relacional específico para representação de dados. A Microsoft tornou o SQL Server 2005 compatível

com SQLXML que especifica como um banco de dados relacional pode, de forma nativa, gerenciar dados XML. O

SQL Server 2005 oferece aos DBAs e Developers maior flexibilidade para se trabalhar com diferentes tipos de

dados.

SQL Server 2005 oferece 2 formas de armazenar XML:

XML em coluna de tipo de dados texto (char, varchar)

XML em coluna de tipo de dados XML

SQ

L S

ER

VE

R

2 2

Page 23: Codificando .NET Magazine - Edição 03

Coluna: Desvendando o SQL Server

Pode-se armazenar dados XML em colunas com tipo de dados (n)char, (n)varchar ou binary. O SQL Server 2005

oferece o argumento MAX que aloca um espaço de armazenamento máximo de 2GB. Exemplo: char(MAX)

Atenção: Evite criar novas tabelas ou colunas em tabelas existentes com os tipos de dados text, ntext e image pois

os mesmos serão retirados em futuras versões do SQL Server. A Microsoft recomenda a interrupção do uso des-

tes tipos de dados.

Principais benefícios de armazenar dados XML em colunas texto no SQL Server 2005:

XML fornece “fidelidade textual”(todos os detalhes como comentários e espaços em branco são preserva-

dos);

Reduz o processamento no servidor devido ao fato de todo o processamento ser realizado na camada inter-

mediária;

Melhor performance para recuperação e inclusão de dados XML.

Principais limitações de armazenar dados XML em colunas texto no SQL Server 2005:

Complexidade de código (maior custo de manutenção);

Procura (“search”) de dados XML em colunas texto sempre envolvem a leitura de todo o documento XML

devido ao fato de estar sendo interpretado como texto pelo SQL Server 2005.

O SQL Server 2005 oferece o novo tipo de dados XML que pode ser usado como qualquer outro tipo de dados:

definir colunas em tabelas, como parâmetro(s) em funções e stored procedures e na criação de variáveis.

Exemplos:

Create Table TabelaXML(cod int, descricao XML)

Create Procedure SP_UsoXML(@registro is XML)

Declare @registroXML AS XML

Principais benefícios de armazenar dados XML em colunas XML no SQL Server 2005:

O tipo de dados XML é totalmente integrado com o mecanismo de query (Query Engine) e outros serviços

do SQL Server 2005;

O dado é armazenado e manipulado de forma nativa (XML);

SQL Server 2005 oferece suporte para seleção, inclusão, alteração e exclusão no documento XML;

A estrutura do documento XML é preservada.

Principais limitações de armazenar dados XML em colunas XML no SQL Server 2005:

“Fidelidade textual” não é preservada (espaços em branco, declaração XML no topo do documento, comentá-

rios, ordenação dos atributos, e outros elementos que não são dados são removidos da estrutura);

O tamanho máximo de armazenamento é de 2GB.

SQ

L S

ER

VE

R

2 3

Page 24: Codificando .NET Magazine - Edição 03

Coluna: Desvendando o SQL Server P R E P A R A N D O O A M B I E N T E D E E S T U D O S :

Antes de terminar a primeira parte do artigo, iremos preparar o nosso ambiente de trabalho, para isso se faz necessário ter

instalado em nosso computador uma edição do SQL Server 2005. Recomendo a utilização da edição SQL Server Express por ser

gratuita e ter todos os recursos necessários que iremos utilizar em nossos exercícios.

Instalado o SQL Server 2005, chegou o momento de criar um banco de dados para uso exclusivo em nossos estudos:

CREATE DATABASE CODIFICANDOXML

O próximo passo é criar tabela de exemplo a ser utilizada durante os nossos estudos:

CREATE TABLE TabelaExemploXML

( COD INT IDENTITY(1,1) NOT NULL,

LogDataHora DATETIME NOT NULL CONSTRAINT [DF_TabelaExemploXML_LogDataHora]

DEFAULT (GetDate()),

NomeDaAplicacao NVARCHAR(100) NOT NULL,

ColunaXML XML NULL )

Por enquanto ficaremos por aqui, no próximo artigo continuaremos a desvendar o uso de XML com SQL Server. Preparem-se, a

viagem promete!

Abraços,

Alexandre Lopes

SQ

L S

ER

VE

R

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.

2 4

Page 25: Codificando .NET Magazine - Edição 03

Coluna: Introdução ao Silverlight… Parte 2

No ultimo artigo, vimos uma breve introdução ao XAML e como podemos criar os elementos usando esta nova

linguagem de markup. Neste artigo iremos criar uma aplicação Sliverlight 1.0.

Até agora, a Microsoft lançou duas versões de Silverlight: a versão 1.0, que está em RC (Release Candidate – Candi-

dato à versão final) e deve ser lançada em breve, e a versão 1.1, que está em alfa, é ainda uma prévia do que virá a

seguir e deve ser lançada apenas no final do ano ou no início de 2008.

A versão 1.0 usa o Javascript como code behind e necessita que o cliente baixe um plugin de 1Mb, em http://

www.microsoft.com/silverlight/downloads.aspx. A versão 1.1 usa linguagens .net, como C#, VB.net, IronPython, Iron-

Ruby ou managed JScript e necessita de um plugin de 4Mb. Ambas versões rodam nos browsers Internet Explorer (6

ou 7), Firefox e Safari, para Windows ou Mac.

Para o desenvolvimento de aplicações Silverlight, podemos usar qualquer editor de texto, inclusive o bloco de notas

do Windows. Precisamos baixar o Silverlight SDK, que contém o arquivo Silverlight.js, em http://

msdn2.microsoft.com/en-us/asp.net/bb187452.aspx. Com este arquivo e um editor de texto, temos todas as ferra-

mentas que precisamos para criar a aplicação Silverlight.

O passo seguinte é criar uma página HTML que conterá nosso controle Silverlight. No bloco de notas, crie um arqui-

vo SilverProg.html, contendo o seguinte código:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://

www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head><title>Primeiro programa Silverlight</title></head>

<body>

</body>

</html>

Esta página ainda não contém nada. Devemos colocar no cabeçalho, após a tag title, o código que referencia o arqui-

vo Silverlight.js (certifique-se que este arquivo está na mesma pasta do arquivo HTML):

<script type="text/javascript" src="Silverlight.js"></script>

Em seguida, devemos colocar um div no corpo da página, que conterá nosso objeto Silverlight:

<div id="SilverlightControlHost" style="width:640px; height:480px;" >

<script type="text/javascript">

createSilverlight();

</script>

</div>

A função createSilverlight irá criar o objeto Silverlight e deve ser definido logo abaixo da referência a Silverlight.js:

<script type="text/javascript">

function createSilverlight()

{

Silverlight.createObjectEx({

source: "Pagina.xaml",

parentElement:

document.getElementById("SilverlightControlHost"),

id: "SilverlightControl",

properties: {

width: "100%",

height: "100%",

version: "0.8"

},

events: {}});

}

</script>

sil

ve

rl

ig

ht

2 5

Page 26: Codificando .NET Magazine - Edição 03

Coluna: Introdução ao Silverlight… Parte 2

A função CreateObjectEx está definida em Silverlight.js. Os parâmetros para esta chamada são:

Source – é o nome da página Xaml que contém os objetos Silverlight

parentElement – é o id do div da página onde o controle ficará

id – é o id do controle Silverlight

properties – contém as propriedades do elemento: altura, largura, versão do Silverlight

events – eventos ligados ao controle. Este parâmetro permite ligar manipuladores de eventos ao con-

trole, como por exemplo OnError, que é chamado quando ocorre um erro ou OnLoad, que é cha-

mado quando o controle é carregado.

Nossa página HTML está pronta. O passo seguinte é criar o arquivo XAML para o controle Silverlight. Crie um ar-

quivo chamado Pagina.xaml (este nome deve ser o mesmo do parâmetro source da função CreateObjectEx) e

coloque o seguinte código:

<Canvas xmlns="http://schemas.microsoft.com/client/2007"

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

Width="640"

Height="480"

Background="LightGray"

>

<Ellipse Width="300" Height="300" Canvas.Left="50" Canvas.Top="50"

StrokeThickness="10" >

<Ellipse.Stroke>

<LinearGradientBrush>

<GradientStop Color="Navy" Offset="0.0"/>

<GradientStop Color="White" Offset="1.0"/>

</LinearGradientBrush>

</Ellipse.Stroke>

<Ellipse.Fill>

<LinearGradientBrush>

<GradientStop Color="White" Offset="0.0"/>

<GradientStop Color="Navy" Offset="1.0"/>

</LinearGradientBrush>

</Ellipse.Fill>

</Ellipse>

</Canvas>

Com este código, nosso programa Silverlight está pronto. Abra a página SilverProg.html no browser. Você deve ob-

ter algo semelhante à Figura 1:

Figura 1 – Programa Silverlight no Firefox

sil

ve

rl

ig

ht

2 6

Page 27: Codificando .NET Magazine - Edição 03

Coluna: Introdução ao Silverlight… Parte 2 Com nosso programa pronto, iremos fazer com que o controle Silverlight interaja com o código Javascript da página:

quando o usuário clicar na elipse, uma caixa de mensagem será mostrada. Para isso, devemos definir um manipula-

dor para o evento MouseLeftButtonDown da elipse na página XAML:

<Ellipse Width="300" Height="300" Canvas.Left="50" Canvas.Top="50"

StrokeThickness="10" MouseLeftButtonDown="ellipseClick">

Devemos colocar o manipulador do evento na página HTML, após a função createSilverlight:

function ellipseClick()

{

alert('Você clicou na elipse');

}

Ao salvar os dois arquivos e atualizar a página no browser, uma caixa de mensagem é mostrada quando clicamos na

elipse. Podemos também manipular os objetos da página a partir do Javascript. Por exemplo, se quisermos aumentar

a elipse quando o mouse está sobre ela e diminuí-la quando o mouse está fora, podemos criar dois novos manipula-

dores para os eventos MouseEnter e MouseLeave na página xaml:

<Ellipse Width="300" Height="300" Canvas.Left="50" Canvas.Top="50"

StrokeThickness="10" MouseLeftButtonDown="ellipseClick"

MouseEnter="ellipseMouseEnter"

MouseLeave="ellipseMouseLeave">

O código Javascript que deve ser adicionado na página HTML é:

function ellipseMouseEnter(sender,args)

{

sender.Width = 330;

sender.Height = 330;

}

function ellipseMouseLeave(sender,args)

{

sender.Width = 300;

sender.Height = 300;

}

Neste caso, adicionamos dois parâmetros aos manipuladores: sender indica o objeto que ativou o evento e args

são os parâmetros do evento (por exemplo, eles podem conter a posição que o mouse foi clicado). Estamos aqui

aumentando ou diminuindo o valor das propriedades Width e Height da elipse, quando o mouse entra ou sai da

área da elipse. Salve os dois arquivos e refresque a página no browser, verificando que a elipse aumenta ou diminui

de tamanho conforme a posição do mouse.

Como pudemos ver, escrever um programa Silverlight é bastante simples e a interação entre o código e os elemen-

tos é muito fácil, permitindo escrever aplicativos bastante poderosos com tecnologias simples, sem necessitar de

ferramentas especiais. No próximo artigo, veremos como escrever um programa Silverlight 1.1, usando C# como

code-behind. Até lá! sil

ve

rl

ig

ht

Bruno Sonnino é Microsoft MVP, consultor e desenvolvedor há mais de 20 anos. É autor de 5 livros de Delphi,

escreve artigos para diversas revistas nacionais e estrangeiras, como PCMagazine Brazil, .net Magazine, entre outras.

Desenvolveu mais de 15 utilitários para a revista PCMagazine americana. Foi palestrante em diversos eventos, como

TechEd 2006, nas 5 edições da BorCon Brasil e na 11a. BorCon americana.

2 7

Page 28: Codificando .NET Magazine - Edição 03

Coluna: Imagine Cup 2007 Caros leitores:

Caros amigos da Comunidade, neste artigo gostaria de contar a vocês o desempenho do Brasil na Final Mundial da

Imagine Cup, que foi realizada em Seul, na Coréia do Sul, em Agosto. Como sempre, obtivemos um desempenho

excelente, demonstrando o nosso talento e a nossa criatividade ímpares.

O Brasil, mais uma vez, subiu no pódio da Imagine Cup, a “Copa do Mundo” da computação organizada todos os

anos pela Microsoft. A equipe Trivent Dream, formada pelos estudantes da Universidade Federal de Pernambuco

Carlos Eduardo Rodrigues, André Furtado e Ivan Cordeiro Cardim, conquistou o primeiro lugar na categoria Sistemas Em-

barcados e trará para casa um prêmio de US$ 8 mil.

Na categoria Filme de Curta Metragem, o Brasil ficou em terceiro lugar. O vencedor foi o time Papaçoca, formado

pelos alunos da Unesp Alexandre Nacari, Arthur de Pádua, Felipe Pellisser e Wendel Yokoyama, que irá receber US$ 3 mil

de premiação.

Os nomes dos vencedores foram anunciados no dia 10/08, em Seul, na Coréia, onde aconteceu a etapa final da com-

petição. Entre os dias 5 e 10 de agosto, jovens de todo o mundo, incluindo outras três equipes de estudantes brasi-

leiros apresentaram a um graduado corpo de jurados soluções tecnológicas desenvolvidas com base no tema

"Imagine um mundo onde a tecnologia pode oferecer uma melhor educação para todos".

O Brasil também disputou a categoria Projeto de Software e teve outros dois representantes na modalidade Sistemas

Embarcados.

"A Imagine Cup demonstra o poder do software para solucionar problemas do mundo real e comprova o potencial brasileiro

para o desenvolvimento de tecnologias inovadoras. O mais importante é que todos esses projetos têm aplicação no dia-a-dia

das pessoas e contribuem para melhorar a qualidade de vida com um custo mais acessível" – afirmou o gerente de novas

tecnologias e parcerias acadêmicas da Microsoft Brasil, Amintas Lopes Neto.

Um total de 112 equipes - 344 estudantes de 59 países - foram selecionadas para participar das finais da Imagine Cup

em nove categorias: Projeto de Software, Sistemas Embarcados, Desenvolvimento Web, Algoritmo, Desafio de Infra-

Estrutura, Fotografia, Filme de Curta-metragem, Interface Visual e Projeto Hoshimi (Games). O Brasil também foi um

dos 10 países selecionados para apresentar as soluções desenvolvidas por seus estudantes para Bill Gates, em Red-

mond, um mês antes da etapa final. Os outros foram China, Egito, França, Alemanha, Japão, Coréia, Estados Unidos,

Polônia e Reino Unido.

"Participar da Imagine Cup é uma experiência marcante. Temos a oportunidade de conhecer gente do mundo todo e ver que

muitas pessoas querem usar a tecnologia para fazer diferença" – afirmou André Furtado, integrante da equipe Trivent

Dream, vencedora na categoria Sistemas Embarcados. "Ficamos muito felizes com o resultado e com os comentá-

rios positivos que recebemos dos juízes e de outros competidores".

Conforme conversado com Amintas Neto esta semana, as inscrições para a Imagine Cup 2008 estão abertas no site

http://www.imaginecup.com e, insisto, convido-os a mostrarem seu talento, criatividade e competência nesta compe-

tição fantástica.

Vejam esta notícia a respeito no site da TV Globo:

h t t p : / / v i d e o . g l o b o . c o m / V i d e o s / P l a y e r / N o t i c i a s / 0 , , G I M 7 1 0 9 7 9 - 7 8 2 3 -

COMECA+A+COPA+DA+INFORMATICA+NA+COREIA+DO+SUL,00.html.

Até a próxima coluna, e não se esqueçam: “No Stress, Think .NET !”

Mu

nd

o A

ca

mic

o

Mauricio Wieler Orellana - Bacharel em Ciências da Computação, Mestrando em Ciências

da Computação na USP, MCSD em Visual Studio 6, MCP em C#, atua no mercado Informática

há 14 anos e é professor da Universidade Paulista (UNIP), Universidade Salesiana de São Paulo

(UNISAL) e Faculdade Montessori, desde 2000. Foí Coordenador Acadêmico da INETA Brasil.

2 8

Page 29: Codificando .NET Magazine - Edição 03

Coluna: 6 coisas que você tem que saber sobre performance no Compact Framework

CO

MP

AC

T P

LA

CE

José Antonio Leal de Farias é MVP em Windows Mobile Development e bacharel

em ciências da computação pela UFCG, programador profissional nas linguagens C++ e

C# e atualmente é Diretor Técnico da Light Infocon S.A . Atua como consultor na área

de desenvolvimento para dispositivos móveis há mais de 10 anos, participando de proje-

tos em todo Brasil e em diversos países.”

2 9

Uma de minhas palestras de maior sucesso (Que já virou 2 WebCasts para a Microsoft) é sobre a otimização de

código para o Windows Mobile, ou melhor, para o Compact Framework. Eu vejo muitos projetos onde presto con-

sultoria com graves problemas de lentidão, uso de recursos e falhas graves de segurança e esses problemas sempre

são recorrentes! Vejam minhas palestras pessoal ..

Para essas pessoas que não tem tempo nem de ver os WebCasts nem de participar dos evento, reuni aqui algumas

regras de ouro que vocês devem colar na parede da sala de sua equipe de mobilidade. São algumas dicas que passam

despercebidas pela maioria dos desenvolvedores. Vamos lá:

1. O usuário espera que sua aplicação seja mais responsiva! – Isso é muito chato. Por algum motivo que meus

limitados conhecimentos da psique humana não conseguem compreender, os usuários esperaram que a aplica-

ção do device seja bem a mais rápida que uma aplicação equivalente no desktop. Eles não querem perder tempo

esperando a interface se formar, ou algum conjunto de dados ser enviado, etc. Normalmente, quando pergunto

porque eles acham isso, eles me respondem “ué..é um computador tão pequenininho...tem de ser mais rápido!”.

2. Tenha Métricas. – Não adianta sair por aí lendo artigos desse tipo e sair otimizando tudo feito um louco. Só

otimize coisas DEPOIS que você verificou que elas não estão de acordo com o esperado. Faça medições para

posterior avaliação desde o começo do seu projeto. Não há nada pior do que otimizar sem ter medido nada

antes.

3. Evite o uso frequente de boxing e unboxing. Ele causa uma alocação no heap e a cópia degrada a performance.

Isso é óbvio, mas a quantidade de desenvolvedores que foge de generics ainda é grande.

4. Chamadas a métodos Virtuais são até 3x mais caras do que um método de instância, e chamadas a interfaces até

2x mais caras! Isso não uma característica do Compact Framework apenas, mas sim de plataformas com código

gerenciado. Pergunte ao pessoal do JME para você ver o que eles dizem. Então pense duas vezes antes de fazer

aquele modelo seguindo padrões com vários níveis de hierarquia, interfaces, etc.

5. Chamadas Platform Invoke são até 6x mais caras do que em código gerenciado. Então se você se acha “esperto”

fazendo chamadas a API para acelerar a execução, pense duas vezes.

6. Evite Reflection para trechos de código mais sensíveis a performance. Por motivos óbvios.

Dê uma olhada agora no seu código. Faça algumas medições e verifique se você não está fazendo exatamente algo

contra alguma dessas regras.

Eu aposto que está

Page 31: Codificando .NET Magazine - Edição 03

Destaques: Download do Mês

Todo mês temos alguma novidade para baixar da internet e para ninguém perder nenhum desses down-

loads, vamos publicar mensalmente os principais downloads.

Download do Mês

O Beta 2 do Visual Studio 2008 já está disponível!

Acessem: http://msdn2.microsoft.com/en-us/vstudio/default.aspx

Visual Studio 2008 Professional

http://www.microsoft.com/downloads/details.aspx

?FamilyId=B98A61BA-99B0-40B7-AB6E-5386A2B94217&displaylang=en

Mais informações de outras versões:

http://blogs.msdn.com/bharry/archive/2007/07/26/orcas-beta-2-download-urls.aspx

3 1

Page 32: Codificando .NET Magazine - Edição 03

“Os Blogs hoje são

ferramentas

essenciais para

quem acompanha

tecnologia”

Destaques: Blog do Mês

Os Blogs hoje são ferramentas essenciais para quem acompanha tecnologia, especificamente na área de

desenvolvimento, temos muitos blogs com informações pra lá de quentes sendo atualizados diariamente.

Muitos funcionários da Microsoft, membros da comunidade, especialistas, etc. formam uma gigante co-

munidade on-line com notícias, dicas, artigos, etc. Vamos destacar em nossas edições dois blogs, sendo

um nacional e um internacional. Sempre analisando a qualidade dos posts e freqüência.

Blog Nacional

Roberto Sonino é um dos campeões da Imagine Cup 2007 e mantém um blog sobre novas tecnologias.

Link do Blog: http://www.virtualdreams.com.br/blog/

Blog Internacional

O time de VB mantém um blog atualizado pelos funcionários do time do produto.

Link do Blog: http://blogs.msdn.com/vbteam/

3 2

Page 33: Codificando .NET Magazine - Edição 03

T R A S H R I D Í C U L O D Á P R O

G A S T O

V Á

A S S I S T I R

T Á E S P E R A N D O

O Q U E ?

D U R O D E M A T A R 4 . 0

Do ilustre diretor Len Wiseman (Anjos da Noite (2003) e Anjos da Noite: A Evolução (2006)), Duro de Matar 4.0 supera as expectativas dos seus

mais fiéis fãs. Nesta trama, que são destruídos helicópteros, Aviões e Cidades, não faltam tiros, sangue e ação... Muita ação por sinal. Para quem não tem

problemas de ouvir incansáveis estrondos no cinema, é um filme recomendadíssimo. Os outros filmes da série Duro de Matar foram: Die Hard (1988),

Die Hard 2 (1990), Die Hard: With a Vengeance (1994) e agora, depois de 13 anos Die Hard 4.0.

O S S I M P S O N S – O F I L M E

Grandíssimo diretor e roteirista da série desde seu início em 1989, Matt Groening lançou neste ano o aguardado Os Simpsons – O Filme (The Simpsons –

The movie). Em seus 1h27min de desenho, é gargalhada garantida o tempo inteiro. Homer, Marge, Bart, Lisa e Maggie são os protagonistas da história. Os

Simpsons já está com mais de 400 episódios e mais de 18 temporadas. Atualmente é passado no canal FOX de TV a Cabo. Ultimamente foi lançado o Box

da 10ª temporada.

Dá pra rir muito e consumir pipoca de montão nesta excelente animação.

Cinema

3 3

Page 34: Codificando .NET Magazine - Edição 03

.Close() Eu consigo implantar o TFS na minha empresa?

Desde o lançamento do Team Foundation no pacote Visual Studio Team System em 2005, participei de muitas tentativas de venda da

implementação ou utilização do produto por algumas empresas. O produto é realmente muito grande! Não é tão simples assim insta-

lar, colocar no servidor, investir uma verba agressiva e pronto! Produto implantado!

É muito mais do que isso, existem diversos pontos! Antes mesmo de colocar o DVD de instalação na gaveta de DVD do servidor, é

preciso uma tarefa árdua e complexa! Definir o ciclo de vida de desenvolvimento dos projetos! Isso não é uma balela, é a pura reali-

dade!

Quando chego nos clientes eu pergunto... Qual metodologia vocês utilizam? As vezes a resposta é o silêncio! Ou as vezes: - Ah utili-

zamos uma metodologia nossa, temos tudo documentado mas não conseguimos seguir 100%! O fato é, poucas empresas pregam

uma metodologia.

O pior são as desculpas... - Ah não utilizamos nenhuma metodologia, porque aqui na empresa temos um cenário muito diferente,

com projetos apertados, etc... Ué, isso é desculpa? A metodologia não serve para arrumar a bagunça?

A verdade é que grande parte das empresas não tem sequer uma metodologia por razões simples: ninguém até hoje “patrocinou”

isso, ninguém se dedicou a isso, sempre baseado em desculpas espalhafatosas e que não convencem a niguém.

Será que é tão difícil definir um processo de trabalho?

Acredito que seja possível que as empresas criem suas metodologias, mas pra mim pra grande parte dos casos é reinventar a roda...

Trabalho duplicado, que alguém já fez.

Temos um leque de metodologias ou práticas e podemos adaptar aos nossos cenários.

A idéia do produto TFS é ser um ferramental para acompanhar o ciclo de desenvolvimento, e com isso já trás embutido duas meto-

dologias... MSF sabor agile e sabor CMMI... Acredito que seja uma ótima opção para quem não tem idéia por onde começar e o prin-

cipal vem na facilidade de adaptar isso as suas necessidades.

O processo de trabalho é baseado em um conceito chamado Process Template onde temos diversos arquivos XML, com diversos

documentos que podemos alterá-los da forma que vem entendermos... Nada muito dolorido.

Também podemos customizar os tipos de Work itens, também em XML mas com diversas IDE´s gratuitas.

Podemos criar regras de check-in com políticas adaptadas as necessidades reais...

Enfim, podemos fazer qualquer coisa no produto!

No livro VSTS Rocks existe um capítulo que mostra como fazer essa customização do Process Template. A customização em si é

muito simples, o complicado é sentar a equipe, definir o processo e começar a customização...

Talvez já tenha passado da hora das empresas pensarem nisso!

[]´s

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.

3 4