Edição especial de lançamento

 360 SPARTA

#0
ANO I

N U MER O 0

 COLUNA DE QUALIDADE

 BIZT ALK . ING

e-magazine
Colunas
● BizTalk.ing ● 360 Sparta ● Qualidade ● Acadêmico ● Point2Share ● .Close()

Codificando Net

> Entrevista com Leonardo Tolomelli (MVP Lead) > Artigo Know Types no WCF Israel Aéce

Comunidade
● Codificando .Net ● Destaque do mês ● Eventos

WWW.CODIFICANDOMAGAZINE.NET

POWERED BY CODIFICANDO.NET

NESTA EDIÇÃO
Entrevista

e-magazine
E D I Ç Ã O 0 A N O I

Codificando Net

J U N H O

2 0 0 7

3

Coluna: XNA Sparta Coluna: BizTalk.ing Coluna de Qualidade Coluna Pont2Share Coluna: Mundo Acadêmico Artigo: Know Types no WCF Download do Mês Blog do Mês

5 6
8

Editorial
É com muito prazer que a comunidade Codificando .Net anuncia a Codificando .Net e-Magazine, uma revista eletrônica mensal com um objetivo claro: ajudar a compartilhar conhecimento para a comunidade! Aliás, este sempre foi o grande objetivo desta comunidade. Por enquanto uma revista eletrônica, mas quem sabe, dependendo dos resultados da adoção/recepção/colaboração da comunidade não conseguiremos evoluir para uma revista impressa? Seria sonhar demais? O formato da revista será bem alegre e informal, oferecendo uma leitura agradável e rápida. Acredito que nas próximas edições teremos uma grande evolução da qualidade visual e no conteúdo. O conteúdo da revista será baseado em colunas, entrevistas, opiniões, reportagens e previews, já que temos muitos outros meios focados em artigos técnicos. A publicação é totalmente aberta a comunidade, quem quiser participar, envie um email para editor@codificandomagazine.net. Nesta edição de lançamento contamos a presença de ilustres colunistas: Emerson Facunte, Feio Tomaz, Eduardo Gomes, Maurício Wieler, Hélio Sá e Israel Aéce. Foram convidados pessoas de destaque na comunidade e no mercado para falar sobre assuntos bem variados. Gostaria de agradecer o apoio dos colunistas em apostar o tempo em um projeto saindo do papel. Fica aberto o convite para todos os membros da comunidade com a vontade de compartilhar também. Agradecemos também Leonardo Tolomelli que fala sobre o programa MVP, comunidade e até Formula 1. Acompanhe as sessões de destaques e coberturas de evento e fique ligado o que acontece na comunidade nacional. Estamos totalmente abertos para opiniões, críticas, contribuições, etc. Uma boa leitura a todos Alexandre Tarifa Editor@codificandomagazine.net Editor: Alexandre Tarifa Co-Editores: Andrey Sanches Emerson Facunte Colaboradores: Hélio Sá Moreira Feio Tomaz Eduardo Gomes Maurício Wieler Israel Aéce

10

13 15
18

19

Dicas

20

Codifando .Net

21

Evento: Codificando 2007

23

Equipe

Final da Imagine 24 Cup Brasil 2007 Coluna: .Close() 25

PÁGINA

3

Entrevista - MVP Lead Leonardo Tolomelli
Leonardo Tolomelli é MVP Lead na Microsoft, responsável pelo programa no Brasil e ConeSul, ele nos ofereceu gentilmente uma entrevista falando sobre o programa MVP no Brasil, comunidade e sua paixão por Fórmula 1. Acompanhe a primeira entrevista da Codificando eMagazine.
Olá Leonardo Tolomelli, obrigado por participar da primeira edição da Codificando .Net e-Maganine. O que é exatamente o programa MVP (Most Valuable Professional) da Microsoft? Leo: O programa MVP, ou Most Valuable Professional (Profissional Mais Valorado numa tradução direta) é a forma que a Microsoft encontrou para agradecer os profissionais que de maneira voluntária compartilham seu profundo conhecimento técnico de produtos e tecnologias Microsoft com outros membros da comunidade. O programa é um reconhecimento por esta iniciativa de colaborar ajudando outros a melhor utilizar estes produtos e tecnologias. É um programa técnico, e o título está sempre associado a uma competência técnica específica (por exemplo, MVP de Windows Server – Networking ou Visual Developer – Visual Basic) sobre o uso diário dos produtos e para validação de futuras versões do produto. Neste caso do MVPs funcionam como conselheiros dos times de produto e representam a voz da comunidade. Muitas pessoas confundem o programa MVP com alguma certificação ou prova da Microsoft, existe alguma relação entre os programas? Leo: São dois programas distintos e não há relação entre eles. Para ser um profissional certificado Microsoft é necessário estudar profundamente um produto, realizar o exame específico e obter a nota mínima. Para o programa MVP, existe um número bastante limitado de “vagas” (hoje, por exemplo, são 72 os MVPs no Brasil) e para fazer parte é necessário ser selecionado a partir de sua ativa participação na comunidade através de contribuições voluntárias. Como você visualiza a importância da comunidade para evolução dos produtos da Microsoft? Leo: Cada dia mais as equipes de desenvolvimento estão se dando conta da importância de ter contato com a comunidade que utiliza o produto no dia a dia para entender o que realmente o mercado precisa. Dentro da Microsoft hoje, praticamente todos os times possuem pessoas que tem por objetivo observar a comunidade e levar a palavra dos usuários aos desenvolvedores. São estas pessoas por exemplo que tem fazem a ponte entres os MVPs e o time de produto. Acredito que o Visual Studio .NET foi um marco neste ponto. Foi o primeiro produto da Microsoft a contar com um grande programa de beta aberto à comunidade, que na época contou com mais de 3 milhões de participantes. O Windows Vista já contou com quase 5 milhões de participantes no programa beta, avaliando e dando feedback sobre o desenvolvimento do produto. Isso será cada vez mais comum. com mais de 3 milhões de participantes. O Windows Vista já contou com quase 5 milhões de participantes no programa beta, avaliando e dando feedback sobre o desenvolvimento do produto. Isso será cada vez mais comum. As comunidades no Brasil vêm crescendo muito nos últimos anos, qual a atual situação do país em relação aos países do Cone Sul e do mundo? Leo: O Brasil é um fenômeno a parte quando falamos de comunidade. O que eu percebo comparando com Estados Unidos e outros países da

“ O Brasil é um fenômeno a parte quando falamos de comunidade”

. Qual o critério de seleção da Microsoft para escolha destes profissionais? Leo: Estamos interessados em pessoas que tenham este espírito colaborativo e cujas contribuições são realmente voluntárias e realizadas naturalmente. São pessoas que se satisfazem através da ajuda que proporciona aos membros da comunidade que faz parte. Para a seleção do programa levamos em consideração as contribuições realizadas à comunidade nos últimos 12 meses. Entre estas contribuições esta a participação ativa em fóruns de discussão e newsgroups, publicação de livros e artigos técnicos, participação ativa em grupos de usuários, palestra em eventos da indústria e muitas outras. Qualquer forma de compartilhamento de conhecimento realizado de maneira voluntária (que seja parte do seu trabalho remunerado), vale para o programa. Fale um pouco sobre o seu papel na Microsoft em relação ao programa MVP. Leo: Os MVPs são vistos pela Microsoft como especialistas na competência técnica do seu título, e desta forma os times de produto de Redmond investem numa aproximação com os MVPs para colher feedback e sugestões

PÁGINA

4

Entrevista - MVP Lead Leonardo Tolomelli
por exemplo, é que existe uma preferência por algum tipo de comunidade. Nos EUA, por exemplo, a comunidade online através da participação em fóruns e newsgroups é muito grande. Na América Latina, o povo já prefere o contato pessoal e reuniões de grupos de usuários ou eventos realizados pela Microsoft são os preferidos. No Brasil os dois tipos de atividades têm uma forte participação. Os fóruns são populares, como também os eventos presenciais, além das novidades como Blogs por exemplo. O brasileiro é bastante ativo e está sempre procurando uma forma de interagir. Você acredita que a participação em comunidade ajuda no crescimento/ reconhecimento profissional? como podemos nos aproximar cada vez da comunidade como um todo. Leo Tolomelli, ficamos sabendo que você é fã de formula 1, na realidade gosta muito de automobilismo em geral. Você acredita nos novos talentos nacionais? Conte-nos um pouco da sua vivência sobre a paixão automobilística. Leo: Bom, o que me atrai no automobilismo, e em especial da Fórmula 1, é a união entre duas das minhas paixões, automóveis e tecnologia. É muito interessante observar não somente as corridas em si (que são muito emocionantes por si só e já valem o espetáculo), mas também toda a tecnologia envolvida neste circo. As decisões que são tomadas, as tecnologias adotadas em busca daquele milésimo de segundo a mais. É fascinante. Com relação aos talentos nacionais, eu acredito que estamos vendo uma grande safra de pilotos brasileiros com futuro promissor nas categorias internacionais. Para quem me conhece bem sabe que sou fã do Felipe Massa desde 2001 quando foi campeão da Fórmula 3000 e acredito que hoje está muito maduro e colhendo os frutos do investimento destes últimos anos. Se tudo der certo, será campeão do mundo. Mas o futuro será ainda melhor! Imaginem que em 1 ou 2 anos podemos ter novamente uma briga de Piquet e Senna na F1, agora protagonizada por Nelsinho Piquet (filho do tricampeão) e Bruno Senna (sobrinho do outro tricampeão). Outro nome que não podemos esquecer e que tem muito talento é o Lucas DiGrassi. Escrevam este nome. Mas o melhor de tudo é que no Brasil também as coisas melhoraram muito. Basta dar uma olhada na Stock Car, onde hoje correm 6 ou 7 ex-pilotos de F1, é muito expressivo. Para finalizar, qual mensagem você deixa a comunidade brasileira? Leo: O Brasil está bem maduro com relação às comunidades e uma comunidade forte gera oportunidade de aprendizado para todos. Continuem com o grande trabalho.

“O Brasil está bem maduro com relação às comunidades e uma comunidade forte gera oportunidade de aprendizado para todos. Continuem com o grande trabalho”

Leo: Sim, sem dúvidas. Existem diversos motivos para participação em comunidades que variam desde querer aprender, compartilhar sua experiência ou simplesmente socializar. As comunidades oferecerem excelentes oportunidades para encontrar outros profissionais (ou empresas) com experiências e objetivos equivalentes aos seus, o que normalmente gerar oportunidade de engajamento e até mesmo de negócios. Se você não estiver lá, vai perder a oportunidade. Voltando a falar sobre o programa MVP, qual o principal benefício que a MS oferece aos MVP´s e o que os MVP´s oferecem a MS de benefício? Leo: Em minha opinião o maior benefício para os MVPs (vocês deveriam perguntar para eles para confirmar) é o contato com o time de produto, que oferecer uma oportunidade única de trocar experiências, conhecer melhores práticas e influenciar nas futuras versões. Para a Microsoft, é a oportunidade de estar próximo a um grupo extremamente influente em suas comunidades para ouvir seus desejos e feedback para incorporar em versões futuros do produto, além de entender

Leonardo Tolomelli é MVP Lead no Brasil e Cone Sul. Mantém o seu blog em: http:// mvplead.spaces.live.com.

PÁGINA

5

XNA - Uma batalha para seu XBOX 360 a cada dia!
Salve nobres Spartanos! Chegou a hora de você desenvolver seu próprio game, seja para a plataforma Windows ou para o fantástico XBOX 360. Neste ano a Microsoft lançou a versão 1.0 Refresh do XNA Game Studio Express. A ferramenta é baseada no Visual C# Express Edition, com uma grande biblioteca de classes voltadas para o desenvolvimento de jogos: XNA Framework. O legal disso tudo é que a maior parte do código que você escreve para Windows Platform, serve para XBOX 360. Com algumas simples adaptações você consegue rodar o mesmo game nas duas plataformas. Ok nobres, e como iniciar no desenvolvimento de games para XBOX 360? Vamos lá Spartanos, ao ataque: Baixar e instalar o Microsoft Visual C# Express Edition http://msdn.microsoft.com/vstudio/express/visualcsharp Baixar e instalar o XNA Game Studio Express http://msdn2.microsoft.com/en-us/xna/default.aspx baixar e instalar os Starter Kits http://creators.xna.com/Education/StarterKits.aspx No último passo observe que para a brincadeira ficar ainda mais divertida a Microsoft disponibilizou alguns Starter Kits para você evoluir no aprendizado, customizar seus games e de quebrar aproveitar e aplicar técnicas fantásticas encontradas nos códigos . Hummm, se ainda acha tudo isso difícil, que tal dar uma olhadinha no código fonte do meu pequeno game Brazilian Bee: http://www.facunte.com.br/ bbee.aspx Por enquanto, nobres Spartanos, essa é apenas a primeira batalha. Divirtam-se. Facunte - http://www.facunte.com.br

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ósgraduação em Engenharia de WebSites da UNICSUL-SP

PÁGINA

6

Coluna: BizTalk.ing
Ao ser convidado para integrar o time de colunistas dessa nova revista da comunidade Codificando .NET fiquei bastante surpreso e ao mesmo tempo muito honrado. Afinal, integrar um time de colunistas tão brilhante como esse é, com certeza, uma grande honra. Gostaria de dizer a você leitor, que será um imenso prazer poder conversar com você nesse nosso encontro mensal. Trabalho com BizTalk desde 2004, quando o produto foi completamente modificado. A pergunta que mais ouvi em todo esse tempo foi: “O que é esse treco?”. E como argumentos contrários a sua implantação sempre ouvi que: o BizTalk custa muito e não faz quase nada. Partindo da minha experiência, entendo que o objetivo dessa coluna de estréia deveria ser conversarmos um pouco a respeito desse “treco”, que custa tão caro (será?) e que, na verdade, quase ninguém sabe ao certo o que faz. Com essa idéia em mente esse espaço foi batizado como BizTalk.ing. O jogo de palavras (ou trocadilho) é obvio. Traduzido “grosseiramente” seria algo como BizTalkando, que vem a ser o ato de BizTalkar. Não sei ainda quem é você, leitor. Se é um biztalkero ou uma pessoa não familiarizada com o BizTalk. Se você for um biztalkero de carteirinha, a coluna desse mês não deve trazer nenhuma novidade. Para você que não sabe o que vem a ser o BizTalk, minha pergunta é: o que pode ser interessante nesse produto que quase todo mundo já ouviu falar, mas poucos conhecem? Por que o produto tem um nome tão estranho? Para respondermos essas perguntas, seremos obrigados há retroceder alguns anos na historia. Há não muito tempo atrás, numa galáxia nada distante o homem inventou o computador e com ele os softwares. A princípio esses softwares eram “bastante simples” e se propunham a resolver problemas objetivos. A capacidade de armazenamento dos dados desses softwares permitiu que “eles” evoluíssem gradualmente para aplicações mais complexas. Estamos falando de aplicações já muito conhecidas, tais como: Contas a Pagar e Receber, Folha de Pagamento, entre tantas outras. Esses softwares são chamados de especialistas. Essas aplicações, individualmente, resolveram problemas isolados, mas tinham um grave problema: não compartilhavam as informações entre elas. Para que os dados de um sistema fossem utilizados por outro uma alternativa era imprimir um relatório com determinadas informações no software A e digitá-las no B. É um método que efetivamente funciona, porém é muito trabalhoso e propenso a erros. Sem entrar em detalhes sobre as iniciativas que tentaram resolver esse problema, até porque nem todas foram bem sucedidas, podemos afirmar que o grande salto foi o nascimento dos sistemas “integrados”. O ponto alto dessa idéia foi o ERP (Enterprise Resource Planning). ERP é o termo usado pela indústria para um conjunto de atividades suportado por uma aplicação de múltiplos módulos. Normalmente um sistema ERP usa uma base de dados comum a todos os módulos, preferencialmente uma base de dados relacional. Essa idéia funcionou bem por algum tempo, mas uma constatação foi feita: era virtualmente impossível desenvolver uma aplicação que resolvesse todos os problemas de forma definitiva, para todas as empresas, de todos os diferentes setores produtivos e comerciais. Constatou-se que, para a empresa A o módulo Fiscal não atendia plenamente, para a empresa B o módulo de Folha de Pagamento era ineficiente e para a empresa C o Contas a Receber era inadequado. A melhor solução para esses casos era comprar o ERP que tivesse a maior quantidade de módulos “aproveitáveis” da empresa X e adquirir o módulo (ou aplicação) desejado da empresa Y. Ou ainda, se o modelo da empresa fosse muito específico, desenvolver a aplicação “em casa”, pela própria equipe de TI. Uma grande “colcha de retalhos”. Além disso, com o passar do tempo, outras necessidades surgiram. Empresas se viram “obrigadas” a: adquirirem aplicações de CRM, implementarem soluções de EDI, entre tantas outras necessidades, todas motivadas pela geração de resultados mais imediatos e alimentadas pela ininterrupta evolução tecnológica. A internet mudou, de forma radical, a maneira como os negócios eram feitos. Tanto os negócios entre as empresas (B2B – Business-tobusiness), quanto os realizados entre a empresa e o consumidor final (B2C – Business-to-Consumer). Mais “retalhos” precisaram ser costurados na “colcha”. Alguma coisa precisava ser feita para atender essa necessidade de integração e a primeira solução encontrada foi a carga de dados. O principio dessa solução é simples: o relatório (ou o pedido do cliente, no caso de um EDI), outrora impresso e digitado, era exportado para um arquivo, num formato especifico e depois importado por outra aplicação respeitando os formatos. O DTS (hoje chamado de Integration Services no SQL 2005) é um excelente exemplo desse método. Mesmo assim, sabemos que a necessidade dos usuários evolui junto com a tecnologia. Em alguns casos até mais rápido. Com o advento da internet e a promessa de “toda informação disponível na hora que precisamos dela” a solução de carga de dados se tornou inadequada, porque ela funciona de forma “offline”, usando serviços agendados, realizados em horários específicos.

Biztalk.ing

PÁGINA

7

Coluna: BizTalk.ing
Regras de negócio precisam ser codificadas. Controles de transação e registro de logs precisam ser desenvolvidos. Os desenvolvedores precisam se preocupar com muitas particularidades. Eles precisam integrar todas as aplicações envolvidas no processo. Por definição, uma integração é o estabelecimento de comunicação entre duas ou mais entidades autônomas e independentes. Note que, pelo exemplo citado, esta integração não precisa ser necessariamente entre aplicações. Elas também podem envolver a figura humana. É nesse momento que o leitor deve estar se perguntando: “O que tudo isso tem a ver com o nome do produto ser BizTalk?”. A explicação é mais simples do que parece. Biz (uma diminuição da palavra business) significa negócio em inglês. A tradução de Talk é conversar. A idéia da Microsoft (já no lançamento da primeira versão do produto em 2000) era aproveitar todos os padrões criados pelo mercado numa única ferramenta. O objetivo dessa ferramenta é resolver problemas de integração de aplicações de forma mais simples e fácil. Resumidamente falando, o BizTalk é colocado entre as aplicações A e B possibilitando a “conversa” entre essas aplicações. Isso pode ser feito apenas com a troca de mensagens entre as aplicações (messaging), ou implementando regras de negócio (orquestrações). Tudo isso de forma transacional, com registros de logs e capacidade de agregar inteligência ao ambiente, fazendo a análise dos dados que trafegam pelo BizTalk e disponibilizando uma base de BI para consultas gerenciais dos processos e geração de “relatórios analíticos”. Hoje o BizTalk está em sua quarta evolução. A Microsoft prevê o lançamento da quinta versão, BizTalk 2006 – R2, para os próximos meses. Acho que vocês perceberam que nosso assunto é bastante extenso e que idéia hoje era conversar mais com os amigos que ainda não tem familiaridade com o “mundo da integração”. Em nossos próximos encontros mensais pretendo tratar, com mais profundidade, de todos os assuntos que, por enquanto, foram apenas citados. Inclusive apontar quais são os outros produtos disponíveis no mercado que tem o mesmo foco do BizTalk e as devidas comparações entre eles. Acredito que, mais importante do que dominar um produto específico, é saber o que ele se propõe a fazer e o conceito por trás dessa ferramenta. Mas para que possamos evoluir e discutirmos sobre os assuntos que sejam do seu interesse preciso de sua ajuda. Preciso que vocês me escrevam, perguntem, acusem. Somente com a sua participação poderei adequar o assunto do mês com a necessidade de vocês. Recentemente fui convidado a participar de um blog compartilhado com outros biztalkeros. É o BizTalk Brasil. Dúvidas técnicas que forem encaminhadas e que sejam de interesse geral serão respondidas como artigos lá. O endereço é HTTP://biztalkbrasil.blogspot.com. Espero que o assunto tenha despertado o interesse de quem não sabia nada sobre o assunto e que os biztalkeros de plantão encham minha caixa postal com todas as duvidas que quiserem. Até a próxima !!!

Nossos clientes não queriam apenas isso. Eles queriam mais. Eles precisavam de interfaces cliente (de preferência WEB) que atendessem processos específicos, independente das aplicações, que atualizassem todas as bases de dados necessárias e disparassem todos os eventos que aquele processo específico necessitasse. Vamos a um exemplo disso: imagine que nosso cliente tem uma força de vendas composta de vários vendedores. Cada vendedor atende uma área delimitada e visita um numero X de cidades retirando os pedidos. Esse vendedor não possui um dispositivo móvel que envia automaticamente os pedidos e sincronizam on-line todos os dados necessários. Na sexta-feira, ao chegar a sua casa, cansado e com saudades da família, o pobre coitado ainda precisa lançar os pedidos das vendas que fez e, ainda, o seu relatório de despesas. Ele não está na empresa e sim na sua casa. Qual seria a melhor solução? Logicamente que, para ele, o melhor seria acessar uma página na internet onde ele pudesse lançar os pedidos e também o seu relatório de despesas. Sabemos bem que os pedidos deveriam ser lançados no ERP que se encarrega de, automaticamente, “informar” todos os módulos envolvidos. A linha de produção saberá que existem itens a serem produzidos. Ou então alguns itens precisarão ser baixados do estoque e o módulo de logística deve providenciar para que os procedimentos internos de despacho da mercadoria sejam disparados. Tudo isso, se possível, sem intervenção humana. Todas as despesas do vendedor precisam ser informadas ao seu supervisor (ou, dependendo do workflow do processo, a várias outras pessoas), que recebe um e-mail, aprova as despesas e o crédito conta do vendedor é feito automaticamente. Se tivermos apenas um aplicativo integrado, e contarmos com todos os módulos necessários e esse aplicativo possuir uma interface WEB “bacana” para atender esse processo, não teremos nenhum problema. Mas vimos que essa situação hipotética normalmente não é verdadeira. Lembra-se da “colcha de retalhos” citada anteriormente? É claro que o leitor atento dirá: “Temos as tecnologias necessárias para isso. É só dispararmos as interfaces corretas que rodam por trás dessa “pagina” WEB que tudo ficara bem!” Temos SOAP, webservices, EAI, BPA, BPM, SOA, EDI e tantos outros termos e padrões para aplicar. Certo? Essa afirmação é quase correta. Realmente temos todos os

padrões e tecnologias a nossa disposição.
Todos os problemas descritos até agora são bastante comuns. Creio que qualquer desenvolvedor, com algum tempo de experiência na área, já tenha vivido alguma experiência parecida. O mercado percebeu isso e procurou resolver esses problemas com iniciativas de padronização de interfaces de comunicação. Toda padronização é benéfica e facilita nossa vida. O único porem é que são apenas padrões e por si só não resolvem o problema. Esses padrões precisam ser implementados. Os programadores precisam “arregaçar as mangas” e escrever as linhas de código que, fazendo uso desses padrões, coloquem as aplicações para conversarem.

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 Desenvolvimento de Processos de Negócio e Soluções de Integração. Atualmente é consultor da ITGROUP. Trabalha há tanto tempo na área que nem consegue mais se lembrar.....

PÁGINA

8

Coluna: Coluna de Qualidade
É um prazer escrever esta coluna sobre um assunto não muito explorado como qualidade de software. Talvez eu possa dar a minha humilde contribuição, e estimular o debate sobre o assunto. Gostaria de fazer uma experiência, leia o texto abaixo: “Nenhuma cena da pré-história é tão vívida como a luta de grandes monstros sobre um poço de piche. Em nossa imaginação vemos dinossauros, mamutes e tigres dentes-de-sabre lutando contra o piche pegajoso. Quanto mais violenta a batalha, mais ficam envoltos em piche, e nenhum monstro é tão forte ou habilidoso que não acabe afundando. A programação de grandes sistemas na última década tem sido este poço de piche, e grandes e poderosos monstros foram vencidos violentamente. Alguns sistemas que funcionam surgiram – destes muitos poucos atenderam requisitos, planejamento e orçamento...”

Qualidade

Quando você imagina que o texto foi escrito? Pois bem, o texto é de 1975, faz parte do primeiro ensaio do clássico obrigatório da nossa área: The Mythical Man Month. E se este texto se mantém atual precisamos refletir sobre o que continua dando errado, afinal, nós temos ferramentas mais produtivas, maior acesso a informação, metodologias mais maduras, etc. Mas mesmo com a evolução de todos os aspectos do desenvolvimento de sistemas nos últimos trinta anos, ainda estamos desenvolvendo os mesmos monstros que lutam para se salvar do poço de piche. Talvez seja o momento para fazer um meaculpa. Nós desenvolvedores “Microsoft” sempre nos orgulhamos de sermos os mais produtivos, os únicos que cumprem as necessidades de uma inteligência de negócio sempre mutante, que algo que um desenvolvedor Java levaria um mês, um desenvolvedor VB poderia fazer em uma semana. As nossas ferramentas de trabalho (Visual Studio, SQL Server, Reporting Services, etc) sempre acompanharam essa mentalidade do simples e rápido, deixemos o Java com o IDE Eclipse e suas dezenas de plug-ins. E neste meio tempo enquanto nós, desenvolvedores “Microsoft” melhorávamos a nossa produtividade, eles evoluíram em diversas técnicas de qualidade de software como automação de testes, refactoring de código, design patterns, software factories, processo de integração contínua e muitas outras frentes. Não me entenda mal, os projetos Java criam os seus próprios “monstros no poço de piche”, o que eu acredito é que nós podemos tirar vantagem de toda a experiência de projetos de código aberto e incorporar algumas idéias no nosso processo de desenvolvimento. O primeiro conceito que eu gostaria de explorar é: aplicações devem ser projetadas para testes e manutenção. Apesar da maioria das aplicações se reduzirem a um punhado de arquivos binários e um banco de dados, elas precisam ser consideradas um bem, um ativo da empresa e, desse modo, nós desenvolvedores precisamos criá-las com a premissa de que alterar ou trocar uma solução é algo que requer esforço e dinheiro. Essa mentalidade de construir uma solução para durar pode parecer simples, mas é um compromisso que se inicia na venda e que não tem fim. É o “vender bem”, “projetar bem”, “testar bem”, “distribuir bem”, “entregar bem”, etc. Uma das soluções para alcançar este objetivo é projetar a solução para ser testada. Um conjunto de testes automatizados não tem preço para uma solução: Desencoraja o desenvolvedor a criar métodos imensos ou classes que misturem responsabilidades já que este tipo de código é muito difícil de testar Garante uma manutenção segura uma vez que evita que pequenas alterações causem algum problema sem que seja notado, já que um teste automático que falhe é notado mais rapidamente que executar um teste manual Serve como uma documentação viva da solução já que um conjunto de testes contém mais detalhes sobre um requisito da aplicação do que qualquer documento possa possuir

PÁGINA

9

Coluna: Coluna de Qualidade
Outro ponto de vista sobre o conceito que eu citei é a manutenção do software, uma atividade considerada um pouco marginal pelos desenvolvedores. A verdade é que a manutenção é tão desprezada porque ninguém gosta de lidar com código excessivamente complexo e desorganizado. Se uma equipe de manutenção pudesse recusar uma aplicação nestas condições ela o faria, pois uma aplicação que é engessada e dificulta o acoplamento de novas funcionalidades é a frustração de qualquer projeto de manutenção.

Qualidade

Por outro lado, se você trabalha na primeira versão de um aplicativo, pense nas vantagens de criar um código amigável para manutenção. Quando isto acontece você não fica preso com a propriedade do código e pode partir para o próximo projeto mais rapidamente. Além disso, é péssimo para a sua reputação um código que fica órfão e não evolui com o tempo, já que indica que você não teve a habilidade ou o cuidado de prepará-lo para durar e não ser jogado fora depois de algum tempo. Como toda idéia que reside no senso comum seria muito ingênuo achar que estas sugestões poderiam ser aplicadas em qualquer cenário. É claro que devemos criar as nossas aplicações mais testáveis e simples de dar manutenção. No entanto se imaginarmos situações como utilizar uma tecnologia muito inovadora que possa dar uma vantagem competitiva para a solução, por exemplo, utilizar o Microsoft Silverlight para prover uma experiência rica para um site, talvez precisaremos fazer algo rápido e sujo, ou não poderemos explorar a tecnologia. Ainda assim, esse tipo de cenário deve sempre ser isolado de outras partes da solução para garantir a saúde do código em longo prazo. Enfim, espero que estes conceitos façam parte da sua realidade, se isto for verdade a chance de suas aplicações sofrerem de problemas de qualidade é muito pequena. Mas se estes conceitos forem apenas teoria para você espero que esta coluna tenha dado argumentos para ajudar você a convencer quem quer que seja das vantagens de se pensar em longo prazo ao desenvolver soluções. Talvez você não tenha o poder de decidir como as coisas são feitas em sua empresa, mas é o seu papel mostrar os benefícios de se passar de um processo de manufatura de código para algo realmente profissional. O meu objetivo nesta coluna é dar a minha pequena contribuição para ajudar-lhe nesta tarefa. Lembre-se, a solução na qual você está trabalhando é um bem da empresa que precisa durar.

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

10

Coluna: Point2Share
É com grande entusiasmo que começo a escrever essa coluna – Point2Share – aqui na Codificando.Net e-Magazine. Espero poder compartilhar com todos os leitores assuntos dos mais diversos e interessantes, mas como uma tendência pessoal e profissional a abordar a área Information Worker. Tecnicamente, podem esperar nesse nosso espaço muita coisa sobre desenvolvimento com base na plataforma de produtos e serviços do Office System – que atualmente é composto por basicamente 3 áreas de atuação. São estas: Programas: Contendo basicamente os produtos do Office System que estamos acostumados a utilizar em nosso dia-a-dia de trabalho, tais como os clients Word, Excel, PowerPoint,Outlook e outros mais... Servidores: Contém basicamente os produtos da linha Windows Server System com foco em produtividade, integração e organização de informações no âmbito corporativo. Neste cenário podemos incluir as Office Sharepoint Server 2007, Office Communications Server 2007, Project Server 2007 e outros mais... Serviços: Uma das grandes novidades, esta área contempla basicamente a presença do Office Online e do Office Live. O primeiro, acessível através do endereço http://office.microsoft.com, trata-se de um grande centro de informações sobre o Office System como um todo, incluindo desde documentações até exemplos e add-ins dos mais diversos. Já o segundo, acessível através do endereço http://officelive.microsoft.com, tem como princípio a disponibilização de pacotes de serviços online – que podem incluir desde um domínio próprio e espaço ao seu web site até contas de e-mail acessíveis via dispositivos móveis – passando por espaços de colaboração online (troca de arquivos por exemplo) e ferramentas de auxílio ao gerenciamento de projetos. Aqui já vai uma dica, atualmente o Office Live possui 3 pacotes de serviços evolutivos – o Office Live Basics, Office Live Essentials e Office Live Premium – sendo o primeiro deles inteiramente gratuito () e os outros com períodos de avaliação de 30 dias. Veja abaixo a Figura 1, representando toda abrangência do Office System.

Point2Share

Ou seja, temos muito assunto para tratar sobre o desenvolvimento com base ou integração com todos estes produtos – com certeza passaremos por VSTO – Visual Studio Tools for Office, Desenvolvimento Office System, OpenXML, Formulários Eletrônicos com base no Office InfoPath, customização das tecnologias Sharepoint, OBA - Office Business Applications e muito, mas muito mais mesmo. Abordaremos também tópicos não-técnicos, ou seja, podemos conversar de forma bastante extensa sobre necessidades corporativas, focos de integração, produtividade e outros pontos que nos assombram durante o dia-a-dia de trabalho. Pensem nestes pontos como os possíveis motivadores para o desenvolvimento de alguma aplicação ou customização – ou seja – nossas necessidades diárias que fomentam o desenvolvimento de soluções. Como temos um mundo de assuntos para conversar, gostaria de aproveitar este nosso primeiro encontro já para apresentar novidades com relação a um dos produtos que mais gosto e trabalho, sendo um dos meus prediletos atualmente, o Sharepoint. Let's rock ....

PÁGINA

11

Coluna: Point2Share
Quando começamos a falar em Sharepoint, surjem automaticamente e invariavelmente diversas dúvidas e questionamentos sobre o mesmo – algo perfeitamente normal – mas são sempre os mesmos. São eles:

Point2Share

1. “O que é esse tal de Sharepoint?” 2. “Por que devo utilizar o (esse tal de) Sharepoint?” 3. “Quais as diferenças entre o WSS e o MOSS?” (Prometo esclarecer a sopa de letrinhas alguns parágrafos abaixo)
Se ao final desta coluna conseguirmos responder claramente estas 3 dúvidas; eu confesso a vocês que ficarei imensamente realizado – pois estas respostas e esclarecimentos são primordiais para que possamos visualizar os benefícios do Sharepoint e conseqüentemente vislumbrar os possíveis cenários de utilização e implantação. Seguindo o direcionamento de assuntos e abordagens que detalhamos alguns tópicos acima, veremos agora algumas das mais latentes necessidades corporativas – ou seja – vamos falar dos problemas atuais. Colocando-me como usuário de um ambiente corporativo – e de seus respectivos serviços - qualquer (o que não deixa de ser real ainda hoje para todos nós), enfrento particularmente os seguintes problemas durante a realização das minhas atividades diárias: Dificuldade em encontrar as informações corretas, uma vez que quanto maior o ambiente de trabalho maior o volume de informações geradas – resultando conseqüentemente em grandes ilhas desconectadas e ingerenciáveis de conteúdo. Pense sobre o seguinte cenário: File Shares corporativos onde necessito trabalhar com 3, 4, 5 ou mais compartilhamentos de “fácil acesso” – tal como brfscorp01, fpsserverlatam07 e outras variações bem interessantes; E-mail´s – Exchange Server e mais 3 ou 4 arquivos locais (PST´s) somando aproximadamente meus 5 Gb´s de e-mail; HD local – Onde diariamente me confundo com minhas próprias tentativas de organizar arquivos localmente, afinal, são tentadores os 80, 120 ou 160 Gb´s locais; Conclusão: A informação que procuro esta com certeza armazenada em algum destes muitos repositórios. Posso não perceber, mas gasto diariamente muito e muito tempo procurando esta informação. Ou seja, o tempo desprendido na procura, e não efetivamente em produtividade e geração de conhecimento/negócios, é muito grande. Dificuldade em ser produtivo, uma vez que cada repositório de informações contém seu próprio mecanismo de indexação e busca de informações. Produtividade muitas vezes não esta relacionada somente à rapidez com que você responde as necessidades corporativas, mas vale também considerar a confiabilidade de tal trabalho; ou seja, outro ponto importante é que com toda esta confusão fica realmente difícil acreditar e garantir a confiabilidade das informações utilizadas neste exato momento. Quer um exemplo clássico? Então responda com certeza o seguinte questionamento:

“Você tem certeza de que esta é a última versão deste documento (ou informação)?”
Conclusão: Achar a informação correta e confiável em um período pequeno – para ser produtivo – é essencial em nosso dia-a-dia.

PÁGINA

12

Coluna: Point2Share
Gostaria de compartilhar alguns outros estudos com vocês – de entidades internacionais – com relação a estes pontos. “Employees get 50%-75% of their relevant information directly from other people. “ “More than 80% of enterprise's digitized information reside in individual hard drives and in personal files.” “Individuals hold the key to the knowledge economy and most of it is lost when they leave the enterprise.” From “The Knowledge Worker Investment Paradox” Gartner research 7/17/2002 Neste momento, espero que vocês estejam se questionando: “É .... acho que precisamos nos organizar, e organizar consequentemente nossas informações!” Agora vamos lá, respostas rápidas e fáceis às nossas principais perguntas: 1. “O que é esse tal de Sharepoint?” – Uma plataforma tecnológica com foco e direcionamento à gestão de informações corporativas; facilitando consequentemente a organização, centralização, gerenciamento e segurança, proporcionando maior produtividade à medida que as informações tornan-se consistentes, seguras, confiáveis e principalmente visíveis. De forma evolutiva, o Sharepoint pode também ser utilizado como uma plataforma de gerenciamento de processos corporativos – afinal, processos compõe e são compostos por Informações! “Por que devo utilizar o (esse tal de) Sharepoint?” – Porque sua infra-estrutura de serviços proporciona de forma rápida, eficiente e segura um alto nível de controle das informações - sendo base de processos colaborativos onde a transferência e organização de conhecimentos torna-se primordial para a evolução contínua e igualitária de todos os seus consumidores. O alto nível de integração com as ferramentas do Office System proporcionam níveis cada vez mais altos de produtividade, assim como sua interface de usuário baseada no ambiente Web traz uma ótima usabilidade. Ou seja, o Sharepoint pode ser interessante porque ele nos ajuda tecnologicamente a organizar nosso imenso espaço de dados, informações e conhecimentos corporativos dispersos. “Quais as diferenças entre o WSS e o MOSS?” – Eu costumo dizer que o Sharepoint esta disponível em 2 sabores diferentes – ou seja – em 2 versões distintas. A sigla WSS significa Windows Sharepoint Services – não pode ser caracterizado efetivamente como um produto, mas sim como uma tecnologia. Fica mais fácil com isso entender que o WSS é uma parte integrante do sistema operacional Windows Server 2003 e, como parte integrante, não requer licenciamento adicional. Isso mesmo (alguns custam a acreditar nesta informação), se você já usa o Windows Server 2003, Parabéns, você já possui direito de utilizar o WSS em seu ambiente corporativo sem nenhum ônus de licenciamento – basta obtê-lo a partir do site de downloads da Microsoft. Já a sigla MOSS faz referência ao Microsoft Office Sharepoint Server 2007, um produto Microsoft da linha Windows Server System. Este produto faz o uso do WSS como a sua Plataforma Base de serviços (entenderam por que o WSS ser caracterizado como uma tecnologia?) – extendendo os recursos básicos e implementando uma série de funcionalidades e características como foco em necessidades corporativas. Como qualquer produto, o MOSS requer licenciamento para ser utilizado. Ou seja, o WSS implementa os recursos básicos da plataforma de colaboração e gerenciamento de informações, sendo o MOSS um produto muito mais extenso do ponto de vista de funcionalidades e recursos tanto para usuário, como para desenvolvedores e administradores. Mas não se engane, o WSS mesmo sendo uma tecnologia, pode se tornar uma grande e real plataforma corporativa.

Point2Share

2.

3.

Por questão de espaço, para visualizar com mais detalhes quais recursos são disponibilizados no WSS ou extendidos e implementados pelo MOSS – recomendo o seguinte link: Which SharePoint technology is right for you? http:// office.microsoft.com/en-us/sharepointtechnology/FX101758691033.aspx?ofcresset=1 Fiquem tranquilos, nos próximos meses falaremos mais das funcionalidades em si – sempre abordando diferenças de comportamento ou funcionalidade entre, por exemplo, o WSS e o MOSS. Espero vê-los por aqui em nossas próximas edições, onde tentarei evoluir um pouco mais sobre esta primeira abordagem de Sharepoint, cenários de implantação e muito mais.

Hélio Sá Moreira (helio@codificandomagazine.net) é 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

13

Coluna: No Stress… Think .Net
É com muito prazer que irei escrever neste espaço sobre assuntos e atividades acadêmicas relacionadas às tecnologias Microsoft, dando ênfase especial ao .NET. Queria em particular relatar a experiência deste ano, a respeito da Imagine Cup 2007, que tem como tema a Educação. Tive o prazer de ser juiz nas fases Semifinal e Final e perceber o quão engajados estão os alunos e quão interessantes e criativos foram os trabalhos apresentados nas rodadas citadas. Aproveito este espaço para incentivá-los a participarem na competição, que agora se encaminha à fase da Final Mundial, na Coréia do Sul. São diversas categorias, que cito abaixo: Soluções de Tecnologia: Projeto de Software, Sistemas Embarcados e Desenvolvimento Web. Desafios de Capacidade: Projeto Hoshimi(games), Desafio de Infra-Estrutura e Algoritmos. Arte Digital: Fotografia, Filme de Curta-Metragem e Projeto de Interface. Para deixá-los mais animados, as inscrições serão abertas a partir de Outubro de 2007, no site http:// www.imaginecup.com. O tema para 2008 é um tema atual e muito importante para o bem-estar mundial: MeioAmbiente. Participem, ousem, tentem, estudem, reúnam-se, mostrem a sua capacidade e vontade de vencer, utilizem as tecnologias de ponta da Microsoft, .NET, WPF, WCF, Windows Vista, Silverlight, enfim, tudo o que lhes vier à mente e que lhes proporcione a possibilidade de elaborar um projeto interessante e que lhes permita classificar, chegar às fases Semifinal e Final. Não é apenas o prêmio físico, de poder viajar à França (local da final mundial da Imagine Cup 2008), mas também representar a sua Universidade, trabalhar em grupo, fazer um belo networking e mostrar ao mundo a sua capacidade. Vocês têm a faca, o queijo nas mãos e a criatividade própria de nós, brasileiros, para brilharem e mostrarem do que são capazes. Saudações DotNetianas a todos! Mauricio Wieler Orellana mauricioow@gmail.com

Mundo Acadêmico

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

15

Artigo: Know Types no WCF

É muito comum em qualquer linguagem orientada a objetos, criarmos uma classe base e que, a partir dela, criar classes derivadas. Além disso, um dos grandes benefícios que temos com a orientação a objetos é a possibilidade de declararmos uma variável do tipo da classe base e atribuirmos a ela uma instância de uma classe concreta e, da mesma forma, podemos ter uma função em que em seus parâmetros os seus tipos são especificados com o tipo da classe base e, conseqüentemente, podemos também passar instâncias das classes derivadas. Infelizmente não funciona da mesma forma quando falamos de serviços que são expostos a partir do WCF. Neste cenário, por padrão, você não pode usar uma classe derivada ao invés de uma classe base. Sendo assim, se quisermos utilizar esta classe base publicamente (parâmetros e retorno de métodos), precisamos nos atentar em algumas técnicas para permitir isso. Para exemplificar o problema, vamos analisar o código contrato abaixo:

C# using System; using System.ServiceModel; namespace DevMinds.Library { [ServiceContract] public interface IGerenciadorDeContatos { [OperationContract] void AdicionarContato(Pessoa p); [OperationContract] Pessoa[] RecuperaContatos(); } }
E, além do contrato, temos a classe Pessoa que possui apenas uma propriedade do tipo string:

VB.Net Imports System.ServiceModel <ServiceContract()> _ Public Interface IGerenciadorDeContatos <OperationContract()> _ Sub AdicionarContato(p As Pessoa) <OperationContract()> _ Function RecuperaContatos() As Pessoa() End Interface

C# using System; using System.ServiceModel; using System.Runtime.Serialization; namespace DevMinds.Library { [DataContract] public class Pessoa { private string _nome; [DataMember] public string Nome { get { return this._nome; } set { this._nome = value; } } } }

VB.Net Imports System Imports System.ServiceModel Imports System.Runtime.Serialization Namespace DevMinds.Library <DataContract> Public Class Pessoa Private _nome As String <DataMember> Public Property Nome() As String Get Return Me._nome End Get Set (Value As String) Me._nome = value End Set End Property End Class End Namespace

Supondo-se que o cliente defina uma classe chamada Fisica (de pessoa física) que herde diretamente da classe Pessoa e tente enviar a instância desta classe para o método AdicionarContato. Apesar de compilar, você terá uma exceção quando o código for executado, pelo fato de que quando você passar a classe Fisica ao invés de Pessoa o serviço não saberá como deserializar a "Pessoa" que é recebida. O mesmo vale para quando você tem uma coleção em seu serviço de uma classe derivada e tenta retorná-la para o cliente, expondo através do retorno do método uma coleção de tipos base.

PÁGINA

16

Artigo: Know Tipes no WCF
C# VB.Net Imports System Imports System.ServiceModel Imports System.Runtime.Serialization <DataContract, KnownType(GetType(Fisica))> _ Public Class Pessoa 'Implementação End Class <DataContract> Public Class Fisica Inherits Pessoa 'Implementação End Class

Para suavizar este problema, o WCF introduziu um atributo chamado KnownType. Esse atributo recebe em seu construtor um Type, indicando à infraestrutura do WCF que existe uma classe derivada do tipo onde o atributo é aplicado e que ela também pode ser aceita. Quando você define este atributo do lado do servidor, você permitirá que todos os contratos e operações que utilizem este tipo base possam aceitar o tipo especificado pelo atributo. O exemplo abaixo ilustra como devemos proceder para utilizar o atributo KnownType:

[DataContract] [KnownType(typeof(Fisica))] public class Pessoa { //Implementação } [DataContract] public class Fisica : Pessoa { //Implementação }

Uma vez aplicado este atributo, ele fará com que a classe derivada seja adicionada nos metadados do serviço e, conseqüentemente, o cliente terá a definição da mesma, podendo passá-la para o serviço ao invés da classe base. Desta forma, podemos tranquilamente executar o código que antes do atributo era impossível:

C# using (GerenciadorDeContatosClient proxy = new GerenciadorDeContatosClient()) { Fisica f = new Fisica(); f.Nome = "Israel"; f.Cpf = "00000000000"; proxy.AdicionarContato(f); }

VB.Net Using proxy As New GerenciadorDeContatosClient () Dim f As New Fisica() f.Nome = "Israel" f.Cpf = "00000000000" proxy.AdicionarContato(f) End Using

Como disse anteriormente, o ponto negativo deste atributo é com relação ao escopo, pois ele permite que todos os locais onde aceite uma classe base, aceitar um tipo derivado especificado no atributo. Se não quisermos isso, ou seja, se desejarmos habilitar este recurso somente para uma determinada operação, um contrato ou um serviço, podemos utilizar o atributo ServiceKnowType, que pode ser aplicado a um método, Interface ou classe. Com isso, o nosso código mudará ligeiramente, permitindo que somente um determinado método aceite instâncias da classe Fisica:

C# using System; using System.ServiceModel; using System.Runtime.Serialization; namespace DevMinds.Library { [ServiceContract] public interface IGerenciadorDeContatos { [OperationContract] [ServiceKnowType(typeof(Fisica))] void AdicionarContato(Pessoa p); //outros métodos } }

VB.Net Imports System Imports System.ServiceModel Imports System.Runtime.Serialization <ServiceContract()> _ Public Interface IGerenciadorDeContatos <OperationContract(), ServiceKnowType (GetType(Fisica))> _ Sub AdicionarContato(p As Pessoa) 'outros métodos End Interface

PÁGINA

17

Artigo: Know Tipes no WCF
C# VB.Net Imports System Imports System.ServiceModel Imports System.Runtime.Serialization <ServiceContract()> _ Public Interface IGerenciadorDeContatos <OperationContract(), ServiceKnowType (GetType(Fisica)), ServiceKnowType(GetType (Juridica))> _ Sub AdicionarContato(p As Pessoa) 'outros métodos End Interface

E ainda, se quiser permitir mais de uma classe derivada de um tipo base, então poderá adicionar múltiplos atributos (KnowType ou ServiceKnowType) para satisfazer a todos os tipos que a operação poderá aceitar/retornar. O trecho de código abaixo ilustra múltiplos atributos para mais de um tipo derivado:

using System; using System.ServiceModel; using System.Runtime.Serialization; namespace DevMinds.Library { [ServiceContract] public interface IGerenciadorDeContatos { [OperationContract] [ServiceKnowType(typeof(Fisica))] [ServiceKnowType(typeof(Juridica))] void AdicionarContato(Pessoa p); //outros métodos } }

Para finalizar, ainda temos um detalhe importante quando falamos de know types que é em relação à recompilação do código cliente ou do serviço quando alguma nova classe derivada deve ser informada para que ela possa ser utilizada. Uma vez que um novo tipo precisa ser utilizado, implica em mudar o código, recompilá-lo e redistribuí-lo. Para amenizar isso, o WCF permite-nos fazer essa configuração, ou melhor, adição de novos tipos, a partir do arquivo de configuração, como é mostrado através do trecho de código abaixo:

*.config <system.runtime.serialization> <dataContractSerializer> <declaredTypes> <add type="DevMinds.Library.Pessoa, DevMinds.Library, Version=1.0.0.0, PublicKeyToken=null"> <knownType type="DevMinds.Client.Juridica, DevMinds.Client, Version=1.0.0.0, PublicKeyToken=null"/> </add> </declaredTypes> </dataContractSerializer> </system.runtime.serialization>
Conclusão: Mais uma vez vimos através de uma pequena funcionalidade o quanto o WCF é flexível e permite de uma forma bem fácil e simples integrar o código e seus tipos que são desenhados e executados no cliente com o código que temos no servidor.

Israel Aéce (Israel@projetando.net) Microsoft MVP, MCP, MCAD, MCTS e MCT. Fundador do site Projetando.NET (http:// www.projetando.net). Atualmente atua como desenvolvedor de aplicações .NET. Blog: http:// weblogs.pontonetpt.com/israelaece/.

PÁGINA

18

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
Nada mais nada menos que o Visual Studio “Orcas” beta 1. Para que gosta de testar o produto e estudar os novos recursos, a Microsoft já disponibilizou o Download de todas as suas versões em fase beta. Evidente que como o produto é beta, alguns bugs devem ser encontrados, alias, esse é o objetivo da Microsoft. Algumas versões só podem ser baixadas por assinantes MSDN Subscribe, mas quem não é assinante pode baixar tranqüilamente as versões Express. O site para download é: http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx. Veja parte do texto oficial “em inglês” retirado do site da Microsoft. Microsoft .NET Framework 3.5 – Beta 1 The Microsoft .NET Framework 3.5 Beta 1 is a preview release of the latest version of the .NET Framework. Many ISV’s, enterprises and Microsoft product teams are successfully building on the new features Windows Workflow Foundation (WF), Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF) and Windows CardSpace in the .NET Framework 3.0. Microsoft plans to continue to invest in the .NET Framework developer platform and in support of existing users the .NET Framework 3.5 has a minimal number of breaking changes. Visual Studio Code Name “Orcas” Beta 1 Visual Studio code name "Orcas" is the next generation development tool for Windows Vista, the 2007 Office system, and the Web. Beta 1 consists of multiple releases including, Visual Studio Professional Edition, Visual Studio Team Suite and Visual Studio Team Foundation Server, which are available as selfextracting installation files you can use to install the products. Alternatively, you can download VPC images with the software pre-installed. In addition, you can download prerelease versions of Visual Basic Express, Visual C++ Express, Visual C# Express, and Visual Web Developer. Visual Studio Express Editions Visual Studio Express Editions are lightweight, easy-to-use and easy-to-learn tools for the hobbyist, novice and student developer. Link para as versões Express: http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx

“Visual Studio “Orcas” beta 1”

PÁGINA

19

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
Israel Aéce é um grande destaque na comunidade com contribuições de artigos e fórum MSDN, seu blog já é muito conhecido na comunidade nacional, sempre atualizado contando as experiências do dia-a-dia de projetos, problemas, dicas, etc. Sempre com assuntos atuais e relevantes, vale a pena assinar seu Feed ou acessar diretamente a URL do blog.

Link do Blog: http://weblogs.pontonetpt.com/israelaece/

“Os Blogs hoje são ferramentas essenciais para quem acompanha tecnologia”

Blog Internacional
Rob Caron faz parte do time do produto VSTS na Microsoft em Redmound, com atualizações constantes o blog é material essencial para quem acompanha o produto VSTS em todo mundo. Se quiser saber tudo sobre lançamentos, versões, futuro, etc. basta acompanhar o blog do Rob. Um grande destaque do blog foi um post feito por ele sobre o livro VSTS Rocks Brasil, um livro nacional que foi citado como referência de leitura por esse famoso blogger.

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

PÁGINA

20

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

Iniciantes em .Net
“Hoje em dia temos uma quantidade gigantesca de materiais de estudo, porém um direcionamento sobre esses materiais é sempre muito importante”
Agora se você é viciado em games e sonha em desenvolver o seu jogo, o site SharpGames, a primeira comunidade brasileira de XNA oferece um guia de aprendizado sobre a tecnologia, criado por André Furtado, que é um dos grandes divulgadores da tecnologia no Brasil Se você está iniciando seus estudos em .Net, no site http://www.facunte.com.br, encontramos materiais utilizados em sala de aula, treinamentos, etc. pelo professor, palestrante, MVP, viciado em XBOX Emerson Facunte. O material pode ser baixado gratuitamente no site.

http://www.facunte.com.br

XNA
http://www.sharpgames.net/Default.xna

PÁGINA

21

Comunidade Codificando .Net
A comunidade Codificando.Net surgiu em 2002, da idéia de agrupar um grande número de desenvolvedores, usuários e entusiastas da tecnologia.NET para que os mesmos trocassem experiências sobre modelos, meios e formas de desenvolvimento. Os principais meios de cooperação e interação técnica entre os membros da comunidade são: Web Site, www.codificando.net, realização de eventos presenciais, participação em palestras em universidades, artigos técnicos e fórum de discussão através de lista de email. A participação de todos é o que contribui para uma melhor performance e conhecimento de todos, pois a cada nova pergunta, a cada novo artigo, passamos a encarar os problemas de uma forma clara e objetiva, deixando complicações e frustrações de lado. Para essas pessoas que contribuem para o perfeito funcionamento da comunidade, podemos, por meio de parcerias, recompensá-las através de reconhecimentos, como por exemplo, o destaque do mês, que é uma premiação dada ao membro que participar mais ativamente da lista de discussão. A comunidade Codificando.net possuí objetivos claros e diretos: Levar o conhecimento adquirido compartilhar as experiências; e

Desenvolver cada vez mais o conhecimento sobre a tecnologia.NET; Promover palestras, encontros e seminários sobre a tecnologia .NET; Agrupar os interessados em todo o Brasil; Solidificar e estimular o uso das linguagens da plataforma por todos. Esses objetivos nos dá motivação para continuarmos lutando para que cada vez mais, novas pessoas se interessem.

“Aprendizado, companherismo, ensino e aprendizado constante. Assim se faz a nossa comunidade.”

Divisões e equipe
O Codificando.Net foi fundado em 2002 no interior de São Paulo, em Campinas por Max Moussiman Neto. Nesta data foi lançado o Site Oficial e a Lista de Discussão (email). Em apenas 2 meses a lista de discussão já contava com mais de 200 membros participantes. Vários outros projetos foram incrementando ainda mais o Web Site do Codificando.Net, um exemplo disso foi o inovador ViOn.Net (http://www.codificando.net/view_ViOn.aspx) , um sistema de vídeos on-line, até então algo praticamente desconhecido no Brasil. Em 05/2004 o Codificando.Net realizou o seu primeiro evento. O evento aconteceu em Campinas, o People.Net, com apenas 32 vagas, encerradas em apenas 2 dias. Esse foi o marco do Codificando.Net em eventos. A comunidade cresceu muito e em outubro de 2003 criou-se uma nova divisão, o São Paulo Codificando.Net. Liderado e Fundado por Alexandre Tarifa e Marcus Garcia. O primeiro evento do São Paulo Codificando .Net foi o Debate.Net, em formato de mesa redonda e limitado a apenas 15 pessoas. Após 3 anos de atuação, a equipe do Codificando está dividida da seguinte forma: Codificando .Net Max Moussiman Neto – Líder e Fundador São Paulo Codificando .Net Alexandre Tarifa – Líder / Andrey Sanches – Líder / Emerson Facunte – Líder Diego Nogare – Co-líder / David Pomarico – Co-líder 400 pessoas acompanham palestra em evento do Codificando.Net

PÁGINA

22

Comunidade Codificando .Net
O reconhecimento da comunidade Codificando .Net vem acontecendo ao longo do tempo, e em 3 anos de existência é sem dúvida uma das maiores comunidades da plataforma .Net no Brasil, e porque não dizer do Mundo?! Os líderes e membros são profissionais reconhecidos no mercado e também reconhecidos pela Microsoft e INETA no Brasil. A Microsoft reconhece três dos líderes com o título de MVP (Most Valuable Professional), um reconhecimento aos esforços realizados na Comunidade. LÍDERES RECONHECIDOS COMO MVP: Alexandre Tarifa: Visual Developer – Visual Basic/ VB.Net Andrey Sanches: Visual Developer – Asp/Asp.Net Emerson Facunte: Visual Developer – Asp/ Asp.Net A comunidade Codificando .Net também é reconhecida pela INETA, que é a International .Net Associassion, um órgão mundial de comunidades. Hoje o INETA Brasil é liderada por Marcus Garcia, que atuou como líder do São Paulo Codificando .Net e pelo grande trabalho realizado foi reconhecido. DEPOIMENTOS “O Codificando desde o início de suas atividades vem demonstrando uma enorme seriedade junto a comunidade .NET. Essa seriedade aliada a um grande compromisso que nos cativou de forma a mantermos uma parceria de sucesso durante todos esses anos. Tenho certeza que esse trabalho à frente da comunidade torna seu líderes altamente respeitados no mercado.” Marcio Elias – Diretor Executivo Linha de Código “O Codificando.NET é sem dúvida o mais ativo grupo de usuários de tecnologia .NET em São Paulo e é uma grande honra palestrar em seus eventos.” Mauro Sant´ana – Microsoft Regional Director e Microsoft MVP “Quando conheci a turma do Codificando.NET pensei: São uns jovens turbinados se divertindo com .NET. Hoje vejo com grata surpresa que é muito mais que isso. É um trabalho sério de profissionais que efetivamente se comprometem com capacitar a comunidade.” Fábio Câmara – Microsoft MVP – VSTS

“ A Microsoft reconhece três dos líderes com o título de MVP ”

Ação Social
O trabalho realizado junto a Alimentos arrecadados em revento pela comunidade. comunidade de desenvolvedores já pode ser considerado uma Ação Social, porém vivemos em um país onde existem milhares de pessoas com necessidades diversas e acreditamos que qualquer ajuda mesmo que pequena pode significar a alegria de algumas pessoas. Pensando nisso o Codificando.Net adotou nos últimos eventos a arrecadação de alimentos e/ou brinquedos que são doados a instituições de caridade. Já foram doados mais de 200 brinquedos e aproximadamente uma tonelada de alimentos.

PÁGINA

23

Cobertura: Codificando 2007
Foi realizado no dia 19/05/2007 no auditório do campus Tatuapé da Universidade UNIP o evento Codificando 2007. Foi o primeiro evento do ano de 2007 da comunidade Codificando 2007, já começando a temporada com um evento sensacional. Cerca de 500 pessoas assistiram palestras divididas em duas salas: Profissional (Auditório) e Estudante. O público da sala Profissional acompanhou palestras sobre: Segurança em aplicações Web com o MVP e bom baiano Ramon Durães, Padronização em projetos com o MVP e RD Mauro Sant´Ana, Silverlight com Bruno e Roberto Sonino, Novidades do Visual Studio “Orcas” e Framework 3.5 com o MVP Alexandre Tarifa e desenvolvimento de games com XNA com o MVP Emerson Facunte. Já nas sessões de estudante, o público acompanhou as seguintes palestras: SQL Server 2005 com Diego Nogare, Mercado de trabalho com Rodrigo Strauss, Windows Workflow Foundation com o MVP Thiago Cruz e uma repetição da palestra de SQL Server 2005 com Diego Nogare. Todas as sessões foram acompanhadas por um público muito intenso e a lotação do auditório e da sala permaneceram durante todo o evento. Para a participação no evento, o público opcionalmente doava 1 Kg de alimento não perecível, porém a adoção a causa nobre foi muito grande e tivemos aproximadamente 500 Kg de alimentos arrecadados, uma ação fantástica que orgulha muito a todos que participaram e arrancaram aplausos calorosos no final do evento. No final do evento foi apresentado o lançamento da revista Codificando e-Magazine e sorteio de muitos brindes, com um público que saiu do evento muito satisfeito com o conteúdo apresentado. O Codificando .Net agradece a presença marcante de público e aos patrocinadores: Microsoft, MSDN e os apoiadores: Linha de Código, UNIP, Treinando .Net, Comunidade .Net Raptors, INETA e revista .Net Magazine.

“Mais um grande evento que mostra o força da comunidade em São Paulo.”

Fotos do evento

PÁGINA

24

Cobertura: Final Imagine Cup 2007

Não poderia ser diferente, uma final emocionante com disputas acirradas entre os finalistas, onde apenas uma equipe representará o Brasil na final mundial do torneio na categoria Software Design em agosto deste ano na Coréia do Sul. A grande vencedora deste ano na etapa Brasil é a Pernambucana Oysterix SD, composta pelos estudantes Diogo Nascimento, Murilo Pontes, Raquel Almeida e Thiago Teixeira, da Universidade de Pernambuco e do Instituto Tecnológico de Aeronáutica (ITA). Um fato curioso é que Pernambuco emplacou cinco equipes na finalíssima da etapa Brasil. Tal fato gerou uma certa polêmica, no entanto muitos puderam observar a excelência dos trabalhos realizados e perceberam que nada era por acaso, ou simplesmente favorecimento, e sim jovens que estudam em universidades modelos, como é o caso da Universidade de Pernambuco, uma “fábrica” de jovens talentos, produzidos com muito suor e samba, ou melhor “frevo”! A equipe desenvolveu o projeto KnowTouch, um dispositivo móvel para leitura em Braille. O projeto utiliza pinos eletromecânicos que são moldados com os símbolos do alfabeto em Braille conforme as palavras da obra, recebidas por rádio freqüência de um servidor que armazena os livros eletrônicos.

Equipe Oysterix SD Campeã da Etapa Brasil Com uma diferença de apenas 0,04 pontos da 1a colocada, a equipe Trivent Dreams, composta por André Furtado, Carlos Rodrigues, Ivan Cardim e Roberto Soninno (Poli/USP); levou o 2 o lugar com o projeto e-du. Uma plataforma que tem como objetivo permitir alfabetização digital em massa por meio de experiências de aprendizado móveis, digitais, customizadas, de alta interatividade e automação. É composto por um assistente pessoal para alunos e ferramentas de criação e consolidação de conteúdo para professores.

Equipe Trivent Dreams – segunda colocada

PÁGINA

25

Cobertura: Final Imagine Cup 2007

A terceira colocada, a equipe Paulista Guarini composta por Guilherme Paes Molina e Bruno Peinado Brusco - Centro Universitário Salesiano, Leandro Ferreira de Andrade - FAC II e Richard Araujo Macena Bezerra - FATEC-AM, todos ex-Alunos Monitores, e atuais Microsoft Student Partners criou o projeto Mosaico, uma solução com alta tecnologia que permite melhorar o processo de avaliação dos alunos por meio de parâmetros curriculares do Ministério da Educação (MEC) e das próprias escolas. A idéia é simples e inova a maneira da avaliação da educação. No programa, cada habilidade adquirida pelo aluno representa um pedaço que irá compor um mosaico final - que, por sua vez, compara o desempenho do aluno com os parâmetros do MEC e da escola.

Quadro de classificação da final
Colocação

Equipe Oysterix Trivent Dreams Guarini Dominus Commit Solutions Stepping Stone SSL Fast

Pontos 8,8958 8,8542 8,6146 8,4792 8,4167 8,2604 7,7917 7,7604

1o 2 3 4 5 6 7 8
o o o o o o o

Como você pôde observar no quadro da classificação final, a diferença entre o primeiro colocado e o último foi de apenas 1,14 pontos, o que prova a forte disputa, além de um bom nível técnico. A amizade entre os integrantes das equipes finalistas sem dúvida marcou este torneio, onde muitos trocaram idéias e ideais, além de muita descontração numa inusitada prova de kart.

Equipes finalistas – aqui todos são vencedores A cerimônia da entrega dos prêmios aconteceu no Auditório do Hilton apresentada pelo irreverente Marcos Mion que de certa forma tirou um pouco a tensão dos finalistas com suas “pseudo-piadas”.

Kartódromo – Uma irreverente disputa antes da finalissíma

Marcos Mion apresentando a final do Imagine Cup 2007
Parabéns a todos os participantes do torneio e que o Brasil conquiste a final na Coréia com o excelente trabalho da equipe Pernambucana

Oysterix SD.

PÁGINA

26

.Close()
A coluna .Close() tem como objetivo encerrar as edições da Codificando e-Magazine com dicas sobre desenvolvimento .Net em geral, falando desde recursos de linguagens até opiniões do dia-a-dia do desenvolvimento de projetos. Para iniciar vou falar um pouco sobre o Visual Basic 9.0, versão que será lançada no final do ano junto ao Framework (FX) 3.5 e ao Visual Studio “Orcas”. O Visual Basic é sem dúvida uma linguagem que sobre um preconceito muito forte de muitas pessoas principalmente no Brasil, mas que vem acompanhando com grande estilo a evolução da plataforma .Net. Apesar de todo esse preconceito, ainda é uma linguagem muito popular, produtiva e se bem utilizada, uma excelente linguagem. Todos os recursos do .Net Framework são cobertos/suportados pela linguagem. Lembrando que na opinião deste autor, o desenvolvedor .Net deve ser capaz de desenvolver em qualquer das duas linguagens da Microsoft: VB.Net e C#. Uma das principais novidades é o tão esperado LINQ, que são extensões da linguagem que oferecem suporte a consulta de dados em diversos formatos: XML, Banco de Dados, coleções genéricas, entidades, objetos, etc... Enfim, qualquer coleção que implementar a interface IEnumerable assim como IQueryable. A muito tempo a comunidade pedia a Microsoft alguma solução para O/R (Object Relational) e finalmente temos uma tecnologia; Os times de VB.Net e C# apostam muito no LINQ e tem feito esforços grandes para liberar muito material para a comunidade. Para quem trabalha com aplicações de banco de dados, a produtividade aumenta muito, já que o mapeamento do banco de dados feito pelo diagrama O/R do Visual Studio “Orcas” agiliza o processo de levantamento de entidades, e o LINQ já faz o trabalho da manipulação do banco de dados. A tabela abaixo, mostra uma comparação/mapeamento entre LINQ e Banco de Dados.

“... o desenvolvedor .Net deve ser capaz de desenvolver em qualquer das duas linguagens da Microsoft: VB.Net e C#.”

Simplificar ainda mais a sintaxe é outro assunto forte na nova versão, O time do Visual Basic .Net criou novas formas de escrever alguns códigos que estamos acostumados a muito tempo porém que claramente organiza/agiliza/dinamiza a leitura. Nas próximas colunas vamos poder ver cada uma dessas novidades. Até lá.

Alexandre Tarifa é MVP Visual Developer Visual Basic .Net, bacharel/pós graduado em Ciência da Computação, trabalha em diversos projetos .Net ignorando a muito tempo a discussão entre VB.Net e C# gastando seu tempo com outros assuntos importantes. VB.Net ou C#? Tanto faz... o cliente que manda :) 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

Sign up to vote on this title
UsefulNot useful