Codificando-e-magazine1

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Codificando-e-magazine1 as PDF for free.

More details

  • Words: 13,288
  • Pages: 43
Powered by Codificando .Net  360 S PARTA THIS IS XNA EXPRESS

NUMERO 2

#1 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 CODIFICANDO.NET

NESTA EDIÇÃO

e-magazine E D I Ç Ã O

Entrevista

3

Entrevista

5

SQL 2008

8

Coluna: XNA

10

Coluna: BizTalk.ing

12

Coluna de Qualidade

15

Coluna: Point2Share

20

Coluna: Compact Place

23

Coluna: Acadêmico

25

Coluna: Web

26

Artigo: XNA

28

Download do Mês

36

Blog do Mês

37

Comunidade Build Brasil

40

Coluna: .Close()

42

0

A N O

I

J U N H O

2 0 0 7

Editorial 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. Esse número nos proporciona um problema: Como manter ou aumentar este número? Este desafio já está lançado com a segunda edição da revista que conta com um número superior de colunas e artigos... Espero que o resultado seja positivo. 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. A qualidade da segunda edição está muito boa, assim como a primeira, mas vamos tentar evoluir cada vez mais, por isso o feedback da comunidade é tão importante... Qualquer sugestão mande para [email protected]. Teremos também nessa edição a estréia do nosso repórter Alfred Myers que de cara publica uma entrevista internacional com um funcionário da Microsoft que atua no time de C#... Leitura imperdível. Vamos evoluindo, mas para isso precisamos muito de um feedback e da colaboração da comunidade. A revista é da comunidade, por isso precisamos tanto disso.

Equipe Boa leitura! Alexandre Tarifa [email protected]

Editor: Alexandre Tarifa Co-Editores: Andrey Sanches Emerson Facunte Reporter Alfred Myers 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 entrevista com o Marcelo Guerra, Uruguaio que trabalha na equipe de desenvolvimento da Microsoft Corp.

Alfred Myers: Quem é você? Marcelo Guerra: Eu sou Marcelo Guerra. Eu sou engenheiro em computação pela Universidad de la Republica do Uruguay. Eu morava lá até 2006 e vim para Redmond há 9 meses. AM: O que você faz na Microsoft? MG: Eu sou um SDET (Software Development Engineer in Test) trabalhando no time do compilador de C#. O time agora está desenvolvendo a versão 3.0 que inclui o LINQ. Meu trabalho consiste em escrever código para tentar fazer o compilador falhar e ferramentas que me auxiliam neste trabalho, especialmente ferramentas que automatizem o trabalho. AM: Como você veio parar na Microsoft? Qual era a tua experiência anterior? MG: Eu fui recomendado por alguém que já estava na Microsoft, então passei pelo processo de entrevistas que incluem entrevistas por telefone e ao vivo. Depois de alguns meses nisto e mais alguns no processo de tirar o visto eu vim para cá. Antes de vir para a Microsoft eu trabalhava como líder de desenvolvimento / gerente de produto para uma empresa de software no Uruguai. Eu também fiz várias provas de certificação. AM? Em sua opinião, qual o recurso mais excitante vindo no C# 3.0? MG: Eu tenho três recursos favoritos:

Na foto: Alfred Myers, Marcelo Gerra e Veronica.

Eu gosto dos métodos parciais (Partial Methods) por que eles foram a primeira coisa que eu testei ao chegar à Microsoft e acho que não seja um dos novos recursos mais badalados apesar de ser extremamente útil. Eu gosto dos Query Expressions porque eles vão fazer facilitar a vida do desenvolvedor (em especial aqueles trabalhando com bancos de dados e que poderão usar DLINQ para fazer o seu trabalho). Eu gosto de Lambda Expressions porque eles são um conceito interessante e a maneira na qual eles foram implementados no C# fazem deles menos assustadores do que eles podem parecer à primeira vista. Com o tempo, eles tornarão o código mais fácil de ler apesar de não ser tão fácil no começo. AM: Que tipo de recursos nós podemos esperar para a próxima versão do C#? MG: Não tenho muito a falar a respeito. Estamos terminando o trabalho no Orcas e não há planos públicos para o que será a próxima versão. Há vários projetos e linguagens interessantes sendo desenvolvidos na Microsoft Research. Há também uma coisa interessante que foi demonstrada no TechEd chamado PLINQ (Parallel LINQ) que vai usar a forma declarativa de fazer as coisas do LINQ e o fato de os computadores não estarem ficando mais rápidos por conta do clock do processador e sim porque estamos adicionando mais CPUs às máquinas. AM: Quais são os melhores lugares para procurar informações sobre o C#? MG: O Visual C# Developer Center (http:// msdn2.microsoft.com/en-us/vcsharp/default.aspx) é em minha opinião, o melhor lugar para encontrar os links para mais informações. A partir de lá, você pode ir para a documentação, recursos de aprendizado, blogs, Microsoft Connect, etc.

PÁGINA

4

Entrevista - Marcelo Guerra AM: Qual a visão da Microsoft sobre o ecossistema das comunidades? Vocês realmente as usam para ouvir os pedidos e críticas quando planejam um produto? MG: Em minha opinião, estamos muito satisfeitos com o engajamento, ajuda e feedback que recebemos da comunidade. Um exemplo disto são os fóruns. Muitas vezes quando estou tentando responder a uma questão, antes de postar eu descubro que um MVP já respondeu. É muito legal ver o nível de envolvimento que os MVPs têm. Também foi muito interessante conhecê-los durante o último MVP Summit. Sem dúvida, nós escutamos o feedback da comunidade especialmente o dado através de fóruns e o site Connect. Pode ser que você não veja o teu feedback na próxima versão do produto, mas sem dúvida ele é levado em conta. AM: Qual a sua experiência com comunidades no Uruguai? MG: No Uruguai, eu era membro do GUUNET (Grupo de Usuarios Uruguayos de .Net). Foi uma experiência bastante positiva. Tínhamos reuniões, compartilhávamos experiências e também assistíamos a apresentações sobre novas tecnologias.

AM: Você acha que o trabalho pela comunidade acaba criando novas oportunidades e crescimento profissional? MG: Eu acho que trabalhar pela comunidade é precioso. Ele te dá influência e conhecimento, ambos os quais são muito importantes para o teu crescimento profissional. Se envolvendo em esforços da comunidade e se tornando um MVP, por exemplo, você obtém muito conhecimento do que outras pessoas estão fazendo e o que está vindo de modo que você esteja preparado. AM: Nós temos comunidades bem fortes no Brasil. Como é isto no Uruguai? MG: O Uruguai é bem menor, então só temos um único grupo de usuários, mas o grupo é bem forte e tem bastante suporte da Microsoft. AM: Como você costuma contribuir para a comunidade? MG: Agora eu tenho contribuído mais respondendo a perguntas nos fóruns. Eu gostaria muito de poder me engajar mais com comunidades latino-americanas e seus esforços. Sem dúvida eu gostaria de manter contato com o Codificando .NET e outros grupos de usuários que estejam interessados.

Marcelo Guerra ([email protected]) é 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 desenvolvendo automação de processos de negócios (Business Process Automation) e sistemas de gerenciamento de documentos baseados em tecnologias 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 ([email protected]) - 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 por participar desta entrevista para a revista Codificando e-Magazine. Falando sobre comunidade, qual a importância da Comunidade em relação aos produtos e ferramentas de desenvolvimento na Microsoft? Cézar Guimarães: Olá e obrigado pelo convite para participar desta edição da Codificando eMagazine. Falando sobre comunidades, a Microsoft entende a importância das comunidades técnicas e procura apoiá-las com artigos disponíveis em sites como o MSDN e Technet, fóruns de discussão, eventos e apoio aos grupos de usuários. Mas, para mim, o principal benefício dela está no seu próprio nome: “Comunidade”. Espera-se de uma comunidade a oportunidade de encontrar pessoas com o mesmo interesse e a partir daí, iniciar uma troca, onde você terá uma série de benefícios e também oferecerá benefícios. Que benefícios são estes: troca de experiências, ajuda para resolver problemas e até mesmo oportunidades para a carreira, somente para citar alguns. Portanto quanto maior a comunidade e quanto mais pessoas com disposição de troca tivermos, mais profissionais experientes existirão e mais maduros serão os desenvolvedores brasileiros.

AT: Hoje existem diversas formas de colaboração/trabalhos que as comunidades oferecem. Quais tipos de trabalho você acha as mais eficazes? CG: Sinceramente acredito que todos sejam eficazes. A diferença é a sua necessidade naquele momento ou o seu perfil. Os eventos são importantíssimos para ficarmos antenados nas novidades e nas tecnologias recém lançadas. Os Fóruns oferecem uma maneira simples e rápida de conseguirmos ajuda para resolver alguns problemas. Os blogs oferecem uma visão para onde as coisas estão caminhando e a nos dá o oportunidade de termos discussões saudáveis sobre determinados temas. AT: Você acredita que ainda existe alguma forma de inovar estes trabalhos? Quais foram os trabalhos mais inovadores que você presenciou no período em que trabalhou focado nesta área? CG: Sempre existe possibilidade de inovar. O que o Codificando está fazendo agora, lançando esta revista on-line, é um exemplo de inovação. Os brasileiros, em geral, são muito criativos e os grupos estão sempre propondo algo novo. A inovação não está apenas em criar algo novo, mas muitas vezes está em fazer algo de maneira diferente. Neste respeito, destaco a maneira como os diversos grupos procuraram se unir para fortalecer a comunidade brasileira, por exemplo, fazendo eventos juntos. Também a maneira como os grupos apoiaram as iniciativas junto com o INETA e MSDN em roadshows pelo país.

AT: Uma grande questão apontada sob os desenvolvedores Microsoft está na qualidade no desenvolvimento (codificação), você acha que a participação dos desenvolvedores 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 tecnolotivo 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? AT: Uma grande questão apontada sob os desenvolvedores Microsoft está na qualidade no desenvolvimento (codificação), você acha que a participação dos desenvolvedores na comunidade por facilitar a evolução da qualidade? CG: Com certeza sim. Como mencionei o objetivo das comunidades é o benefício comum. E o maior benefício que podemos ter nas comunidades técnicas é o nosso próprio amadurecimento.

CG: Segundo o que foi anunciado no Remix 07 pelo Celso Gomes no keynote, o Silverlight 1.0 está previsto para este ano (2007) ainda. Assim como aconteceu no ASP.NET AJAX (codenome “ATLAS”), versões de preview estão sendo disponibilizadas e já podem ser utilizadas. Isto permite que bastante feedback seja dado. E isto contribui bastante para o amadurecimento da tecnologia. Eu acredito que este fator aliado aos benefícios da própria tecnologia farão que ele tenha uma grande adoção. Em relação ao impacto, quem já viu alguma demonstração dele já deve ter

PÁGINA

6

Entrevista - Cezar Guimarães ficado impressionado. Os efeitos que podem ser feitos, unindo media, animação e dados é impressionante. O feedback que tenho recebido após as minhas palestras sobre desenvolvimento com Silverlight, inclusive no Remix, é que será possível fazer mais coisas com ele do que com as tecnologias existentes e ainda por cima de uma maneira mais simples. Imagine então com a versão 1.1 do Silverlight onde teremos .NET no browser! AT: O Visual Studio 2008 (“Orcas”) já tem data prevista para lançamento, quais são os grandes recursos em destaque que você aponta? CG: Ainda não tenho a data oficial do lançamento. Com certeza as novidades são grandes, incluindo novidades no framework e funcionalidades na ferramenta para aumentar a nossa produtividade. A grande novidade no framework para mim é o LINQ. Com ele será possível não apenas ter o mapeamento objeto relacional, como também realizar queries em qualquer coleção de objetos. Para os desenvolvedores web as novidades são muitas: melhorias para a criação e manutenção de estilos, integração do ASP.NET como Silverlight de uma maneira muito simples. Mas, a que mais me chama a atenção e o intellisense de javascript e o debug integrado na ferramenta. AT: Qual a sua opinião sobre a qualidade/ conhecimento dos desenvolvedores no Brasil? Você acha que estamos bem posicionados em relação a outros países? CG: Eu acho que a qualidade dos desenvolvedores brasileiros em geral é boa. Temos muito reconhecimento no exterior. Diversas empresas estrangeiras buscam desenvolvedores diretamente aqui e os levam para os seus países. Isto é um bom sinal. Entretanto ainda existe campo para melhora. Principalmente os que estão começando. Estes devem ser ávidos em obter mais conhecimento. 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

utilizar ou não determinado recurso. Neste ponto entram as comunidades, grupos de usuários, revistas técnicas e sites como o MSDN e os blogs. AT: Você mantém um blog dos mais atualizados da comunidade Microsoft, você acredita que a comunidade brasileira ainda não está 100% adaptada a este tipo de material? CG: O que eu tenho sentido é que muitos desenvolvedores têm lido e acompanhado blogs brasileiros. O que eu e alguns blogueiros com quem tenho conversado temos sentido falta é da participação nos blogs. O blog é um excelente lugar para ocorrer uma discussão sadia sobre determinado tema. Mesmo que este seja apenas uma notícia ou um pedaço de código. Os blogs no exterior recebem dezenas de comentários por post, mas infelizmente ainda não temos isto no Brasil. Não nos blogs técnicos de tecnologias Microsoft. Pelo menos, não nos que eu acompanho. Mas, acredito que com o tempo isto mudará. Temos tido muitas discussões interessantes sobre este tema nas últimas semanas em diversos destes blogs. AT: Você mantém um blog dos mais atualizados da comunidade Microsoft, você acredita que a comunidade brasileira ainda não está 100% adaptada a este tipo de material? CG: O que eu tenho sentido é que muitos desenvolvedores têm lido e acompanhado blogs brasileiros. O que eu e alguns blogueiros com quem tenho conversado temos sentido falta é da participação nos blogs. O blog é um excelente lugar para ocorrer uma discussão sadia sobre determinado tema. Mesmo que este seja apenas uma notícia ou um pedaço de código. Os blogs no exterior recebem dezenas de comentários por post, mas infelizmente ainda não temos isto no Brasil. Não nos blogs técnicos de tecnologias Microsoft. Pelo menos, não nos que eu acompanho. Mas, acredito que com o tempo isto mudará. Temos tido muitas discussões interessantes sobre este tema nas últimas semanas em diversos destes blogs.

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 desenvolvimento de software utilizando .NET.

PÁGINA

8

Artigo: Novidades do SQL Server 2008

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, segura, 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 interessantes 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, escalabilidade 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 Microsoft 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 é incrivelmente 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 instanciando 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). Desenvolvedores que utilizam o ADO .NET Framework podem programar o banco usando objetos da CLR que sejam gerenciados pelo ADO .NET. O SQL Server 2008 introduz maior eficiência, otimização do suporte que melhora a desempenho 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 utilizando 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 armazenamento 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. Deve 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ósGraduado 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 Framework.Net Microsoft Latam, entusiasta de aplicações ebusiness, 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

12

Biztalk.ing

PÁGINA

Coluna: BizTalk.ing - Learning to Fly Já sabemos muito bem que em nossa área de atuação (o universo de TI) a realidade é bastante diferente do que desejamos. Todos nós gostaríamos que as aplicações fossem desenvolvidas usando as tecnologias de nossa preferência, aquelas com a qual estamos habituados a trabalhar. Acontece que as tecnologias são criadas em tempos diferentes, e evoluem durante estes intervalos de tempos. É claro que essa evolução é benéfica por vários fatores. Podemos citar a facilidade na implementação e o amadurecimento dos padrões como exemplos desses benefícios. O problema que enfrentamos é que essas tecnologias seguem paradigmas, diretrizes e estratégias empresariais que também mudaram (ou continuam continuamente mudando) durante os anos. O hardware também evolui. Todos conhecem a Lei de Moore, segundo a qual “O poder computacional em um dado preço dobra a cada dezoito meses”. Toda vez que isso acontece os softwares evoluem junto. Segundo a Lei de Grosch “Não importa o nível de capacidade criado pelo pessoal de hardware porque o pessoal de software irá esbanjar a vontade até consumir todos os recursos adicionais criados pelo primeiro”. Essa evolução da tecnologia (tanto de hardware quanto de software) aumenta a dificuldade da integração, tornando-a bastante complicada. As diferenças entre todas essas tecnologias as tornam difíceis de integrar entre si. Todos os desafios de uma integração podem ser contornados através de linguagens de programação, afinal, o mercado (e principalmente o desenvolvedor) já “trabalha” com integrações muito antes que qualquer ferramenta de integração tenha sido criada. Esta experiência com integrações produziu algumas diretrizes (padrões) indicadas para as características de determinados cenários. Tudo em TI vira “sopa de letrinhas” e esses padrões não poderiam ser diferentes. Os acrônimos mais importantes são: EAI (Enterprise Application Integration) e B2B (Business to Business Integration). - EAI são as “integrações internas”. Por exemplo, a integração da aplicação de controle de estoque com a aplicação de contas a receber.

“deixar de lado” as tecnologias conhecidas e aprender uma nova. Para os interessados em dar os primeiros passos no aprendizado do BizTalk 2006 temos algumas alternativas de material de estudo. Alguns em português, outros em inglês. Naturalmente o ponto inicial é a pagina do produto no site da Microsoft. Vale à pena gastar um bom tempo e ver todo o material disponível. Pode-se optar pelo site da Microsoft Brasil, ou pelo site da Microsoft USA: Brasil - http://www.microsoft.com/brasil/servidores/ biztalk/default.mspx USA - http://www.microsoft.com/biztalk/default.mspx Em ambos o conteúdo é bastante parecido. A diferença fundamental é que nem todos os artigos foram traduzidos para o português. Dessa forma o site em inglês é mais completo. De todo o material disponível nos sites, fiz uma seleção do que considero ser fundamental para o inicio dos estudos: alguns Whitepapers, “clínicas” e Virtual Labs (Laboratórios Virtuais). Entendendo o BizTalk (Whitepaper) – Português

Server

2006

http://www.microsoft.com/brasil/servidores/biztalk/ techinfo/whitepapers/understanding.mspx Este whitepaper fala sobre o servidor de integração da Microsoft, o BizTalk Server 2006. Leia este documento para obter uma visão geral sobre os recursos do BizTalk Server 2006, sobre como utilizar o BizTalk para melhorar a integração de aplicações e, por fim, como o BizTalk pode otimizar os processos internos e B2B. First Look: Microsoft BizTalk Server 2006 for Developers (Clinic 2954) - Inglês

- B2B refere-se as “integrações externas”. Integrar a aplicação de controle de estoque com o sistema de compras do parceiro de negócios é um bom exemplo.

https://www.microsoftelearning.com/eLearning/ courseDetail.aspx?courseId=51883

Mas já sabemos que o problema é que o gerenciamento de todos estes desafios se torna demasiadamente dispendioso, demorado e propenso a erros. O BizTalk Server entra como uma solução de gerenciamento de integrações, aplicativos e processos de negócio, que objetiva facilitar a minimização destes problemas.

Esta “clínica” online fornece aos desenvolvedores uma introdução ao ambiente de desenvolvimento do BizTalk Server 2006. Inclui Messaging e Orchestration.

Talvez você pense como eu e esteja interessado em utilizar uma ferramenta de integração em vez de ter que fazer “tudo no braço”. Nesse caso será obrigatório

First Look: Microsoft BizTalk Server 2006 for IT Professionals (Clinic 2955) - Inglês https://www.microsoftelearning.com/eLearning/ courseDetail.aspx? courseId=51814

13

Biztalk.ing

PÁGINA

Coluna: BizTalk.ing - Learning to Fly Esta “clínica” online fornece aos profissionais de TI uma apresentação do BizTalk Server 2006, como instalar e administrar aplicações num ambiente de BizTalk.

O material para Self Learning é gratuito. Os cursos oficiais (OMLP - Official Microsoft Learning Product, antes chamado de MOC) são pagos e ministrados nos Centros de Treinamento parceiros da Microsoft.

O material indicado acima serve muito bem para o pessoal autodidata que está acostumado a estudar sozinho. Para quem tem dificuldade com Self Learning, a opção são os treinamentos oficiais do produto.

È importante salientar que esses treinamentos tratam apenas do básico sobre o produto. Como todas as novas tecnologias (ou como tudo na vida) é necessário, posteriormente, de estudo aprofundado no produto (e também sobre o assunto). Além de estudo adicional de “produtos” correlacionados. Falaremos sobre isso em outra oportunidade.

Para o BizTalk Server 2006 temos disponíveis dois cursos oficiais: - 2933 – Developing Business Process and Integration Solutions Using Microsoft BizTalk Server 2006 – 5 dias. - 2934 – Deploying and Managing Business Process and Integration Solutions Using MS BizTalk Server 2006 – 2 dias.

Até a próxima !!!

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. É 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

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 aventura 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 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

Coluna: Coluna de Qualidade

16

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.

Qualidade

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 { 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.

Qualidade

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) { 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

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); } 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

Coluna: Coluna de Qualidade

19

result = 0.10; //desconto de 10% } else { if (numeroCompras > 5) { result = 0.05; //desconto de 5% } }

Qualidade

} return result; } } 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 DescontoFrete.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 ([email protected]) é 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/

20

Point2Share

PÁGINA

Coluna: Point2Share Dando sequência a nossa abordagem inicial, veremos neste 2º artigo um pouco mais sobre as funcionalidades e capacidades proporcionadas pelas tecnologias Sharepoint. Para isso, detalharemos alguns aspectos técnicos com relação aos produtos envolvidos e, consequentemente, seus benefícios do ponto de vista de plataforma para soluções de produtividade, 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 Server 2005 (com suporte ao SQL Server 2000) como 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 Information Services para o suporte ao modelo de execução do ASP.NET 2.0 (.Net Framework 2.0) e também do WF – Workflow Foundation (.Net Framework 3.0).

Figura 1. Arquitetura de infra-estrutura das tecnologias Sharepoint.

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 arquitetura-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 customização das tecnologias Sharepoint. Nesta jornada de aprendizado ao modelo de desenvolvimento e customização das tecnologias Sharepoint, aproveitaremos em grande parte os conhecimentos adquiridos, utilizados e válidos para o modelo de desenvolvimento ASP.Net. Dentre os principais pontos, gostaria de ressaltar a suportabilidade às Master Pages – como principal ponto de arquitetura visual e organizacional 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 arFigura 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 Integrated Authentication, FBA – Forms-Based AuthentiServices 3.0 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 customizaçã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 corporativos.

PÁGINA

Coluna: Point2Share

21

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). 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 produtivo e, caso necessário, aberto à codificações e novas implementações com interfaces e características-base mais complexas. 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 Services 3.0. Pela abrangência, vejo que faz-se necessário termos um foco para os pontos mais importantes e impactantes; por isso, podemos citar a área “Pages and User Interface” como nosso ponto principal de estudo.

Figura 3. Mapa de Desenvolvimento do Windows Sharepoint Services 3.0.

As Web Parts proporcionam uma alta flebilidade com relação ao modelo de visualização e renderização de conteúdos diversos; assim 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 Framework 2.0.

Figura 4. Área de atuação estrutural da Master Page.

Figura 5. Detalhamento dos controles

presentes na Master Page.

PÁGINA

Coluna: Point2Share

22

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 basicamente toda a sua definição de topo estrutural do site e a navegação lateral. Na figura 5, visualizamos a composição da Master Page – através da disposição dos controles responsáveis por cada ponto 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 layout´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 ([email protected]) é Microsoft MVP (Most Valuable Professional) em Office Sharepoint 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

Coluna: Como o mundo da voltas...

23

Olá amigos,

COMPACT PLACE

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 entusiastas 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 operacional 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 maneira. Sim, o PocketPC não tinha nada disso que ele falou, mas ele tinha uma coisa que o PalmOS nunca teve. O PocketPC 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 especializada" 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 problema 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...

COMPACT PLACE

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. Por coisas do destino, nos separamos e ficamos alguns anos sem nos comunicar. Durante esse período vimos o mercado 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 Windows Mobile, principalmente devido a redução de tamanho dos até então "tijolões" e a total inércia da então PalmSource 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 dispositivos tinham wi-fi, bluetooth, MP3, multitarefa, desde 2000! Os usuários de PalmOS ficavam atordoados se perguntando 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 acreditavam 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 software e deixe que o hardware evolua até que o sustente de forma adequada. Você tem de passar pelos tijolões até chegar 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, 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 projetos em todo Brasil e em diversos países.”

PÁGINA

25

Coluna: No Stress… Think .Net

Mundo Acadêmico

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. 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 membros 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 acadê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 desenvolvimento 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 COMUNIDADE, ao replicarmos conhecimento adquirido. Convido a quem estiver interessado em aprender, replicar e disseminar conhecimento, a criar uma Célula Acadêmica, 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 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.

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 apresentaçã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 codinome ? O “E” significa Everywhere (qualquer lugar), e é exatamente do que vamos falar hoje.

Visão Web

O WPF/E foi lançado para que nós, desenvolvedores de software, possamos criar aplicações utilizando WPF e publicar essas aplicações na internet para que possam ser acessadas a partir de um browser seja ele qual for. Esse codinome 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 Silverlight 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 podendo 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 é necessá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 proporciona 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 manter aplicações SilverLight. Divirtam-se e aguardem novidades para a próxima edição !!!

Andrey Sanches - [email protected] é MVP (Most Valuable 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 Treinando.Net (http://www.treinando.net) e em diversas empresas, també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 sendo 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 pertence 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 import import import import import import

System.*; Microsoft.Xna.Framework.*; Microsoft.Xna.Framework.Audio.*; Microsoft.Xna.Framework.Content.*; Microsoft.Xna.Framework.Graphics.*; Microsoft.Xna.Framework.Input.*; 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 colocar 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() - objJogador.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() + objJogador.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(), imgJogador.get_Width(), imgJogador.get_Height()), Color.get_White()); sprite.Draw(imgBola, new Rectangle(objBola.getPosicaoX(), objBola.getPosicaoY(), imgBola.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 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.

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 downloads, 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 comunidade 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 “Os Blogs hoje são ferramentas essenciais para quem acompanha tecnologia”

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

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

PÁGINA

Expert: “Exigências” de um programador

38

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 Enterprise Manager? Query Analyser? Não! Nada disso. Uso o Server Explorer do VS.NET

quem acompanha tecnologia”



2GB de RAM;



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 [email protected] e publicaremos!

PÁGINA

Dicas

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 temos uma

Muitos projetos Open Source podem ajudar em muito o dia-a-dia de quem trabalha com o Visual Studio 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 desenvolvimento 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 Codificando.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 sempre 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ística 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 expectadores. 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 comunidade. 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 – [email protected] / Israel Lucania – [email protected] Co-Líderes - Renato Sacco – [email protected] / Abdul Hade - [email protected] / Rafael Magalhães – [email protected]

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

PÁGINA

41

Cobertura: REMIX 2007 Um evento diferente! Esta é a definição do REMIX 2007. Com o objetivo de atingir (MIXAR) os públicos: Desenvolvedores e Designers 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.

“Coffee break

Além de funcionários da Microsoft, o evento trazia convidados, inclusive MVP´s para apresentar ao publico um conteúdo muito interessante.

com DJ.”

Fotos do evento

PÁGINA

.Close()

42

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 arquitetura. À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 dependendo 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 manipule 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 conhecimento 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 oferece uma usabilidade 100% efetiva, porque nunca podemos esquecer: estamos dentro de um navegador.

PÁGINA

.Close()

43

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 recursos 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 desenvolvedor. 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 muito 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.