Sunteți pe pagina 1din 43

Powered by Codificando .

Net
#1
 360 S PARTA
THIS IS XNA EXPRESS NUMERO 2 ANO I

 B IZTALK
B IZ. TALKING

 DESENVOLVIMENTO WEB
CONHEÇA O S ILVERLIGHT

Codificando Net
e-magazine

Dicas | Agenda de Eventos | Promoções | Destaque do Mês


Codificando Net
POWERED BY

e-magazine
CODIFICANDO.NET

NESTA
J U N H O 2 0 0 7
EDIÇÃO E D I Ç Ã O 0 A N O I

Editorial
Entrevista 3

Entrevista 5

SQL 2008 8 Mais de 3500 downloads! Este é o resultado da primeira edição da revista Codificando e-Magazine. Na
minha opinião um número muito interessante pois mostra que a comunidade .Net realmente é muito
forte. A idéia inicial da revista era ter 1.000 downloads.
Coluna: XNA 10

Esse número nos proporciona um problema: Como manter ou aumentar este número? Este desafio já
Coluna: 12 está lançado com a segunda edição da revista que conta com um número superior de colunas e artigos...
BizTalk.ing Espero que o resultado seja positivo.

Coluna de 15
Qualidade Nesta edição temos a estréia de dois colunistas: JALF falando sobre Mobilidade e Andrey Sanches sobre
desenvolvimento Web, uma grande dupla que enriquece ainda mais o nosso conteúdo.
Coluna: 20
Point2Share
A qualidade da segunda edição está muito boa, assim como a primeira, mas vamos tentar evoluir cada vez
Coluna: Com- 23 mais, por isso o feedback da comunidade é tão importante... Qualquer sugestão mande para edi-
pact Place tor@codificandomagazine.net.
Coluna: 25
Acadêmico Teremos também nessa edição a estréia do nosso repórter Alfred Myers que de cara publica uma entre-
vista internacional com um funcionário da Microsoft que atua no time de C#... Leitura imperdível.
Coluna: Web 26

Vamos evoluindo, mas para isso precisamos muito de um feedback e da


Artigo: XNA 28
colaboração da comunidade. A revista é da comunidade, por isso precisa-
mos tanto disso.
Download do 36 Equipe
Mês
Editor:
Blog do Mês 37 Boa leitura! Alexandre Tarifa
Co-Editores:
Andrey Sanches
Comunidade 40 Alexandre Tarifa
Emerson Facunte
Build Brasil Editor@codificandomagazine.net
Reporter
Coluna: 42 Alfred Myers
.Close()
Colaboradores:
Hélio Sá Moreira
Feio Tomaz
Eduardo Gomes
Maurício Wieler
Israel Aéce
JALF
Adriano Bertucci
PÁGINA 3
Entrevista - Marcelo Guerra
Alfred Myers estréia nesta edição como repórter oficial da revista Codificando e-Magazine.
Com larga experiência no assunto, sua estréia aconteceu nos Estados Unidos em uma entre-
vista com o Marcelo Guerra, Uruguaio que trabalha na equipe de desenvolvimento da Micro-
soft Corp.

Eu gosto dos métodos parciais (Partial Methods) por


Alfred Myers: Quem é você? que eles foram a primeira coisa que eu testei ao che-
Marcelo Guerra: Eu sou Marcelo Guerra. Eu gar à Microsoft e acho que não seja um dos novos
sou engenheiro em computação pela Universi- recursos mais badalados apesar de ser extremamente
dad de la Republica do Uruguay. Eu morava lá útil.
até 2006 e vim para Redmond há 9 meses. Eu gosto dos Query Expressions porque eles vão
AM: O que você faz na Microsoft? fazer facilitar a vida do desenvolvedor (em especial
MG: Eu sou um SDET (Software Develop- aqueles trabalhando com bancos de dados e que po-
ment Engineer in Test) trabalhando no time derão usar DLINQ para fazer o seu trabalho).
do compilador de C#. O time agora está de- Eu gosto de Lambda Expressions porque eles são um
senvolvendo a versão 3.0 que inclui o LINQ. conceito interessante e a maneira na qual eles foram
Meu trabalho consiste em escrever código implementados no C# fazem deles menos assustado-
para tentar fazer o compilador falhar e ferra- res do que eles podem parecer à primeira vista. Com
mentas que me auxiliam neste trabalho, espe- o tempo, eles tornarão o código mais fácil de ler
cialmente ferramentas que automatizem o apesar de não ser tão fácil no começo.
trabalho. AM: Que tipo de recursos nós podemos espe-
AM: Como você veio parar na Micro- rar para a próxima versão do C#?
soft? Qual era a tua experiência anteri- MG: Não tenho muito a falar a respeito. Estamos
or? terminando o trabalho no Orcas e não há planos
MG: Eu fui recomendado por alguém que já públicos para o que será a próxima versão. Há vários
estava na Microsoft, então passei pelo proces- projetos e linguagens interessantes sendo desenvolvi-
so de entrevistas que incluem entrevistas por dos na Microsoft Research. Há também uma coisa
telefone e ao vivo. Depois de alguns meses interessante que foi demonstrada no TechEd chama-
nisto e mais alguns no processo de tirar o do PLINQ (Parallel LINQ) que vai usar a forma decla-
visto eu vim para cá. Antes de vir para a Mi- rativa de fazer as coisas do LINQ e o fato de os com-
crosoft eu trabalhava como líder de desenvol- putadores não estarem ficando mais rápidos por con-
vimento / gerente de produto para uma em- ta do clock do processador e sim porque estamos
presa de software no Uruguai. Eu também fiz adicionando mais CPUs às máquinas.
várias provas de certificação. AM: Quais são os melhores lugares para procu-
AM? Em sua opinião, qual o recurso rar informações sobre o C#?
mais excitante vindo no C# 3.0? MG: O Visual C# Developer Center (http://
MG: Eu tenho três recursos favoritos: msdn2.microsoft.com/en-us/vcsharp/default.aspx) é
em minha opinião, o me-
lhor lugar para encontrar
os links para mais informa-
ções. A partir de lá, você
pode ir para a documenta-
ção, recursos de aprendi-
zado, blogs, Microsoft
Na foto: Alfred Connect, etc.

Myers, Marcelo

Gerra e Veronica.
PÁGINA 4
Entrevista - Marcelo Guerra
AM: Qual a visão da Microsoft sobre o AM: Você acha que o trabalho pela comuni-
ecossistema das comunidades? Vocês dade acaba criando novas oportunidades e
realmente as usam para ouvir os pedi- crescimento profissional?
dos e críticas quando planejam um pro- MG: Eu acho que trabalhar pela comunidade é pre-
duto? cioso. Ele te dá influência e conhecimento, ambos os
MG: Em minha opinião, estamos muito satis- quais são muito importantes para o teu crescimento
feitos com o engajamento, ajuda e feedback profissional. Se envolvendo em esforços da comuni-
que recebemos da comunidade. Um exemplo dade e se tornando um MVP, por exemplo, você
disto são os fóruns. Muitas vezes quando es- obtém muito conhecimento do que outras pessoas
tou tentando responder a uma questão, antes estão fazendo e o que está vindo de modo que você
de postar eu descubro que um MVP já respon- esteja preparado.
deu. É muito legal ver o nível de envolvimento AM: Nós temos comunidades bem fortes no
que os MVPs têm. Também foi muito interes- Brasil. Como é isto no Uruguai?
sante conhecê-los durante o último MVP Sum-
mit. Sem dúvida, nós escutamos o feedback da MG: O Uruguai é bem menor, então só temos um
comunidade especialmente o dado através de único grupo de usuários, mas o grupo é bem forte e
fóruns e o site Connect. Pode ser que você tem bastante suporte da Microsoft.
não veja o teu feedback na próxima versão do AM: Como você costuma contribuir para a
produto, mas sem dúvida ele é levado em comunidade?
conta. MG: Agora eu tenho contribuído mais respondendo
AM: Qual a sua experiência com comu- a perguntas nos fóruns. Eu gostaria muito de poder
nidades no Uruguai? me engajar mais com comunidades latino-americanas
MG: No Uruguai, eu era membro do GUU- e seus esforços. Sem dúvida eu gostaria de manter
NET (Grupo de Usuarios Uruguayos de .Net). contato com o Codificando .NET e outros grupos
Foi uma experiência bastante positiva. Tínha- de usuários que estejam interessados.
mos reuniões, compartilhávamos experiências
e também assistíamos a apresentações sobre
novas tecnologias.

Marcelo Guerra (mguerra@adinet.com.uy) é engenheiro da computação


pela “Universidad de la Republica” no Uruguai. Obteve as certificações
MCSD, MCPD EAD, MCDBA and MCSE. Por três anos, trabalhou desen-
volvendo automação de processos de negócios (Business Process Automa-
tion) e sistemas de gerenciamento de documentos baseados em tecnologi-
as Microsoft. Ministrou workshops e cursos de programação .Net (VB e
C#), ASP .Net, Visual Studio 2005 e SQL Server 2005. Atualmente trabalha
como SDET (Software Developer Engineer in Test) no time do compilador
C#.

Alfred Myers (alfred2007@yuma.com.br) - Premiado como Microsoft


MVP em C# por sua contribução à comunidade, obteve as certificações
MCPD Enterprise Applications Developer, MCSD .NET e MCITP Database
Developer, entre outras, da Microsoft.
Durante os últimos 16 anos, desenvolveu sistemas para empresas como
IG, WebMotors, BM&F, CDHU, SEADE, Telebahia e revendas da AmBev e
Coca-Cola.
PÁGINA 5
Entrevista - Cezar Guimarães
Acompanhe um bate papo com Cezar Guimarães, que é Especialista em Desenvolvimento na
Microsoft Brasil e atuou durante um período diretamente com as comunidades brasileiras. Ele
possui uma experiência e relata nesta entrevista assuntos de grande valor para a comunidade.
Acompanhem:

Alexandre Tarifa - Olá Cezar, obrigado AT: Hoje existem diversas formas de colab-
por participar desta entrevista para a re- oração/trabalhos que as comunidades ofere-
vista Codificando e-Magazine. Falando cem. Quais tipos de trabalho você acha as mais
sobre comunidade, qual a importância da eficazes?
Comunidade em relação aos produtos e CG: Sinceramente acredito que todos sejam eficazes.
ferramentas de desenvolvimento na Mi- A diferença é a sua necessidade naquele momento ou
crosoft? o seu perfil. Os eventos são importantíssimos para
Cézar Guimarães: Olá e obrigado pelo convi- ficarmos antenados nas novidades e nas tecnologias
te para participar desta edição da Codificando e- recém lançadas. Os Fóruns oferecem uma maneira
Magazine. Falando sobre comunidades, a Micro- simples e rápida de conseguirmos ajuda para resolver
soft entende a importância das comunidades alguns problemas. Os blogs oferecem uma visão para
técnicas e procura apoiá-las com artigos disponí- onde as coisas estão caminhando e a nos dá o opor-
veis em sites como o MSDN e Technet, fóruns tunidade de termos discussões saudáveis sobre deter-
de discussão, eventos e apoio aos grupos de minados temas.
usuários.
Mas, para mim, o principal benefício dela está no AT: Você acredita que ainda existe alguma
seu próprio nome: “Comunidade”. Espera-se de forma de inovar estes trabalhos? Quais foram
uma comunidade a oportunidade de encontrar os trabalhos mais inovadores que você presen-
pessoas com o mesmo interesse e a partir daí, ciou no período em que trabalhou focado nes-
iniciar uma troca, onde você terá uma série de ta área?
benefícios e também oferecerá benefícios. Que
CG: Sempre existe possibilidade de inovar. O que o
benefícios são estes: troca de experiências, ajuda
Codificando está fazendo agora, lançando esta revista
para resolver problemas e até mesmo oportuni-
on-line, é um exemplo de inovação. Os brasileiros,
dades para a carreira, somente para citar alguns.
em geral, são muito criativos e os grupos estão sem-
Portanto quanto maior a comunidade e quanto pre propondo algo novo. A inovação não está apenas
mais pessoas com disposição de troca tivermos, em criar algo novo, mas muitas vezes está em fazer
mais profissionais experientes existirão e mais algo de maneira diferente. Neste respeito, destaco a
maduros serão os desenvolvedores brasileiros. maneira como os diversos grupos procuraram se unir
para fortalecer a comunidade brasileira, por exemplo,
fazendo eventos juntos. Também a maneira como os
AT: Uma grande questão apontada sob os
grupos apoiaram as iniciativas junto com o INETA e
desenvolvedores Microsoft está na qualida-
MSDN em roadshows pelo país.
de no desenvolvimento (codificação), você
acha que a participação dos desenvolvedo-
res na comunidade por facilitar a evolução AT: Mudando de assunto para a área técnica,
da qualidade? hoje a Microsoft investe muito no Silverlight.
CG: Com certeza sim. Como mencionei o obje- Você acha que em quanto tempo esta tecnolo-
tivo das comunidades é o benefício comum. E o gia estará madura para utilização em projetos
maior benefício que podemos ter nas comunida- reais e qual o impacto que isso pode causar no
des técnicas é o nosso próprio amadurecimento. desenvolvimento Web?
CG: Segundo o que foi anunciado no Remix 07 pelo
Celso Gomes no keynote, o Silverlight 1.0 está pre-
AT: Uma grande questão apontada sob os
visto para este ano (2007) ainda. Assim como aconte-
desenvolvedores Microsoft está na qualida-
ceu no ASP.NET AJAX (codenome “ATLAS”), ver-
de no desenvolvimento (codificação), você
sões de preview estão sendo disponibilizadas e já
acha que a participação dos desenvolvedo-
podem ser utilizadas. Isto permite que bastante feed-
res na comunidade por facilitar a evolução
back seja dado. E isto contribui bastante para o ama-
da qualidade?
durecimento da tecnologia. Eu acredito que este fator
CG: Com certeza sim. Como mencionei o obje- aliado aos benefícios da própria tecnologia farão que
tivo das comunidades é o benefício comum. E o ele tenha uma grande adoção. Em relação ao impac-
maior benefício que podemos ter nas comunida- to, quem já viu alguma demonstração dele já deve ter
des técnicas é o nosso próprio amadurecimento.
PÁGINA 6
Entrevista - Cezar Guimarães
ficado impressionado. Os efeitos que podem ser utilizar ou não determinado recurso. Neste ponto
feitos, unindo media, animação e dados é impres- entram as comunidades, grupos de usuários, revistas
sionante. O feedback que tenho recebido após técnicas e sites como o MSDN e os blogs.
as minhas palestras sobre desenvolvimento com
Silverlight, inclusive no Remix, é que será possí-
AT: Você mantém um blog dos mais atualiza-
vel fazer mais coisas com ele do que com as
dos da comunidade Microsoft, você acredita
tecnologias existentes e ainda por cima de uma
que a comunidade brasileira ainda não está
maneira mais simples. Imagine então com a ver-
100% adaptada a este tipo de material?
são 1.1 do Silverlight onde teremos .NET no
browser! CG: O que eu tenho sentido é que muitos desenvol-
vedores têm lido e acompanhado blogs brasileiros. O
que eu e alguns blogueiros com quem tenho conver-
AT: O Visual Studio 2008 (“Orcas”) já sado temos sentido falta é da participação nos blogs.
tem data prevista para lançamento, quais O blog é um excelente lugar para ocorrer uma dis-
são os grandes recursos em destaque que cussão sadia sobre determinado tema. Mesmo que
você aponta? este seja apenas uma notícia ou um pedaço de código.
CG: Ainda não tenho a data oficial do lançamen- Os blogs no exterior recebem dezenas de comentá-
to. Com certeza as novidades são grandes, inclu- rios por post, mas infelizmente ainda não temos isto
indo novidades no framework e funcionalidades no Brasil. Não nos blogs técnicos de tecnologias Mi-
na ferramenta para aumentar a nossa produtivi- crosoft. Pelo menos, não nos que eu acompanho.
dade. A grande novidade no framework para Mas, acredito que com o tempo isto mudará. Temos
mim é o LINQ. Com ele será possível não ape- tido muitas discussões interessantes sobre este tema
nas ter o mapeamento objeto relacional, como nas últimas semanas em diversos destes blogs.
também realizar queries em qualquer coleção de
objetos. Para os desenvolvedores web as novida-
AT: Você mantém um blog dos mais atualiza-
des são muitas: melhorias para a criação e manu-
dos da comunidade Microsoft, você acredita
tenção de estilos, integração do ASP.NET como
que a comunidade brasileira ainda não está
Silverlight de uma maneira muito simples. Mas, a
100% adaptada a este tipo de material?
que mais me chama a atenção e o intellisense de
javascript e o debug integrado na ferramenta. CG: O que eu tenho sentido é que muitos desenvol-
vedores têm lido e acompanhado blogs brasileiros. O
que eu e alguns blogueiros com quem tenho conver-
AT: Qual a sua opinião sobre a qualidade/ sado temos sentido falta é da participação nos blogs.
conhecimento dos desenvolvedores no O blog é um excelente lugar para ocorrer uma dis-
Brasil? Você acha que estamos bem posi- cussão sadia sobre determinado tema. Mesmo que
cionados em relação a outros países? este seja apenas uma notícia ou um pedaço de código.
CG: Eu acho que a qualidade dos desenvolvedo- Os blogs no exterior recebem dezenas de comentá-
res brasileiros em geral é boa. Temos muito rios por post, mas infelizmente ainda não temos isto
reconhecimento no exterior. Diversas empresas no Brasil. Não nos blogs técnicos de tecnologias Mi-
estrangeiras buscam desenvolvedores diretamen- crosoft. Pelo menos, não nos que eu acompanho.
te aqui e os levam para os seus países. Isto é um Mas, acredito que com o tempo isto mudará. Temos
bom sinal. Entretanto ainda existe campo para tido muitas discussões interessantes sobre este tema
melhora. Principalmente os que estão começan- nas últimas semanas em diversos destes blogs.
do. Estes devem ser ávidos em obter mais co-
nhecimento. Entender não somente o básico,
mas o que há por de trás para que com o tempo
saibam tomar as decisões corretas de quando

Cezar Guimarães (http://blogs.msdn.com/cguimar/) é


Especialista em Desenvolvimento na Microsoft Brasil. Tendo
atuado antes em empresas de grande porte, como Unisys,
Telemar e MHW, tem grande experiência em desenvolvi-
mento de software utilizando .NET.
Artigo: Novidades do SQL Server 2008
PÁGINA 8

O SQL Server 2008 será a próxima versão da família Microsoft SQL Server. É fornecida uma plataforma de comunicação de dados ainda mais completa, se-
gura, confiável, gerenciável e escalonável para suas aplicações. Permitindo aos desenvolvedores criem aplicações de nova geração, que poderão armazenar e
consumir qualquer tipo de dado em qualquer dispositivo e ainda, melhora a tomada de decisões de funcionários e analistas através de maior percepção dos
negócios utilizando a plataforma e as ferramentas de BI (Business Intelligence) do SQL Server 2008. Foram abordados e detalhados alguns tópicos interessan-
tes desta nova versão.
O SQL Server 2008 trabalha nas quatro grandes áreas chaves da plataforma de visão de dados.
Plataforma de Missão Crítica: O SQL Server 2008 permite que grupos de TI trabalhem com mais produtividade, oferecendo maior segurança, escalabili-
dade e plataforma de gerenciamento. Isso inclui uma nova política baseada no Framework, que permite gerenciamento por Scripts e gerenciamento por
Regras. O SQL Server 2008 também protege os valores das informações em aplicações existentes e dispositivos desconectados.
Desenvolvimento Dinâmico: O SQL Server 2008, juntamente com o .NET Framework permite aos desenvolvedores criar soluções nos padrões da nova
geração de aplicativos. Os desenvolvedores terão mais produtividade, pois trabalharão com as entidades de negócios diretamente em tabelas e colunas.
Armazenamento de Dados: O SQL Server 2008 permite que desenvolvedores consumam e armazenem qualquer tipo de dados, desde arquivos XML a
documentos diversos.
Compreendendo a persistência de negócios: O SQL Server 2008 disponibiliza uma infra-estrutura flexível que permite o gerenciamento de relatórios
e análises, de qualquer complexidade ou tamanho ao mesmo tempo. Isso é possível para os usuários, porque o SQL Server 2008 é integrado com o Micro-
soft Office System.
Acelerando seu desenvolvimento com Entidades
Uma tendência comum de desenvolvedores que trabalham com banco de dados é, quando vão interagir os dados com o banco, frequentemente definem
altos níveis de detalhamento para os objetos de negócios que mapearão. No SQL Server 2008, melhor que escrever a lógica da aplicação desta forma
(trabalhando com tabelas e linhas), os desenvolvedores utilizarão entidades, como “Funcionário” ou “Cliente”. O ADO .NET Entity Framework possibilita ao
desenvolvedor programar similarmente a dados relacionais, os dados de suas entidades. Ao se programar neste elevado nível, a produtividade é incrivelmen-
te elevada e permite que os desenvolvedores utilizem modelagem direcional de Entidade-Relacionamento.
Language Integrated Query (LINQ): Permite desenvolvedores editarem Queries contra os dados, trabalhando em sua linguagem de programação instan-
ciando o SQL. Este recurso garante continuidade, dados fortemente tipados, ajuste orientado a Queries em C# ou VB quando conectados ao ADO .NET
Stack (SqlClient), ADO .NET DataSet e ao provider Entity Data Service Mapping.
PÁGINA 9
Artigo: Novidades do SQL Server 2008
Serviços de Objetos do ADO .NET: A camada de serviços de objetos do ADO .NET Stack permite materializa-
ção, garante a mudança e persistem os dados como objetos da Common Language Runtime (CLR). Desenvolvedo-
res que utilizam o ADO .NET Framework podem programar o banco usando objetos da CLR que sejam gerencia-
dos pelo ADO .NET. O SQL Server 2008 introduz maior eficiência, otimização do suporte que melhora a desempe-
nho e simplifica o desenvolvimento.
Armazenamento de qualquer tipo de dados
O SQL Server 2008 possui uma transição continua entre dados relacionais e não relacionais. Possibilitando aos
usuários acessarem e simularem documentos como sendo dadas, hierarquias complexas com XML, e queries utili-
zando relacionamentos e dados de textos.
Dados de FileStream: O objeto FileStream do SQL Server permite armazenamento de grande quantidade de
dados binários, contudo, mantém partes integrais do banco utilizando consistências transacionais. Isto permite em
larga escala, o gerenciamento do banco de dados e do armazenamento, um maior custo-benefício em armazena-
mento e “File Systems”.
Procura integrada com o Full-Text: A procura integrada cria uma transição entre a procura de textos e dados
relacionais, enquanto permitem usuários utilizarem índices nos textos para melhorar a performance da procura em
colunas com grande quantidade de texto.
Colunas escassas: Permitem aos usuários armazenarem modelo de objetos em dados relacionados sem submeter
-se a grande custo de armazenamento. Ele também permite os usuários gerenciarem completamente as aplicações,
submetendo o armazenamento do banco.
Tipo grande definido pelo usuário: É permitido a usuários criar tipos definidos grandes, expandindo o tamanho
máximo definido aos tipos de dados, eliminando o limite de 8kb.
O programa para avaliar o "SQL Server 2008 CTP" teve seu Início em 21/05/2007 e terminará em 30/06/2008. De-
ve ser feita a inscrição no projeto, antes de fazer o download.

Link para download da versão CTP de Junho/2007: https://connect.microsoft.com/SQLServer/content/


content.aspx?ContentID=5395

Diego Nogare é Graduado em Ciência da Computação, Pós-


Graduado em Engenharia de Computação com ênfase em
Desenvolvimento Web com .NET. Colaborador do Portal
Linha de Código. Co-Líder do grupo Codificando .NET. MCP
e MCTS em SQL Server 2005. Palestrante em eventos da
Microsoft, Codificando .NET e INETA BR.
PÁGINA 10

Desenvolvimento de Games em XNA - Até aonde você pode chegar


Salve nobres Spartanos!

Em minhas palestras sobre XNA muitos duvidam do poder da ferramenta e questionam se é possível desenvolver jogos profissionais. A versão
gratuita da ferramenta (XNA Game Studio Express) foi disponibilizada com objetivos acadêmicos e para o desenvolvimento de jogos casuais,
no entanto algumas produtoras de games já utilizam a versão profissional (ainda não disponível no mercado até o fechamento desta edição –
27/6/07) e estão produzindo games de “responsa”.

Particularmente tenho acompanhado o desenvolvimento de HUXLEY, um game absurdamente animal, que utiliza a mais poderosa engine do
mercado: UNREAL 3, e inova ao dar suporte a cerca de 200 jogadores online. Antes que me corrijam, sei que existem diversos MMOs
(Massively Multiplayer Online), mas MMOFPs (Massively Multiplayer Online First Person Shooting) com 200 jogadores é o primeiro!

Bem, como imagens valem mais do que mil palavras, vibrem com o primeiro lote:
PÁGINA 11

Desenvolvimento de Games em XNA - Até aonde você pode chegar


A Webzen Studios (produtora de games responsável pelo projeto Huxley) afirmou numa entrevista que o projeto ganhou novas possibilidades
por conta do XNA, bem como o forte apoio da Microsoft que não mediu esforços para trabalhar em conjunto com a produtora, abreviando
alguns processos e melhorando a ferramenta XNA por meio dos feedbacks de ambas as equipes.

Para conhecer melhor o projeto e apreciar novas imagens, basta acessar o site:
http://www.webzengames.com/Game/Huxley/default.asp

Voltando ao mundo real, aquele habitado por pobres mortais, sonhadores e afins, o XNA fornece inúmeros recursos para o desenvolvimento
de diferentes tipos e qualidades de games.

O maior inimigo para o desenvolver um bom game é o fator motivacional. Muitos imaginam que é só apertar uma seqüência de botões NEXT
e por fim o FINISH, e voilà, o game sai prontinho do forno, numa caixa e vai direto pra prateleira das lojas.

Jovens Spartanos, comecem por baixo, desenvolvendo pequenos jogos casuais, entendendo e ampliando os horizontes computacionais, estude
física, leia bons livros de aventuras, monte um roteiro e crie o seu primeiro game “ridículo” (no bom sentido, é claro).

Bons ventos!

Facunte é MVP Visual Developer ASP/ASP.Net, co-Owner Fra-


mework.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 Codifi-
cando.Net, Arquiteto de Software da Saraiva.COM, professor de
Ciência da Computação da UNIP e de pós-graduação em Enge-
nharia de WebSites da UNICSUL-SP
PÁGINA 12
Coluna: BizTalk.ing - Learning to Fly
Já sabemos muito bem que em nossa área de atuação (o “deixar de lado” as tecnologias conhecidas e aprender
universo de TI) a realidade é bastante diferente do que uma nova. Para os interessados em dar os primeiros
desejamos. Todos nós gostaríamos que as aplicações passos no aprendizado do BizTalk 2006 temos algu-
Biztalk.ing
fossem desenvolvidas usando as tecnologias de nossa mas alternativas de material de estudo. Alguns em
preferência, aquelas com a qual estamos habituados a português, outros em inglês.
trabalhar. Naturalmente o ponto inicial é a pagina do produto
Acontece que as tecnologias são criadas em tempos dife- no site da Microsoft. Vale à pena gastar um bom tem-
rentes, e evoluem durante estes intervalos de tempos. É po e ver todo o material disponível. Pode-se optar
claro que essa evolução é benéfica por vários fatores. pelo site da Microsoft Brasil, ou pelo site da Microsoft
Podemos citar a facilidade na implementação e o amadu- USA:
recimento dos padrões como exemplos desses benefí-
cios.
Brasil - http://www.microsoft.com/brasil/servidores/
O problema que enfrentamos é que essas tecnologias biztalk/default.mspx
seguem paradigmas, diretrizes e estratégias empresariais
que também mudaram (ou continuam continuamente USA - http://www.microsoft.com/biztalk/default.mspx
mudando) durante os anos. O hardware também evolui.
Todos conhecem a Lei de Moore, segundo a qual “O Em ambos o conteúdo é bastante parecido. A diferen-
poder computacional em um dado preço dobra a cada dezoi- ça fundamental é que nem todos os artigos foram
to meses”. Toda vez que isso acontece os softwares evo- traduzidos para o português. Dessa forma o site em
luem junto. Segundo a Lei de Grosch “Não importa o nível inglês é mais completo.
de capacidade criado pelo pessoal de hardware porque o
pessoal de software irá esbanjar a vontade até consumir todos De todo o material disponível nos sites, fiz uma sele-
os recursos adicionais criados pelo primeiro”. ção do que considero ser fundamental para o inicio
dos estudos: alguns Whitepapers, “clínicas” e Virtual
Essa evolução da tecnologia (tanto de hardware quanto Labs (Laboratórios Virtuais).
de software) aumenta a dificuldade da integração, tornan-
do-a bastante complicada. As diferenças entre todas essas
tecnologias as tornam difíceis de integrar entre si. Entendendo o BizTalk Server 2006
Todos os desafios de uma integração podem ser contor- (Whitepaper) – Português
nados através de linguagens de programação, afinal, o http://www.microsoft.com/brasil/servidores/biztalk/
mercado (e principalmente o desenvolvedor) já techinfo/whitepapers/understanding.mspx
“trabalha” com integrações muito antes que qualquer Este whitepaper fala sobre o servidor de integração
ferramenta de integração tenha sido criada. Esta experi- da Microsoft, o BizTalk Server 2006. Leia este docu-
ência com integrações produziu algumas diretrizes mento para obter uma visão geral sobre os recursos
(padrões) indicadas para as características de determina- do BizTalk Server 2006, sobre como utilizar o BizTalk
dos cenários. Tudo em TI vira “sopa de letrinhas” e esses para melhorar a integração de aplicações e, por fim,
padrões não poderiam ser diferentes. Os acrônimos mais como o BizTalk pode otimizar os processos internos
importantes são: EAI (Enterprise Application Integration) e B2B.
e B2B (Business to Business Integration).
- EAI são as “integrações internas”. Por exemplo, a inte-
gração da aplicação de controle de estoque com a aplica- First Look: Microsoft BizTalk Server 2006 for
ção de contas a receber. Developers (Clinic 2954) - Inglês

- B2B refere-se as “integrações externas”. Integrar a https://www.microsoftelearning.com/eLearning/


aplicação de controle de estoque com o sistema de com- courseDetail.aspx?courseId=51883
pras do parceiro de negócios é um bom exemplo.
Mas já sabemos que o problema é que o gerenciamento Esta “clínica” online fornece aos desenvolvedores
de todos estes desafios se torna demasiadamente dispen- uma introdução ao ambiente de desenvolvimento do
dioso, demorado e propenso a erros. O BizTalk Server BizTalk Server 2006. Inclui Messaging e Orchestrati-
entra como uma solução de gerenciamento de integra- on.
ções, aplicativos e processos de negócio, que objetiva
facilitar a minimização destes problemas.
First Look: Microsoft BizTalk Server 2006 for
Talvez você pense como eu e esteja interessado em utili-
IT Professionals (Clinic 2955) - Inglês
zar uma ferramenta de integração em vez de ter que
fazer “tudo no braço”. Nesse caso será obrigatório https://www.microsoftelearning.com/eLearning/
courseDetail.aspx?
courseId=51814
PÁGINA 13
Coluna: BizTalk.ing - Learning to Fly
Esta “clínica” online fornece aos profissionais de TI uma O material para Self Learning é gratuito. Os cursos
apresentação do BizTalk Server 2006, como instalar e oficiais (OMLP - Official Microsoft Learning Product,
administrar aplicações num ambiente de BizTalk. antes chamado de MOC) são pagos e ministrados nos
Biztalk.ing
Centros de Treinamento parceiros da Microsoft.

O material indicado acima serve muito bem para o pesso- È importante salientar que esses treinamentos tratam
al autodidata que está acostumado a estudar sozinho. apenas do básico sobre o produto. Como todas as
Para quem tem dificuldade com Self Learning, a opção são novas tecnologias (ou como tudo na vida) é necessá-
os treinamentos oficiais do produto. rio, posteriormente, de estudo aprofundado no pro-
duto (e também sobre o assunto). Além de estudo
Para o BizTalk Server 2006 temos disponíveis dois cursos adicional de “produtos” correlacionados. Falaremos
oficiais: sobre isso em outra oportunidade.
- 2933 – Developing Business Process and Integration
Solutions Using Microsoft BizTalk Server 2006 – 5 dias.
Até a próxima !!!
- 2934 – Deploying and Managing Business Process and
Integration Solutions Using MS BizTalk Server 2006 – 2
dias.

Feio Tomaz (feiotomaz@codificandomagazine.net) é tecnólogo em Processamento de Dados, formado pela


Fatec-Americana. MCTS em BizTalk Server 2006, trabalha desde 2004 como consultor especialista em Desenvolvi-
mento de Processos de Negócio e Soluções de Integração. Atualmente é consultor da ITGROUP. É provável que
morra antes de conhecer o Japão porque só iria a Tókio se fosse para assistir o XV de Piracicaba na final do Mundial
de Clubes.....
PÁGINA 15
Coluna: Coluna de Qualidade
Na última coluna discutimos um pouco sobre as vantagens de se criar um código projetado para testes e facilidade de
manutenção. É claro que essa afirmação é de senso comum, ninguém ficaria contra esse tipo de valor. Mas é claro também
que só alcançaremos esse objetivo aplicando essas idéias na prática, e é sobre isso que eu gostaria de demonstrar nessa
coluna.
Vamos partir de um exemplo: a empresa imaginária AdventureWorks é um site que vende material de esportes de aven-
tura e o gerente comercial desta empresa quer segmentar os clientes de acordo com o seu volume de compras, para
aplicar um desconto personalizado. Por exemplo, clientes que tenham comprado mais de 20 produtos são “OURO”, se
compraram entre 20 e 10 produtos são “PRATA”, se compraram entre 10 e 1 produtos são “BRONZE” e por fim caso
não tenham realizado nenhuma compra, não recebem qualquer classificação. Abaixo segue um modelo simples de como
Qualidade
esse requisito poderia ser implementado.

public class DescontoFrete


{
public double calcular(string codigoCliente) {
double result = 0;
using(SqlConnection conn = new SqlConnection("...")){
conn.Open();
using(SqlCommand cmd = new SqlCommand()){
cmd.CommandText = "SELECT COUNT(*) FROM Vendas WHERE
CodCliente=@CodCliente";
cmd.Parameters.Add(new SqlParameter
("@CodCliente",codigoCliente));
cmd.Connection = conn;
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read()) {
int numeroCompras = reader.GetInt32(0);
if (numeroCompras > 20)
{
result = 0.15; //desconto de 15%
}
else {
if (numeroCompras > 10)
{
result = 0.10; //desconto de 10%
}
else {
if (numeroCompras > 1) {
result = 0.05; //desconto de 5%
}
}
}
}
}
}
return result;
}
}
PÁGINA 16
Coluna: Coluna de Qualidade
Primeiramente esse código está simplificado para que nós nos concentremos na dificuldade de manutenção. Claro que é
necessário implementar tratamento de erro e colocar os valores de descontos (5%, 10%, 15%) em uma tabela ou arquivo
de configuração. Estas coisas não são importantes para o que eu quero demonstrar.
Quero agora que você imagine como seria possível realizar testes automáticos nesse código, de modo que seja possível
verificar se o desconto está sendo aplicado corretamente. Observe o console application abaixo:

using System;
using Exemplo1;
namespace ConsoleApplication1
Qualidade

{
class Program
{
static void Main(string[] args)
{
DescontoFrete desconto = new DescontoFrete();
if (desconto.calcular("Cliente1") == 0.15)
Console.WriteLine("Desconto OURO - OK");
else
Console.WriteLine("Desconto OURO - ERRO");

if (desconto.calcular("Cliente2") == 0.1)
Console.WriteLine("Desconto PRATA - OK");
else
Console.WriteLine("Desconto PRATA - ERRO");

if (desconto.calcular("Cliente3") == 0.05)
Console.WriteLine("Desconto BRONZE - OK");
else
Console.WriteLine("Desconto BRONZE - ERRO");

if (desconto.calcular("Cliente4") == 0)
Console.WriteLine("Sem Desconto - OK");
else
Console.WriteLine("Sem Desconto - ERRO");
}
}
}

Como você pode ver, é perfeitamente possível criar um programa para testar esse código. Ao invés de manualmente
acessar o site com perfis diferentes e analisar qual é o desconto aplicado, o nosso console application executa todos os
caminhos possíveis do código e cria mensagens de acordo com o resultado.
No entanto, na prática, não é tão simples assim. O grande problema desse tipo de código é que ele depende do banco de
dados estar sempre consistente para os clientes Cliente1, Cliente2, Cliente3, Cliente4. Já que se outro desenvolvedor
realizar uma compra para qualquer um destes clientes pode afetar a execução do código de testes.
Por exemplo, imagine que o cliente Cliente2 já tenha comprado 20 produtos, logo ele é um cliente “PRATA”, e o código
de testes exibe corretamente a mensagem "Desconto PRATA - OK". Mas outro desenvolvedor que está trabalhando na
funcionalidade de carrinho de compras estava utilizando o Cliente2 para testes e realizou uma compra. Na próxima vez
que você executar o código de testes a mensagem será “Desconto PRATA - ERRO", já que o desconto aplicado para esse
cliente será de 20% (Cliente “OURO”) e não mais de 15%. O código está correto, mas como os dados foram modificados
o resultado esperado não é mais o mesmo.
Devido a esse tipo de problema é que quase a totalidade de códigos de testes desenvolvidos é descartável.
Depois de alguns dias os parâmetros de entrada já não valem nada e compensa mais criar outro programa de testes ou
trocar os parâmetros. Claramente é necessário outro tipo de abordagem.
PÁGINA 17
Coluna: Coluna de Qualidade
Se você tem alguma experiência com orientação a objetos pode perceber que a causa de todo o problema está no fato
que a classe DescontoFrete tem 2 responsabilidades: ela é uma classe que calcula o desconto de frete a acessa o banco
de dados! Esse compartilhamento de responsabilidade é um dos maiores fatores que dificultam a manutenção de código.
Vamos então reorganizar o código dessa classe para que ela tenha apenas uma responsabilidade. O primeiro passo é criar
uma nova classe com o código de acesso a dados:

public class DescontoFreteDB


{
public int consultarNumeroCompras(string codigoCliente)
Qualidade

{
int result = 0;
using (SqlConnection conn = new SqlConnection("..."))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "SELECT COUNT(*) FROM Vendas WHERE
CodCliente=@CodCliente";
cmd.Parameters.Add(new SqlParameter("@CodCliente",
codigoCliente));
cmd.Connection = conn;
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
result = reader.GetInt32(0);
}
}
}
return result;
}
}

Em seguida podemos alterar a classe DescontoFrete para chamar a nova classe DescontoFreteDB:

public class DescontoFrete


{
public double calcular(string codigoCliente) {
double result = 0;

int numeroCompras = new DescontoFreteDB


().consultarNumeroCompras(codigoCliente);
if (numeroCompras > 20)
{
result = 0.15; //desconto de 15%
}
else {
if (numeroCompras > 10)
{
result = 0.10; //desconto de 10%
}
else {
if (numeroCompras > 1) {
result = 0.05; //desconto de 5%
}
}
}
return result;
PÁGINA 18
Coluna: Coluna de Qualidade
Ótimo, agora tanto a classe DescontoFrete como DescontoFreteDB tem apenas uma responsabilidade. Essa alteração
facilita a manutenção de código, mas ainda é necessário contornar o problema de outro desenvolvedor modificar o banco
de dados e “quebrar” código de testes. Poderemos melhorar um pouco mais o código criando uma interface para a classe
DescontoFreteDB, esse passo é crucial para simplificar os testes da classe DescontoFrete.

public interface IDescontoFreteDB


{
public int consultarNumeroCompras(string codigoCliente);
}
Qualidade

O que acontece é que uma vez que eu defino um contrato para conversar com a classe DescontoFreteDB eu passo a ter
a opção de substituí-la (se de repente eu necessitar acessar o número de compras em outro sistema de banco de dados
como Oracle) ou criar cópias desta classe apenas para propósitos de testes. Como a classe abaixo:

public class DescontoFreteDBFalso : IDescontoFreteDB


{
public int consultarNumeroCompras(string codigoCliente)
{
switch (codigoCliente)
{
case "Cliente1":
return 21;
case "Cliente2":
return 11;
case "Cliente3":
return 2;
default:
return 0;
}
}
}

Essa classe que serve apenas para retornar valores fixos é a solução para os problemas de testes da classe DescontoFrete!
Observe abaixo:
public class DescontoFrete
{

private IDescontoFreteDB descontoDB = new DescontoFreteDB();

public IDescontoFreteDB DescontoDB


{
get { return descontoDB; }
set { descontoDB = value; }
}

public double calcular(string codigoCliente) {


double result = 0;

int numeroCompras = descontoDB.consultarNumeroCompras


(codigoCliente);
if (numeroCompras > 20)
{
result = 0.15; //desconto de 15%
}
else {
if (numeroCompras > 10)
{
PÁGINA 19
Coluna: Coluna de Qualidade
result = 0.10; //desconto de 10%
}
else {
if (numeroCompras > 5) {
result = 0.05; //desconto de 5%
}
}
}
return result;
}
Qualidade
}

E o código de testes:

class Program
{
static void Main(string[] args)
{
DescontoFrete desconto = new DescontoFrete();
desconto.DescontoDB = new DescontoFreteDBFalso();
if (desconto.calcular("Cliente1") == 0.15)
Console.WriteLine("Desconto OURO - OK");
else
Console.WriteLine("Desconto OURO - ERRO");

if (desconto.calcular("Cliente2") == 0.1)
Console.WriteLine("Desconto PRATA - OK");
else
Console.WriteLine("Desconto PRATA - ERRO");

if (desconto.calcular("Cliente3") == 0.05)
Console.WriteLine("Desconto BRONZE - OK");
else
Console.WriteLine("Desconto BRONZE - ERRO");

if (desconto.calcular("Cliente4") == 0)
Console.WriteLine("Sem Desconto - OK");
else
Console.WriteLine("Sem Desconto - ERRO");
}
}

Desse modo a classe DescontoFrete por padrão utiliza a classe DescontoFreteDB verdadeira, que realmente acessa o
banco de dados. Mas que eu desejo testar apenas o cálculo de desconto posso utilizar a propriedade DescontoFre-
te.DescontoDB para inserir qualquer classe que implemente a interface IDescontoFreteDB.
A flexibilidade ganha com esse tipo de construção é muito útil. O tratamento de erro dos nossos códigos quase nunca é
testado adequadamente porque é complexo gerar uma exceção como “Banco de dados indisponível” sem atrapalhar o
desenvolvimento dos outros membros da equipe, mas com essa construção somente seria necessário criar uma classe
que implemente IDescontoFreteDB e lance a exceção desejada, sem que seja preciso parar serviços ou forçar situações
no código verdadeiro.
Desenvolver desta maneira é uma grande mudança de paradigma para a maioria dos desenvolvedores, mas é um caminho
que leva a melhora consistente da qualidade dos códigos e permite que nós nos concentremos mais na criação de novas
funcionalidades que no “debug” de problemas.

Eduardo Mendonça Gomes (edugomes@codificandomagazine.net) é consultor de tecnologias Microsoft e


de qualidade de software na ITGROUP. Você pode encontrar outras informações sobre qualidade e notícias sobre
desenvolvimento em seu blog em http://edumgomes.blogspot.com/
PÁGINA 20
Coluna: Point2Share
Dando sequência a nossa abordagem inicial, veremos neste 2º artigo um pouco mais sobre as funcionalidades e capacida-
des proporcionadas pelas tecnologias Sharepoint. Para isso, detalharemos alguns aspectos técnicos com relação aos pro-
dutos envolvidos e, consequentemente, seus benefícios do ponto de vista de plataforma para soluções de produtividade,
Point2Share
colaboração e centralização de informações.

As tecnologias Sharepoint (Windows Sharepoint


Services 3.0 e Microsoft Office Sharepoint Server
2007) têem como base o sistema operacional
Windows Server 2003 ou posterior e o SQL Ser-
ver 2005 (com suporte ao SQL Server 2000) co-
mo plataforma de gerenciamento, armazenamento
e manutenção de dados.

Como uma plataforma baseada na disponibilidade


de dados e informações através do modelo Web,
temos a presença marcante do IIS – Internet In-
formation Services para o suporte ao modelo de
Figura 1. Arquitetura de infra-estrutura das tecnologias
execução do ASP.NET 2.0 (.Net Framework 2.0) Sharepoint.
e também do WF – Workflow Foundation (.Net Fra-
mework 3.0).

Esta arquitetura evolutiva e de dependência dos produtos acima citados é de extrema importância, pois a suportabilidade
à ambientes críticos - performance, alta-disponibilidade e confiabilidade - é automaticamente dependente de sua arquite-
tura-base – sendo neste caso, itens automaticamente endereçados pela robustez da plataforma Windows Server 2003 e
SQL Server 2005.

Além da consistência, a presença do ASP.Net 2.0 faz com que os desenvolvedores de aplicações-clássicas web possam
visualizar com bons olhos esta nova plataforma de serviços e, através do seu modelo de extensibilidade, compor soluções
de forma rápida – necessitando trabalhar com uma pequena curva de aprendizado frente ao modelo e a forma de custo-
mização das tecnologias Sharepoint.

Nesta jornada de aprendizado ao modelo de desenvol-


vimento e customização das tecnologias Sharepoint,
aproveitaremos em grande parte os conhecimentos
adquiridos, utilizados e válidos para o modelo de de-
senvolvimento ASP.Net. Dentre os principais pontos,
gostaria de ressaltar a suportabilidade às Master Pages
– como principal ponto de arquitetura visual e organi-
zacional de conteúdo, as Web Parts como provedores
de funcionalidades e interatividade aos usuários e os
Authentication Providers – já em um modelo mais
avançado de customização, onde podemos selecionar
o formato de autenticação do nosso portal web
(Sharepoint) com a mesma flexibilidade com que ar-
Figura 2. Interface Visual e Funcional de um Portal criado a
quitetamos nossos sites; ou seja, utilizando Windows
partir de templates (modelos) presentes no Windows Sharepoint
Services 3.0 Integrated Authentication, FBA – Forms-Based Authenti-
cation, LDAP integration, dentre outros mais.

Esta primeira sessão tem como objetivo introduzir os princípios básicos da ferramenta, sendo uma plataforma de serviços
a serem consumidos por nossas implementações corporativas. Novamente, gostaria de ressaltar que o modelo de custo-
mização das tecnologias Sharepoint é muito abrangente, completo e funcional – sendo esta a sua principal característica
para tornar-se uma plataforma de desenvolvimento, e não mais uma simples solução para a criação de portais corporati-
vos.
PÁGINA 21
Coluna: Point2Share
Outrora, produtos completos tornam-se, invariavelmente, complexos e também confusos – sendo praticamente impossí-
vel extrair o máximo das ferramentas dada a sua baixa produtividade e dificuldade em compor soluções (desde as mais
simples, até as mais complexas e robustas).
Point2Share
As tecnologias Sharepoint mitigam esses problemas tendo como princípio uma grande biblioteca de funcionalidades e
características customizáveis. Isso faz com que grande parte das soluções sejam entregues sem a necessidade de
“codificar”. Temos que desvincular os conceitos de “CUSTOMIZAR” com “CODIFICAR”, tornando o trabalho mais pro-
dutivo e, caso necessário, aberto à codificações e novas implementações com interfaces e características-base mais com-
plexas.
Neste ponto, podemos pensar nas seguintes conclusões:
 “Uma plataforma grande, completa e bastante complexa, porém de fácil utilização.”
 “Apesar da facilidade na utilização, temos um framework de extensibilidade e customização muito abrangente.”
(Customizando o sharepoint conseguimos compor rapidamente soluções funcionais e consistentes, extendendo-o através de
programação, “o céu é o limite!!!”) 
Ou seja, utilizamos uma plataforma de serviços de forma fácil e simples (inacreditável???); e tal simplicidade não faz com
que o produto seja limitado (inacreditável novamente???) – disponibilizando modelos de extensibilidade e customização
baseados no .Net Framework 2.0.

Vejam ao lado o Mapa de Desenvolvimento, ou seja, pontos de


extensibilidade proporcionados pelo Windows Sharepoint Ser-
vices 3.0.
Pela abrangência, vejo que faz-se necessário termos um foco
para os pontos mais importantes e impactantes; por isso, pode-
mos citar a área “Pages and User Interface” como nosso ponto
principal de estudo.

As Web Parts proporcionam uma alta flebilidade com relação ao


Figura 3. Mapa de Desenvolvimento do Win- modelo de visualização e renderização de conteúdos diversos; assim
dows Sharepoint Services 3.0. como as Master Pages proporcionam ao portal uma apresentação visual
única e padronizada a todas as páginas.
Gostaria de abordar tecnicamente as Master Pages, e a sua influência em
nossos projetos – pois será este o ponto de customização caso seja necessário atingir os seguintes objetivos:
 Customização visual do portal (interfaces diferentes da apresentada na Figura 2, por exemplo)
 Modificação da estrutura de navegação (atalhos, menus de navegação e afins);
 Customização ou parametrizações adicionais aos componentes globais (presentes em todas as páginas)

Este já é um dos pontos de compatibilidade da infra-estrutura de serviços porporcionados pelo Sharepoint e o .Net Fra-
mework 2.0.

Figura 4. Área de atuação estrutural da Master Page. Figura 5. Detalhamento dos controles
presentes na Master Page.
PÁGINA 22
Coluna: Point2Share
Na figura 4 podemos visualizar, a partir do destaque visual, as áreas definidas e gerenciadas a partir da Master Page. Ou
seja, estamos visualizando a página Default.aspx que esta utilizando a master page Default.master; contemplando basica-
mente toda a sua definição de topo estrutural do site e a navegação lateral.
Point2Share
Na figura 5, visualizamos a composição da Master Page – através da disposição dos controles responsáveis por cada pon-
to estrutural da página, resultando em funcionalidades e muitas vezes características visuais.

Com o entendimento desta estrutura, podemos facilmente modificar estas Master Pages para modificar os mais diversos
controles presentes em nosso portal. Outro ponto importante que vale ser ressaltado é a facilidade na mudança de la-
yout´s – que pode ser realizada através de ferramentas proprietárias e específicas para a integração com as tecnologias
Sharepoint, tal como o Office Sharepoint Designer 2007 (parte integrante do Office System 2007) ou outras ferramentas
tais como Visual Studio .Net 2005.

Vejam abaixo alguns exemplos do nosso site, modificando somente a Master Page.

Bom pessoal, o intuito deste nosso segundo bate-papo foi introduzir mais alguns conceitos com relação às tecnologias
Sharepoint, já com abordagens técnicas. Como diria um amigo meu: “Sigamos conversando ...” e espero que vocês estejam
gostando .... 

Abraços e até a próxima!

Hélio Sá Moreira (helio@codificandomagazine.net) é Microsoft MVP (Most Valuable Professional) em Office Share-
point Server 2007, especialista em arquitetura e implementação de soluções corporativas com atuação direta nas maiores e
mais importantes empresas nacionais. Entusiasta da plataforma de IW - Information Worker com abrangência a produtos
tais como Office System 2007, Office Sharepoint Server 2007, Office Communications Server 2007, Groove 2007, entre
muitos outros. Possui grandes interesses e atua também com as áreas de Data Management (SQL Server 2005) e Business
Intelligence (SQL Server 2005, PerformancePoint Server, Proclarity). Palestrante de grandes eventos tais como Microsoft
Tech-Ed 2006, BIT 2006, MS Innovation Days, e outros mais...
PÁGINA 23
Coluna: Como o mundo da voltas...
Olá amigos,
Como estréia desta coluna, tive a idéia de não abordar nenhum assunto realmente técnico (iremos abordar isso nas
próximas edições com certeza!), mas sim abordar um tema que acredito seja essencial para qualquer desenvolvedor
sério de mobilidade. A questão das plataformas – E acho que a pequena história a seguir ilustra um pouco sobre isso.
Recentemente tive a felicidade de re-encontrar um antigo amigo dos tempos de PalmOS. Na época éramos entusias-
COMPACT PLACE
tas do PalmIII e éramos fascinados com suas possibilidades e achávamos que aquela seria a plataforma que dominaria
todo o mundo devido a sua simplicidade e inovação. Em nossa desculpa tenho que dizer que éramos adolescentes e
conseqüentemente idiotas.
Era a época onde nós, recém formados, juntávamos nossos minguados salários para mandar buscar nos EUA essas
pequenas maravilhas a preço de ouro. Ficávamos fascinados como aquelas coisinhas eram versáteis e imaginávamos
como podíamos ter ficado tanto tempo sem um Palm em nossas vidas.
Tudo corria bem até 1999. Eu estava lá feliz com o meu PalmV até que vi as especificações do novo sistema opera-
cional PocketPC 2000, da Microsoft. Era praticamente um S.O. "de verdade", da forma como eu, desenvolvedor de
software, esperava de um sistema operacional. Aquilo fez meus olhos brilharem.
Falei isso com meu colega e ele falou que jamais a Microsoft iria ocupar o espaço do PalmOS, eles não tinha experi-
ência no segmento, não tinham dispositivos decentes, não tinham software. Não tinha nada.
Não sei se meu colega estava um pouco ofuscado pela nossa paixão pelo Palm, mas eu não via as coisas dessa manei-
ra. Sim, o PocketPC não tinha nada disso que ele falou, mas ele tinha uma coisa que o PalmOS nunca teve. O Poc-
ketPC era uma plataforma. Um verdadeiro sistema operacional, da forma como conhecemos um, para PDA's. Isso
me acendeu uma luz amarela sobre o futuro do PalmOS naquela época.
No ano seguinte, decidi ir contra todos os meus princípios e comprei um iPaq 3600, rodando o novíssimo PocketPC
2000. Era um tijolão na época de dispositivos pequenos, como o meu PalmV. Eu o mostrava entusiasmado para as
pessoas e elas só comentavam: "que tijolo! Cadê o PalmV?!". Mostrei para meu colega e ele me falou: "Você vai bater em
mim com isso?!!"  . Nunca esqueci.
Aparentemente eu olhava para o tijolão (err, iPaq) com olhos diferentes. Onde alguns viam um grande PDA comedor
de espaço e de bateria eu via um sistema operacional concebido para o futuro, com recursos bastante eficientes de
escalonamento de processos, alocação de memória e gerenciamento de drivers de dispositivo. Pela primeira vez eu vi
que o futuro estaria destinado ao então PocketPC 2000.
Essa foi uma época muito estranha. A maioria dos meus amigos PDA-zeiros tinha Palm. 99.99% da "imprensa especia-
lizada" só viam o iPaq (e os outros modelos com PocketPC 2000 da época) como um tijolão. A maioria dos sites,
blogs, fórums e formadores de opinião só viam o tijolão. Será que eles não enxergavam que o que importava não era
o tijolão mas sim o sistema operacional?
E olha que o PocketPC 2000 tinha problemas. E muitos. Mas menos que seu antecessor, o tosco Windows CE, do
qual todos nós riamos em conversas no bar. Mas eu sabia que os problemas do PocketPC 2000 eram coisas simples
de resolver, poderiam ser feitas com pequenas modificações nas camadas superiores do software. Eu via que o pro-
blema do PalmOS era mais profundo, baseadas em soluções simplistas, e a Palm na época não via essa "simplicidade"
do PalmOS como um problema. Foi um erro fatal.
A comunidade de PocketPC na época era mais ou menos como um gueto judeu durante a segunda guerra. Éramos
esquecidos em nossas próprias listas de discussão e passávamos ao largo de calorosas discussões sobre plataformas
que aconteciam nos fóruns em todo mundo, a maioria criada por usuários de Palm para criticar a escolha "estúpida"
de adotar qualquer PDA que não rodasse o PalmOS. Preferíamos ficar calados, sempre tirando dúvidas de usuários
PalmOS que analisavam as plataformas munidos de razão e não de paixão. Atraíamos esses usuários para o chamado
"lado negro", que chamávamos de "luz". Eram tempos divertidos aqueles.
PÁGINA 24
Coluna: Como o mundo da voltas...
Menos meu colega. Não conseguia entrar na cabeça dele a importância do sistema operacional num PDA. Para ele,
PDA era hardware e o sistema operacional uma coisa menor, apenas um acessório do hardware, nada mais.
Era meados de 2002 e eu agora um feliz possuidor de um Casio E-200 rodando o novíssimo PocketPC 2002 e ele
com um super PDA Sony NX80 rodando PalmOS. Não adiantava eu lhe mostrar os recursos do E-200,como o slot
CF e o suporte a drivers permitia que eu tivesse placas de wi-fi,GPS,TV, etc.. Para ele nada interessava. O look-and-fell
do NX80 era imbatível.
COMPACT PLACE
Por coisas do destino, nos separamos e ficamos alguns anos sem nos comunicar. Durante esse período vimos o mer-
cado mudar de rumo. A Microsoft lançou o Windows Mobile 2003, depois o Windows Mobile 2003SE e o atual
Windows Mobile 5.0. Muitos devices passaram. A Palm se dividiu. A sony saiu do mercado de PDA's. A quantidade
de fabricantes de devices com Windows Mobile cresceu.
Durante esse período, principalmente em 2004, houve uma verdadeira "debandada" de usuários PalmOS para o Win-
dows Mobile, principalmente devido a redução de tamanho dos até então "tijolões" e a total inércia da então Palm-
Source na condução dO PalmOS.
Aparentemente, a equalização do tamanho dos dispositivos fez saltar aos olhos dos usuários do PalmOS como sua
plataforma era limitada. A comunidade PocketPC agora saia dos guetos e gritava em alto e bom som que seus dispo-
sitivos tinham wi-fi, bluetooth, MP3, multitarefa, desde 2000! Os usuários de PalmOS ficavam atordoados se pergun-
tando como não tinham visto isso antes! Como isso aconteceu? E agora, como eu me livro da porcaria do meu Palm
T3?? 
Foi interessante observar como antigos defensores do PalmOS davam desculpas por estarem migrando de plataforma
a seus "seguidores". Toda a "imprensa especializada" fica procurando em vão explicações para esse fenômeno. A
comunidade de desenvolvedores não acreditavam que seus investimentos de longos anos estavam indo por água
abaixo. Não acreditavam que poderia sequer existir um PDA da própria Palm rodando Windows Mobile! Não acre-
ditavam mais que o PalmOS não era a plataforma destinada ao futuro.
Então finalmente meu colega me deu ouvidos. Falei para ele que, qualquer que seja o mercado, é o software que
importa. Não adianta tentar simplificar o software para ele se adequar a um hardware limitado. Faça um bom softwa-
re e deixe que o hardware evolua até que o sustente de forma adequada. Você tem de passar pelos tijolões até che-
gar a um i-Mate Jam se quiser fazer algo realmente destinado ao futuro.
Finalmente convenci meu colega e hoje ele é um feliz possuidor de um Dell X51v, rodando o Windows Mobile 5.0. E
agora ele também vê como um bom sistema operacional pode fazer diferença num mercado onde aparentemente é o
hardware que importa.
Mas não sem me dizer antes de ir embora que está de olho no "novo PalmOS" que deverá sair algum dia, baseado no
Linux!...

Eu também meu amigo. Eu também.

José Antonio Leal de Farias é MVP em


Windows Mobile Development e bacharel em
ciências da computação pela UFCG, pro-
gramador profissional nas linguagens C++ e C#
e atualmente é Diretor Técnico da Light Info-
con S.A . Atua como consultor na área de de-
senvolvimento para dispositivos móveis há mais
de 10 anos, participando de projetos em todo Brasil e em diversos países.”
PÁGINA 25
Coluna: No Stress… Think .Net
Neste segundo artigo relacionado ao Mundo Acadêmico, quero falar um pouco sobre um programa que é bastante
amplo e cheio de possibilidades para os alunos do Ensino Superior e do Ensino Técnico, que é o Programa de Células
Acadêmicas da Microsoft.
Mundo Acadêmico
Este programa é uma iniciativa interessante e posso dizê-lo como Líder de duas Células Acadêmicas, a FAMEC.NET e
a UNISAL.NET, aqui na cidade de São Paulo.

Uma Célula Acadêmica é um grupo de estudo criado por estudantes e/ou professores, para desenvolver, aprender e
aprimorar seus conhecimentos na plataforma Microsoft. Este grupo se reúne semanalmente para estudar objetivos
propostos pelo programa. A freqüência de reuniões depende do comprometimento e da assiduidade que os mem-
bros componentes terão.

Os assuntos que podem ser abordados numa Célula Acadêmica podem ser os mais variados, como Desenvolvimento
na plataforma .NET, Segurança, Infra-Estrutura, Bancos de Dados, etc. Os interessados podem abrir a sua célula aca-
dêmica, com o mínimo recomendado de 3 (três) componentes no site: http://www.seminargroup.com.br/celula

A metodologia utilizada para este programa é a “Metodologia de Evolução e Aprendizado em Grupo, visando desen-
volvimento de conhecimento técnico, habilidades de apresentação, comportamento social e comunicação, a fim de
alcançar um posicionamento de destaque no mercado de trabalho.”

Cabe ressaltar que o aprimoramento dos alunos e/ou membros componentes somente traz benefícios e o ideal de
superação profissional, além de contribuir com o ideal de todos aqui no Codificando.NET, que é o ideal de COMU-
NIDADE, ao replicarmos conhecimento adquirido.

Convido a quem estiver interessado em aprender, replicar e disseminar conhecimento, a criar uma Célula Acadêmi-
ca, não se esqueçam “Não tem que ser difícil”.

Saudações DotNetianas a todos!

Mauricio Wieler Orellana - Bacharel em Ciências


da Computação, Mestrando em Ciências da Compu-
taçã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), Universi-
dade Salesiana de São Paulo (UNISAL) e Faculdade
Montessori, desde 2000. Foí Coordenador Acadêmi-
co da INETA Brasil.
PÁGINA 26
Coluna: O Silverlight veio para ficar!
Muitos de vocês já devem ter ouvido falar de uma nova tecnologia lançada recentemente pela Microsoft, denominada
WPF/E. Com o lançamento do Windows Vista, as aplicações Desktop ganharam muitos novos recursos de apresen-
tação que, a partir do Windows Vista, podem ser explorados em suas próprias aplicações, agora com o WPF
(Windows Presentation Foundation). Mas aí você deve estar se perguntando: Qual o significado do “E” nesse codino-
me ? O “E” significa Everywhere (qualquer lugar), e é exatamente do que vamos falar hoje.
O WPF/E foi lançado para que nós, desenvolvedores de software, possamos criar aplicações utilizando WPF e publi-
car essas aplicações na internet para que possam ser acessadas a partir de um browser seja ele qual for. Esse codino-
me foi dado no princípio do lançamento desta tecnologia, que agora, já em sua versão Beta 1.0 recebeu oficialmente
o nome de Silverlight.
Muitos dizem que o Silverlight veio para competir com o Flash. Confesso que acredito nessa afirmação já que o Sil-
verlight possui todos os recursos necessários para que essa competição seja sadia, porém, devo acrescentar que
existe uma grande vantagem que pode ser decisiva, o suporte ao .Net Framework 3.0. Isso quer dizer que teremos
todos os recursos de apresentação presentes no WPF, todo o suporte às classes do .Net FrameWork e ainda po-
Visão Web

dendo publicar isso tudo em um servidor Web para que seja acessado por qualquer browser utilizando qualquer
sistema operacional. Incrível não ?
O Silverlight basicamente trabalha com um pluguin, que pode ser baixado pelo próprio site da Microsoft (http://
www.microsoft.com/silverlight) para que você consiga executar aplicações com suporte ao Silverlight. Nesse caso,
quando o usuário executar a página onde essa tecnologia se faz presente, será solicitado o download do pluguin que
deverá ser baixado e instalado para que o conteúdo seja visualizado.
Falando um pouco agora do lado desenvolvedor, ganhamos algumas ferramentas que darão suporte à criação das
aplicações desse tipo. O Visual Studio “Orcas” (codinome) será lançado e dará suporte para a criação de aplicativos
WPF e Silverlight para os desenvolvedores. Atualmente já é possível criar essas aplicações usando o Visual Studio
2005 baixando e instalando os templates disponíveis. A grande novidade é que a Microsoft também lançou algumas
ferramentas para os designers, que utilizarão a linguagem XAML (Extensible Application Markup Languagem), lê-se
“zammel”, uma linguagem declarativa baseada em XML para a criação da interface que será visualizada pelo usuário
final. Para que os designer não precisassem codificar o XAML, foram criadas algumas ferramentas como: Expression
Web, Expression Blend, Expression Design e Expression Media, que em conjunto gerarão a maior experiência de
usuários já vista até então, criando o XAML necessário para executar áudio, vídeo, animações e tudo o que é neces-
sário para chamar a atenção do usuário que está navegando. A integração dessas ferramentas com o Visual Studio é
completa. Esqueçam aqueles problemas em que o desenvolvedor “estraga” o layout da página ou o designer “perde”
parte do código já codificado pelo desenvolvedor, já que a apresentação estará presente no arquivo .xaml totalmente
desligado do arquivo “CodeBehind” (.cs ou .vb) da página. A integração do Silverlight com o ASP.NET Ajax Library
também está perfeita, permitindo que além de criar aplicações ricas ainda temos todas as facilidades que o Ajax pro-
porciona

Vou ficando por aqui, pedindo para que você visite o site http://www.silverlight.net e faça download das ferramentas
para desenvolvedores disponíveis tal como vídeos e tutoriais completos explicando passo-a-passo como criar e man-
ter aplicações SilverLight.

Divirtam-se e aguardem novidades para a próxima edição !!!

Andrey Sanches - andrey.sanches@uol.com.br é MVP (Most Valua-


ble Professional), MCP (Microsoft Certifield Professional) e trabalha
com desenvolvimento de sistemas na tecnologia .NET desde sua versão
beta. Líder da comunidade de desenvolvedores Codificando.Net de SP
(www.codificando.net), ministra treinamentos especializados na Trei-
nando.Net (http://www.treinando.net) e em diversas empresas, tam-
bém escreve constantemente artigos para sites como Portal Linha de
código, DevMedia e revistas como MSDN Magazine e Web Mobile.
PÁGINA 28

Artigo: Criando um jogo no J# com XNA utilizando a portabilidade do Framework .Net


Durante as sessões da Célula Acadêmica FAMEC.NET, veio à tona a discussão da portabilidade de código .NET, já que alguns dos componentes vieram do
Java e estão agora aprendendo C# e estão muito à vontade, ou melhor, “guerreando” e, como dizem os gaúchos, “peleando” com o J#. Graças à inquietude
de Wandy Luciano, um dos líderes da Célula e palestrante em alguns “carnavais” comigo, foi possível desvendar o mistério.

Utilizando a portabilidade do Framework.Net , ficou possibilitado o uso de duas ou mais linguagens para a construção de aplicações. Neste caso utilizaremos
para a construção de um jogo o Visual J# com os recursos do XNA Game Studio Express.

O exemplo foi elaborado com base na matéria publicada na revista .Net Magazine Ano 04 Edição 40 “Desenvolva seu próprio Game com .Net e XNA Game
Studio” que mostra uma programação simples em XNA. Mas para efeitos de estudo, este jogo foi construído com Visual J# e XNA. Com a compilação sen-
do executada em tempo real pelo CLR (Common Language Runtime), permite que os recursos do XNA, que foram desenvolvidos em C# e na linguagem J#
sejam aderidas ao desenvolvimento.

O jogo constitui de personagens que são uma bola, uma raquete e o fundo da tela com o objetivo de rebater a bola com a raquete. Para criá-los foi utilizado
o PaintBrush com nomes sugestivos (e muito “originais”) e salvos com extensão .png (bola.png, raquete.png) o fundo é background do jogo.A codificação foi
adaptada para a linguagem em J# deixando apenas algumas que são utilizados do próprio XNA.

Vamos iniciar o exemplo. Abra um novo projeto em J# File>New>Project em Name coloque MeuJogo clique em OK.

Na próxima etapa aparece o Form para a criação das delas para aplicativos, ele não será necessário, vamos a Solution Explorer para retirá-lo do projeto,
selecionando com o mouse o Form1.jsl clique com o botão direito do mouse em cima selecione Delete.

Ainda na Solution Explorer criaremos um diretório chamado “conteúdo” e um subdiretório chamado “modelos” nesta iremos adicionar as imagens.

Em seguida iremos fazer adicionar em References o Microsoft.XNA.Framework, com o mouse


clique com o botão direito em cima de aparece o menu selecione o Add Reference... abrirá a
caixa de diálogos na aba .NET vamos encontrar os itens do XNA selecione os três itens e clique
em OK.
PÁGINA 29

Artigo: Criando um jogo no J# com XNA utilizando a portabilidade do Framework .Net


Ainda no Solution Explorer criaremos duas classes: uma, chamada de clsPersonagens.jsl e a outra clsJogo.jsl. O código-fonte na fonte original estava no C#
então tivemos que fazer alterações e adaptações para que executasse com no XNA. Portando mostrarei onde esta sendo utilizada a codificação que perten-
ce ao XNA no código.

Na classe clsPersonagens.jsl importada as bibliotecas do XNA utilizando o


import Microsoft.Xna.Framework.*; para isso.Em seguida é definido para os personagens os seus atributos. Segue o fonte de como deve ficar:
package MeuJogo;

import Microsoft.Xna.Framework.*;

/**
* Summary description for clsPersonagens.
*/
public class Jogador
{
private Point _posicao;
private int _velocidade;

public Jogador(int x, int y)


{
_posicao = new Point(x, y);
_velocidade = 3;
}
public Point getPosicao()
{
return _posicao;
}
public void setPosicao(Point val)
{
_posicao = val;
}

public int getPosicaoX()


{
return _posicao.X;
}
public void setPosicaoX(int val)
{
_posicao.X = val;
}

public int getPosicaoY()


{
return _posicao.Y;
}
public void setPosicaoY(int val)
{
_posicao.Y = val;
}

public int getVelocidade()


{
return _velocidade;
}
public void setVelocidade(int val)
{
_velocidade = val;
}
}
PÁGINA 30

Artigo: Criando um jogo no J# com XNA utilizando a portabilidade do Framework .Net


public class Bola
{
private Point _posicao;
private int _velocidadeH;
private int _velocidadeV;

public Bola(int x, int y)


{
_posicao = new Point(x, y);
_velocidadeH = 3;
_velocidadeV = 3;
}
public Point getPosicao()
{
return _posicao;
}
public void setPosicao(Point val)
{
_posicao = val;
}
public int getPosicaoX()
{
return _posicao.X;
}
public void setPosicaoX(int val)
{
_posicao.X = val;
}
public int getPosicaoY()
{
return _posicao.Y;
}
public void setPosicaoY(int val)
{
_posicao.Y = val;
}
public int getVelocidadeH()
{
return _velocidadeH;
}
public void setVelocidadeH(int val)
{
_velocidadeH = val;
}
public int getVelocidadeV()
{
return _velocidadeV;
}
public void setVelocidadeV(int val)
{
_velocidadeV = val;
}
}

Este fonte indica a posição na tela e a velocidade dos personagens durante a execução do jogo. Utilize as teclas de atalho Ctrl+Shift+B para um Build sem
execução para verificar se há erros na codificação. Agora o fonte para a execução do jogo que ficará em clsJogo.
PÁGINA 31

Artigo: Criando um jogo no J# com XNA utilizando a portabilidade do Framework .Net


package MeuJogo;

import System.*;
import Microsoft.Xna.Framework.*;
import Microsoft.Xna.Framework.Audio.*;
import Microsoft.Xna.Framework.Content.*;
import Microsoft.Xna.Framework.Graphics.*;
import Microsoft.Xna.Framework.Input.*;
import Microsoft.Xna.Framework.Storage.*;

public class clsJogo extends Microsoft.Xna.Framework.Game


{
GraphicsDeviceManager graphics;
ContentManager content;

Texture2D imgJogador, imgBola;


SpriteBatch sprite;
Jogador objJogador;
Bola objBola;

int Acertos = 0;

public clsJogo()
{
graphics = new GraphicsDeviceManager(this);
content = new ContentManager(get_Services());
SetaPosicaoInicial();
}
public void SetaPosicaoInicial()
{
if (objJogador == null)
{
objJogador = new Jogador(400, 500);
objBola = new Bola(200, 50);
}
else
{
objJogador.setPosicao(new Point(400, 500));
objBola.setPosicao(new Point(200, 50));
}
}

//Aqui é feita a chamada das imagens dos personagens isso depente de onde //as imagens estam basta colo-
car o path
public void DefineImagens()
{
imgJogador = Texture2D.FromFile(graphics.get_GraphicsDevice(), "F:/Artigos J#/Jxna/MeuJogo/
MeuJogo/conteudo/modelos/raquete.png");
imgBola = Texture2D.FromFile(graphics.get_GraphicsDevice(), "F:/Artigos J#/Jxna/MeuJogo/
MeuJogo/conteudo/modelos/bola.png");
sprite = new SpriteBatch(graphics.get_GraphicsDevice());
}
PÁGINA 32

Artigo: Criando um jogo no J# com XNA utilizando a portabilidade do Framework .Net


void MoverBola()
{
objBola.setPosicaoX(objBola.getPosicaoX() + objBola.getVelocidadeH());
objBola.setPosicaoY(objBola.getPosicaoY() + objBola.getVelocidadeV());
if ((objBola.getPosicaoX() <= 0) || (objBola.getPosicaoX() >= (800 - imgBola.get_Width())))
{
objBola.setVelocidadeH(objBola.getVelocidadeH() * -1);
}
if ((objBola.getPosicaoY() <= 0))
{
objBola.setVelocidadeV(objBola.getVelocidadeV() * -1);
}
if (objBola.getPosicaoY() >= (600 - imgBola.get_Height()))
{
SetaPosicaoInicial();
}
}
void AcertouBola()
{
if(objBola.getPosicaoY() >= (objJogador.getPosicaoY() - imgBola.get_Height()))
if((objBola.getPosicaoX() >= (objJogador.getPosicaoX() - imgBola.get_Width())) &&
(objBola.getPosicaoX() <= objJogador.getPosicaoX() + imgJogador.get_Width()))
{
objBola.setVelocidadeV(objBola.getVelocidadeV() * -1);
Acertos += 1;
if(Acertos == 2)
{
if(objBola.getVelocidadeH() > 0)
{
objBola.setVelocidadeH(objBola.getVelocidadeH() + 1);
}
else
{
objBola.setVelocidadeH(objBola.getVelocidadeH() - 1);
}
if(objBola.getVelocidadeV() > 0)
{
objBola.setVelocidadeV(objBola.getVelocidadeV() + 1);
}
else
{
objBola.setVelocidadeV(objBola.getVelocidadeV() - 1);
}
Acertos = 0;
}
}
}
PÁGINA 33

Artigo: Criando um jogo no J# com XNA utilizando a portabilidade do Framework .Net


//Neste ponto faz o reconhecimento das teclas que foram acionadas, //devemos observar que Keys existe em
System.Windows.Forms.Keys
//caso em outra aplicação estiver utilizando o Form.

void EntradaTeclado()
{
KeyboardState currentState = Keyboard.GetState();
Keys[] currentKeys = currentState.GetPressedKeys();
for (int i = 0; i < currentKeys.length; i++)
{
if (currentKeys[i] == Keys.Escape)
{
this.Exit();
}

if (currentKeys[i] == Keys.Left)
{
if (objJogador.getPosicaoX() < 5)
{
objJogador.setPosicaoX(5);
}
else
{
objJogador.setPosicaoX(objJogador.getPosicaoX() - objJoga-
dor.getVelocidade());
}
}
if (currentKeys[i] == Keys.Right)
{
if (objJogador.getPosicaoX() > (800 - (imgJogador.get_Width() + 5)))
{
objJogador.setPosicaoX(800 - (imgJogador.get_Width() + 5));
}
else
{
objJogador.setPosicaoX(objJogador.getPosicaoX() + objJoga-
dor.getVelocidade());
}
}
}
}
protected void BeginRun()
{
super.BeginRun();
this.graphics.get_GraphicsDevice().add_DeviceReset(new System.EventHandler
(this.GraphicsDevice_DeviceReset));
DefineImagens();
}
private void GraphicsDevice_DeviceReset(Object sender,System.EventArgs e)
{
DefineImagens();
}
protected void Update(GameTime gameTime)
{

if (GamePad.GetState(PlayerIndex.One).get_Buttons().get_Back().Equals(ButtonState.Pressed))
{
this.Exit();
}
MoverBola();
EntradaTeclado();
AcertouBola();
super.Update(gameTime);
}
PÁGINA 34

Artigo: Criando um jogo no J# com XNA utilizando a portabilidade do Framework .Net


protected void Draw(GameTime gameTime)
{
graphics.get_GraphicsDevice().Clear(Color.get_White());
sprite.Begin(SpriteBlendMode.AlphaBlend);
sprite.Draw(imgJogador, new Rectangle(objJogador.getPosicaoX(), objJogador.getPosicaoY(), imgJo-
gador.get_Width(), imgJogador.get_Height()), Color.get_White());
sprite.Draw(imgBola, new Rectangle(objBola.getPosicaoX(), objBola.getPosicaoY(), imgBo-
la.get_Width(), imgBola.get_Height()), Color.get_White());
sprite.End();
super.Draw(gameTime);
}

}
No código anterior foi definido a lógica que executa a rebatida, o movimento da bola, a textura dos personagens. Também foi aplicada a lógica para aumento
da velocidade da bola aumentando assim o nível de dificuldade do jogo. Utilize as teclas de atalho Ctrl+Shift+B para um Build sem execução para verificar se
há erros na codificação.

Agora vamos ao Solution Explorer em Program.jsl, nele iremos substituir as linhas:


Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());

Por:

clsJogo jogo = new clsJogo();


jogo.Run();

Isso fará a chamada da classe clsJogo na execução do jogo. Pronto podemos executar o exemplo. E ele ficará como na imagem abaixo:

Divirtam-se, senhores, e não se esqueçam da célebre frase de Renato Haddad:


“No Stress, Think .NET !”

Mauricio Wieler Orellana - Bacharel em Ciências


da Computação, Mestrando em Ciências da Compu-
taçã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), Universi-
dade Salesiana de São Paulo (UNISAL) e Faculdade
Montessori, desde 2000. Foí Coordenador Acadêmi-
co da INETA Brasil.
RECORDAR É VIVER!
PÁGINA 36
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 CTP do SQL Server 2008 já está disponível para a comunidade. As versões disponíveis são:

SQL Server 2008 Developer Edition x86, English

SQL Server 2008 Developer Edition x64, English

SQL Server 2008 Developer Edition x86, English ISO

SQL Server 2008 Developer Edition x64, English ISO

Link para Download: https://connect.microsoft.com/


SQLServer/content/content.aspx?ContentID=5395
PÁGINA 37
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
Eduardo Miranda trabalha na Microsoft Brasil e publica posts interessantíssimos com uma freqüência
muito boa. O grande destaque são os destaques da semana, onde em um resumo simples ele reporta os
acontecimentos .Netianos.

Link do Blog: http://eduardomiranda.net/blogs/dotnet/

Blog Internacional
O time de desenvolvimento do VB.Net trabalha muito forte em conjunto para manter o blog do time
“Os Blogs hoje são atualizado ao menos uma vez ao dia. São posts bem trabalhados mostrando principalmente as grandes
novidades da linguagem.
ferramentas

essenciais para
Link do Blog: http://blogs.msdn.com/vbteam
quem acompanha

tecnologia”
PÁGINA 38
Expert: “Exigências” de um programador
Israel Aéce, MVP de destaque na comunidade, publicou recentemente sobre algumas exigências para um
desenvolvedor exercitar bem o seu trabalho:

 O Microsoft Outlook deve ficar minimizado junto ao systray (o melhor seria ficar fechado :));

 O Mouse deve ter scroller e também um botão para “voltar”;


 Pen-Drive com MP3 (meu HD só tem 40GB);
 Fone de ouvido potente;

 As preferências do Google devem ser alteradas para exibir 100 resultados por página;
 Ter um conta no Bloglines para ler blogs em qualquer lugar;

 Ter a maioria dos aplicativos que uso na barra de tarefas. Atualmente são:
Desktop
Reflector
Notepad
Outlook
IE
VS.NET 2005
MSDN Library
VS.NET Command Prompt
Computer Management
“Os Blogs hoje são
Process Explorer
ferramentas Service Configuration Editor
essenciais para Virtual PC

quem acompanha Enterprise Manager? Query Analyser? Não! Nada disso. Uso o Server Explorer do VS.NET
 2GB de RAM;
tecnologia”
 2 Monitores (isso é demais!);
 Skin clássico do Windows;

 Trabalhar com o VS.NET em full-screen;


 Isso melhora tanto...;
 Atalhos
Windows + E: Windows Explorer
Windows + D: Show Desktop
Windows + R: Run (Executar)
Ctrl + F4 (VS.NET): Fecha o documento aberto
Ctrl W + L (VS.NET): Server Explorer

Quais são as suas exigência? Envie ao editor@codificandomagazine.net e publicaremos!


Dicas
PÁGINA 39

Hoje em dia temos uma quantidade gigantesca de materiais de estudo, porém um direcionamento sobre
esses materiais é sempre muito importante. Nesta edição vamos apontar bons materiais produzidos no
país.

Open Source
“Hoje em dia
Muitos projetos Open Source podem ajudar em muito o dia-a-dia de quem trabalha com o Visual Studio
temos uma ou .Net em geral. Temos um novo site com diversos projetos para Download.

quantidade

gigantesca de http://www.codeplex.com
materiais de

estudo, porém um

direcionamento

sobre esses

materiais é sempre

muito importante”
Muitos Web Casts
O número de Web Casts disponibilizado pela Microsoft aumenta cada dia mais, visite o site e agende os
mais interessantes.

http://www.microsoft.com/brasil/msdn/
Eventos/Webcasts.mspx

VSTS Brasil
A primeira comunidade do Brasil chama-se VSTS Rocks! Já com diversos eventos realizados, o site possui
uma área de blogs atualizada por Alexandre Tarifa, Fábio Camara e Mauro Ana.

http://www.vstsrocks.com.br
Comunidade: Build Brasil
PÁGINA

O Build Developers.Net está de volta, só que agora de cara nova!! O grupo nasceu
no dia 06 de outubro de 2004, com o objetivo de reunir profissionais e pessoas
interessadas em trocar informações sobre modelo, formas e técnicas de desenvol-
vimento e soluções Microsoft.
Foi o primeiro a realizar atividades desse tipo na Região Metropolitana da Baixada
Santista e conquistou reconhecimento do público, sempre contando com apoio da
Microsoft Brasil e de outras comunidades como o GoDtNet e o próprio Codifi-
cando.Net. Nos últimos meses o grupo vem passando por uma reformulação, o
relançamento acontecerá no segundo semestre, agora com o nome de Build Brasil.
Os Build Brasil herdará a bagagem e adotará os mesmos princípios do antigo Build Developers.Net. Como diferencial podemos destacar
a proposta de transformar o Build Brasil em uma Organização Não Governamental (ONG) que tem por objetivo realizar um trabalho
social e comunitário para a formação profissional e divulgação de material e conhecimento técnico na área de tecnologia.
As principais ações do grupos serão os eventos presenciais, workshops práticos, artigos técnicos e fórum de discussão. Tudo isso sem-
pre bem centralizado em nosso portal o www.buildbrasil.org .Todo trabalho será sempre desenvolvido com objetivo:
“Trocar conhecimento e experiências”
Nossa filosofia é que o conhecimento é para ser divulgado e repassado, para que assim tenhamos sempre pessoas mais inteligentes e
qualificadas.
Esperamos continuar contando com apoio dos parceiros nessa nova etapa. Quanto mais pessoas estiverem engajadas neste objetivo,
melhores serão os resultados futuros. Podemos afirmar que a maior recompensa que uma pessoa pode ter por dedicar parte do seu
tempo à comunidade, é o seu próprio reconhecimento profissional.

O RECONHECIMENTO

A ideal do Build Developers.Net foi apresentado à comunidade da Baixada Santista em um evento de lançamento realizado na Faculdade
de Tecnologia de Praia Grande, em outubro de 2004.
Fomos muito bem recebidos e desde então a comunidade Build Brasil cresceu e se multiplicou, marcando presença em dentro e fora da
região. Nossa agenda de eventos era completa. Um dos principais foi o Microsoft on the Beach, evento anual, que tem como característi-
ca o lado social, onde são arrecadados alimentos em prol do Fundo Social de Solidariedade da cidade receptora do evento.
A terceira edição do Microsoft on the Beach já está sendo preparada, para que possamos receber com qualidade e conforto nossos ex-
pectadores. Como nas edições anteriores o evento pretende trazer palestrantes renomados para discutirem as ultimas novidades no
mundo da tecnologia, movimentando estudantes e profissionais de várias localidades.
Eventos como esse foram realizados graças ao apoio e ao reconhecimento de diversas instituições como Microsoft, International .NET
Association, Culminis, Prefeitura de Praia Grande e de Santos, além do apoio e divulgação dos órgãos de impressa da Baixada Santista.

NOSSA EQUIPE.

Em seu lançamento o Build Brasil (Build Developer´s .NET), contava com cinco integrantes que contribuíram pelo sucesso inicial da co-
munidade. Hoje perto de completar três anos, e perto de seu relançamento como ONG, a estrutura do Build Brasil está organizada da
seguinte forma:
Líderes- Adriano Bertucci – adriano@buildbrasil.org / Israel Lucania – Israel@buildbrasil.org
Co-Líderes - Renato Sacco – renato@buildbrasil.org / Abdul Hade - abdul.hade@buildbrasil.org / Rafael Magalhães – Rafa-
el@buildbrasil.org

COMUNIDADE COM VONTADE

É isso ai pessoal, o Build Brasil está aí para contribuir com o crescimento da comunidade e dos profissionais envolvidos.
Você também pode fazer parte dessa comunidade, junte-se a nós!
Um abraço

Adriano Bertucci - Blog: www.adrianobertucci.com


Cobertura: REMIX 2007
PÁGINA 41

Um evento diferente! Esta é a definição do


REMIX 2007. Com o objetivo de atingir
(MIXAR) os públicos: Desenvolvedores e De-
signers o evento foi realizado em um espaço
muito diferenciado e com um clima totalmente informal. A infra-estrutura do evento era formada por:
Área de discussão com pufs, ambiente com XBOX 360 em uma TV gigante e projeção em um telão, coffee
break com DJ, sessões técnicas com os melhores profissionais sobre o assunto.
O público formado por 50% desenvolvedores e 50% designer assistiram sessões de Expression Studio e
Visual Studio Orcas e ficou claro o poder e o caminho que esses ferramentas podem proporcionar.
Foram demonstrados projetos reais de empresas que já estão investindo nesta tecnologia.
Além de funcionários da Microsoft, o evento trazia convidados, inclusive MVP´s para apresentar ao publico
um conteúdo muito interessante.
“Coffee break

com DJ.”

Fotos do evento
PÁGINA 42
.Close()
Nesta edição da coluna .Close() resolvi re-publicar um texto de um artigo que escrevi sobre Smart Client sobre um assunto que
acredito ser muito interessante...
Nos últimos anos, nos projetos de software comerciais e corporativos, uma pergunta que ocorre no início do projeto acaba
tendo uma resposta simples e “óbvia”:

Esta aplicação será Windows ou Web?

A resposta em coro é dada pela equipe de desenvolvimento ou afins: Web... É claro!

Esta resposta está certa ou errada? Depende! Aliás, depende muito e de inúmeros pontos que devem ser discutido antes desta
resposta.
Acompanho diversos projetos em empresas de diversos ramos e portes e vejo em pelo menos 70% dos casos um erro de arqui-
tetura. Às vezes erros grotescos que geram a necessidade de simplesmente refazer o sistema. Isso porque a resposta “óbvia”
foi seguida.
Nada contra a Web, muito pelo contrário. A idéia principal deste artigo é apresentar os pontos de cada tecnologia e depen-
dendo de cada caso, teremos uma resposta coerente e significativa.
Outro cenário baseado em fatos reais.
O Consultor chega a um cliente para uma reunião onde o cliente vai pedir um sistema:

- Olá amigo consultor. Eu gostaria de um sistema Web de controle de estoque!


Veja: o cliente já definiu a arquitetura do projeto!

Tipos de arquiteturas
Arquitetura Thin Client
São baseadas em navegador, ou seja, executadas dentro de um navegador, seguindo suas características e limitações.

Principais vantagens:
Eficiência na exposição – Seu sistema pode funcionar na China! Em “qualquer” browser, em qualquer sistema operacional;
Gerenciamento centralizado – O sistema fica em um ponto único (servidor) e o controle de quem controla a aplicação é muito
mais simples. O gerenciamento engloba: configurações, versões, controle de acesso, etc;
Solução interna e externa – Seu sistema funciona tanto na intranet da sua empresa como na internet para todos.

Principais desvantagens:
100% conectado – O sistema fica em um servidor e toda a sua execução ocorre no servidor. Com isso para que o usuário mani-
pule o sistema a cada ação tomada no sistema, deve-se ocorrer uma conexão com o servidor da aplicação;
Limitações do navegador – Controles pobres, recursos simples e para funcionalidades relativamente simples, deve ter um conhe-
cimento absurdo de DHTML e Java Script;
Produtividade do usuário baixa – O usuário (cliente) que é a pessoa que deve ficar feliz com o sistema, acaba perdendo
muito na usabilidade e produtividade no seu dia-a-dia;
Produtividade do desenvolvedor baixa – Mesmo com novas tecnologias AJAX, desenvolver recursos mais avançados para
melhorar a usabilidade acabam sendo de extrema dificuldade e trabalhoso e ainda sim não chega a ser uma tecnologia que ofere-
ce uma usabilidade 100% efetiva, porque nunca podemos esquecer: estamos dentro de um navegador.
PÁGINA 43
.Close()
Arquitetura Rich Client
Principais vantagens:
Baseada em Windows – Todo o poder do sistema operacional Windows;
Trabalha conectado e desconectado – Podem-se criar aplicações com funcionalidades Off-line e a aplicação não depende de nenhum
serviço servidor para executar a não ser que tenha dependência de Banco de Dados ou algum outro recurso;
Solicitação ao servidor somente quando necessário – A aplicação só faz uma solicitação ao servidor caso algum recurso externo da
aplicação é solicitado;
Produtividade do usuário – O usuário ganha em produtividade já que ele está utilizando uma aplicação que utiliza todos os recur-
sos do sistema operacional;
Produtividade do desenvolvedor – O desenvolvedor praticamente só gasta o seu tempo no negócio da aplicação e praticamente
nada com funcionalidades de interface, já que a tecnologia oferece os recursos nativamente.

Principais desvantagens:
DIFICULDADE NA DISTRIBUIÇÃO – A distribuição é muito complicada já que cada máquina tem suas particularidades que
pode afetar no funcionamento do sistema ou até mesmo na não instalação do sistema.

Resumindo
Comparando as duas arquiteturas apresentadas, temos então Thin Client como a arquitetura ideal para termos uma distribuição e
gerenciamento centralizado, já Rich Client acaba sendo uma arquitetura ideal para produtividade tanto do usuário como do desenvol-
vedor.

Arquitetura Smart Client


Combina as principais vantagens das duas arquiteturas já apresentadas.
Gerenciamento e distribuição centralizada e inteligente (click once);
Aplicações executadas localmente, trazendo todos os recursos do sistema operacional;
Produtividade para o desenvolvedor e usuário;
Trabalha conectado e desconectado;
Flexibilidade de dispositivos;
Etc etc etc etc etc.

Resumindo
A arquitetura Smart Client consolida as principais vantagens das arquiteturas Thin Client e Smart Client tornando-se mui-
to efetiva e funcional para aplicações corporativas e comerciais. O funcionamento é simples:
 Gerenciamento e distribuição são feitos através da Web (IIS);
 Execução da aplicação é local (Computador do usuário);

 Comunicação da aplicação com regras de negócio com Web Services (Veja outros tipos a seguir).
Artigo completo em: http://www.linhadecodigo.com.br/colunas.asp?id_colunista=54

Até a próxima...

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.

S-ar putea să vă placă și