Codificando E Magazine5

  • November 2019
  • 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 Magazine5 as PDF for free.

More details

  • Words: 9,758
  • Pages: 31
POWERED BY CODIFICANDO.NET

Codificando Net

e-magazine E D I Ç Ã O

6

N Ú M E R O

5

A N O

I

J A N / F E V

2 0 0 7

Editorial Parece que foi ontem, mas já estamos em 2008. Esta primeira edição do ano contempla excelentes materiais e colunas e inicia uma fase em que a revista passa a lutar por um conteúdo mais ligado ao dia-a-dia dos profissionais de tecnologia e desenvolvimento. A revista Codificando.Net cresceu nos últimos tempos em relação ao número de downloads mas encolheu em relação ao número de colaboradores. As portas estão abertas para toda comunidade. Nosso editorial é totalmente aberto para contribuições da comunidade e estamos sempre aguardando que as pessoas tomem o gosto por divulgar tecnologia. Esta edição também apresenta mais dois editores Diego Nogare e Sergio Gonçalves (Ganso) com o objetivo de dar um novo sangue ao nosso time e conseguirmos aumentar o conteúdo a cada edição. Vamos lá pessoal, mostrem suas caras! Alexandre Tarifa [email protected]

Equipe Editor: Alexandre Tarifa Emerson Facunte Diego Nogare Sergio Gonçalves Fernando Borges (Capa) Reporter Alfred Myers Colaboradores: Feio Tomaz Maurício Wieler Diego Nogare Alexandre Lopes

3

Entrevista - Lançamentos 2008 A revista Codificando e-Magazine através do repórter Alfred Myers, MVP de C#, realizou uma pesquisa por email com os principais nomes da tecnologia no Brasil, fazendo três perguntas sobre os lançamentos das versões 2008 das ferramentas de Desenvolvimento e Infra-Estrutura. As perguntas foram elaboradas pelo nosso repórter de plantão Alfred Myers. Perguntas: 1) Qual a principal novidade em 2008 do produto ou tecnologia na qual você é MVP? 2) Quais as ferramentas que não poderão faltar no seu computador em 2008? 3) Qual idéia, ferramenta, produto, tecnologia você acha que ganhará destaque em 2008? Por quê?

Bruno Sonnino – Microsoft MVP (Client Application Development)

Desenvolvedor e consultor de sistemas. É autor de 7 livros e mais de uma centena de artigos publicados em revistas nacionais e estrangeiras. Às vezes, pode ser encontrado dando palestras em eventos como o TechEd e BorCon. Ele desenvolve utilitários para a revista PCMagazine americana (http://www.pcmag.com/download). 1) Acredito que 2008 deve ser o ano do Silverlight, com o lançamento do Silverlight 2.0 e a possibilidade de desenvolver aplicativos .net para múltiplas plataformas no browser. 2) O Visual Studio 2008 é uma ferramenta bastante completa para o desenvolvimento de aplicações .Net, desde aplicações WinForms/WPF ou Silverlight até aplicações para Compact Framework ou Office. 3) O Silverlight deve ganhar destaque, com a possibilidade da criação de aplicações ricas para a Web. Com ele, o XAML deve ganhar maior destaque e, por conseqüência, as atenções devem se voltar também para o WPF, na criação de aplicações desktop. Hélio Sá Moreira – Microsoft MVP (Office Sharepoint Server 2007)

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. 1) As tecnologias Sharepoint (Windows Sharepoint Services 3.0 e Office Sharepoint Server 2007) estão enquadradas na próxima onda (wave) de lançamentos da Microsoft; portanto, acredito que grandes novidades neste contexto devem ser esperadas para 2009/2010! Outrora, tenho acompanhado algumas movimentações interessantes para: 

Suportabilidade do Windows Sharepoint Services 3.0 como uma role do Windows Server 2008 [lançamento confirmado para este ano] – sendo uma implementação anunciada pelos times de produto. Mas há alguns meses atrás esta discussão foi novamente colocada em pauta, e a decisão final foi para a não implementação desta funcionalidade por questões de flexibilidade e independência entre os produtos e, conseqüentemente, entre as versões/build´s dos mesmos.



A suportabilidade das tecnologias Sharepoint ao SQL Server 2008 – onde acredito que seja praticamente nativo, sem grandes necessidades de modificações ou “fixes”.



O Visual Studio .Net 2008 já foi lançado, e apresenta diversas (muitas novidades) para o desenvolvimento de aplicações. No cenário de desenvolvimento e customizações avançadas para as tecnologias Sharepoint, onde normalmente o Visual Studio .Net 2005 é a ferramenta ideal, o lançamento do Visual Studio .Net 2008

4

Entrevista - Lançamentos 2008 trás grandes evoluções no desenvolvimento de workflows baseados no Windows Workflow Foundation. Alias, espero que este lançamento (Visual Studio .Net 2008) seja um fator motivador para as próximas versões do “Windows SharePoint Services 3.0 Tools: Visual Studio Extensions” 2. Windows Vista (with SP1), Office System 2007 (with SP1). InfoPath 2007, OneNote 2007, Groove 2007, Microsoft ® Business Data Catalog Definition Editor, Visual Studio .Net 2008 (Windows Workflow Foundation e Windows SharePoint Services 3.0 Tools: Visual Studio Extensions), BdcMetaMan, Microsoft Virtual PC e Microsoft Virtual Server 2005. O resto vai ficar virtualizado! ;-) 3. Eu acredito que o SQL Server 2008 seja a grande sensação deste ano. Primeiramente pelas funcionalidades e características anunciadas durante as versões betas e CTP (Community Technology Preview), que representam um avanço incrível nas capacidades de gerenciamento e otimização no modelo de armazenamento de dados corporativos. Minha sensação também é baseada na própria arquitetura da plataforma de produtos, serviços e soluções Microsoft que - com exceção do Exchange Server (e provavelmente de outros serviços menos relevantes) – estão baseadas completamente nos recursos providos pelo SQL Server, com o uso intensivo e em larga escala. Para idéias e tecnologias, gostaria de citar: - Microsoft Popfly - http://www.popfly.com/ - Microsoft Live Labs : Volta - http://labs.live.com/volta/ - OOXML – Office Open XML - Windows Live Plataform - Sharepoint (é claro) – sendo um grande ano de implementações mais complexas e completas. Vejam mais informações em http://www.sharepointbrasil.net Marcelo Hideaki Azuma (ITGROUP - MS GOLD Certified Partner)

MVP de Arquitetura de Soluções, MCSD, MCSE, MCDBA e MCT. 1. Algo que vem se apresentando é o uso do Application Portfolio Management como parte do ferramental para gerenciamento da arquitetura corporativa. Muito importante já que o nível de complexidade do conjunto de sistemas de uma empresa tende a crescer exponencialmente e o uso de ferramentas deste tipo, como o Project Portfolio Server da Microsoft, possibilita uma análise estratégica sobre o patrimônio digital da empresa, auxiliando o arquiteto corporativo na definição do direcionamento tecnológico da empresa, que orienta a realização de cada projeto de TI. 2. Todo o pacote Office 2007, incluindo o Project Professional, OneNote e Visio, e o Visual Studio 2008 com o Team Foundation Server Explorer. Não pode faltar também o Virtual PC, com vários Virtuais Machines para manter o meu Data Center móvel. 3. Este ano deve apresentar uma evolução na implementação dos conceitos de Service Oriented Architecture e suas especializações, como Software + Services e Office Business Applications. Vários casos de sucesso de implementações de Enterprise Service Bus, Business Intelligence, Unified Communications e Portais de Colaboração, a Microsoft oferece hoje uma plataforma madura para realização de tais projetos e o mercado também está mais bem preparado para receber e tirar proveito de tudo isso.

5

Entrevista - Lançamentos 2008 Fabio Câmara Microsoft MVP

Fabio Camara ([email protected]) é MCT, MCP, MCAD, MCPD, MCITP, MCTS, MCSD.NET, MSF Practitioner, Certified ITIL Foundations e Certified SCRUM Master– Acredita em bons resultados em projetos com técnicas ágeis, principalmente para as características do mercado brasileiro. Ministra treinamentos e “coaching” para projetos conforme pode ser verificado no site http://www.fcamara.com.br 1. O Visual Studio Team System tem muitas novidades e posso cometer alguma injustiça em minha avaliação. Vamos colocar assim: A novidade que eu mais gostei no Visual Studio Team System 2008 foram as novas funcionalidades de Build Automation que permitiram o conceito Continuos Integration. 2. TFS 2008, VSTS 2008, Office 2007, MOSS 2007 e One Note. 3.

Na minha previsão, o VSTS vai ganhar destaque porque vai deixar de ser visto como uma ferramenta de controle de versão e será visto como uma ferramenta de automação de ciclo de vida de desenvolvimento de software

Alexandre Lopes (Microsoft MCT)

Atua como consultor especialista em SQL Server em projetos da Y2K-TI (http://www.y2k-ti.com.br). Possui mais de 10 anos de experiência na área de TI, sendo certificado Microsoft com os títulos MCT, MCSE e MCDBA. Como instrutor MCT (Microsoft Certified Trainer) possui cerca de 4.200 horas ministrando treinamento oficial Microsoft. 1) O lançamento de dados.

do

SQL

Server

2008

que

irá

revolucionar

o

mercado

de

banco

2) O Virtual PC com Windows Server 2008 e SQL Server 2008. 3) A Virtualização de servidores e o outsourcing de serviços deverão ter um destaque em 2008. Ambos terão destaque por diminuírem o ROI e proporcionarem maior poder de gerenciamento. O ITIL como framework para entrega de melhores serviços será o grande destaque na área de outsourcing e help desk.

Israel Aece (Microsoft MVP, MCP, MCAD, MCTS e MCT)

Israel Aéce (Microsoft MVP, MCP, MCAD, MCTS e MCT) é desenvolvedor de software há aproximadamente 5 anos. Desde então utiliza a plataforma .NET da Microsoft, onde desenvolve sobre ela aplicativos voltados para Internet (ASP.NET), Windows Forms, Windows Services e, principalmente sistema distribuídos, utilizando Visual Basic .NET ou Visual C# .NET como linguagens. E-mail: [email protected] | Site: http://www.projetando.net | Blog: http://weblogs.pontonetpt.com/israelaece 1) O ASP.NET não sofreu muitas alterações. As novidades estão naquelas tecnologias e funcionalidades que o circundam como é o caso do MVC e o IIS 7.0. 2) Visual Studio .NET 2008 + Windows Vista Business + IIS 7.0.

6

Entrevista - Lançamentos 2008 3. Acredito que o MVC roubará a cena nos próximos meses. Isso é devido à grande exigência que a comunidade fez para que fosse implementado uma alternativa ao tradicional Web Forms. Claro que, em paralelo, outras tecnologias vão sendo disponibilizadas (como é o caso das Parallel Extensions) e outras vão amadurecendo cada vez mais (WCF, WF, WPF e Cardspace), tornando a plataforma .NET cada vez mais completa.

Maira Wenzel

MCSD, é líder de programação do time de Usuários Educacionais de ASP .NET. Vem trabalhando extensivamente com tecnologias Microsoft desde 2000 incluindo SQL Server, ASP.NET, C#, Visual Basic and Sharepoint Server. 1) ASP.NET Dynamic Data. É possível conferir esta tecnologia na versão CTP do ASP.NET 3.5 Extensions Preview. 2) Não posso ficar sem o Word, o Outlook e o Visual Studio 2008. 3) Acho que uma tecnologia que vai ter muito destaque em 2008 é o ASP.NET MVC. O ASP.NET MVC é a implementação da Microsoft utilizando a arquitetura MVC (model-view-controller). Esta arquitetura por fazer uma divisão de responsabilidades, facilita a manutenção do código, o gerenciamento de complexidade e o teste das aplicações.

http://shop.linhadecodigo.com.br/treinamento.asp?id=2953

Merge com SQL Server 2008

7

Uma das grandes novidades do SQL Server 2008 é a facilidade para mesclar dados utilizando o conceito de MERGE. Esta operação permite recuperar dados de uma origem e realizar diversas ações baseadas nos resultados de JOIN (junção) entre a origem e o destino. O MERGE aumenta consideravelmente o desempenho na utilização de INSERT, UPDATE e DELETE em casos específicos. A criação de uma condição MERGE é relativamente simples, no melhor caso são apenas quatro passos para sua composição. MERGE: Especifica os dados de destino da operação definida na clausula WHEN; USING: Especificam os dados de origem que serão comparados com os dados de destino, definido na clausula MERGE; ON: Encontra os dados em evidência, interligando as condições de origem e destino; WHEN: Aumenta a granularidade do filtro, incrementando a clausula ON. Com alguns exemplos na prática, este recurso fica mais simples de ser entendido e implementando. Imagine o seguinte cenário: Em uma rede de lojas, foram criadas tabelas com nomes diferentes, mas com a mesma estrutura. Cada tabela armazena os produtos que tem em sua loja (a tabela tblLoja1 armazena os produtos da Loja 1, e a tabela tblLoja2 armazena os produtos da Loja 2). Em um determinado momento, o dono da rede de lojas solicita que seja feita uma centralização dos dados, para a criação de uma aplicação Web. Com base neste cenário, criamos e populamos as duas tabelas de produtos das lojas.

DECLARE @cont INT SET @cont = 1 CREATE TABLE tblLoja1 ( lojCodigo int ,proCodigo int ,proDescricao varchar(10)) WHILE @cont <= 20 BEGIN INSERT INTO tblLoja1

CREATE TABLE tblLoja2 ( lojCodigo int ,proCodigo int ,proDescricao varchar(10))

DECLARE @cont INT SET @cont = 15

WHILE @cont <= 30 BEGIN INSERT INTO tblLoja2

Merge com SQL Server 2008

8

Depois de criar e inserir alguns registros em cada uma das duas tabelas separadas das Lojas, vamos criar a tabela tblLojas. Repare que a estrutura das 3 tabelas são iguais, isso não é uma regra, é só para simplificar o exemplo. Poderiam ser diferentes, sem problema algum. Finalmente chegamos ao ponto onde utilizaremos o MERGE para colocar todas as informações na tabela tblLojas, baseada nas tabelas tblLoja1 e tblLoja2. No primeiro exemplo de MERGE, utilizaremos a tabela tblLojas como sendo o destino dos dados e a tabela tblLojas1 como sendo a origem. Faremos a ligação das duas tabelas nos baseando na coluna proCodigo [terceira linha]. Quando a clausula ON for satisfatório (verdadeira), o processamento executará o bloco definido em MATCHED, para resultados cuja clausula ON seja negativa, o SQL Server 2008 executará o bloco NOT MATCHED. MERGE tblLojas des USING tblLoja1 ori ON ori.proCodigo = des.proCodigo WHEN NOT MATCHED THEN INSERT values(ori.lojCodigo, ori.proCodigo, ori.proDescricao) WHEN MATCHED THEN UPDATE SET des.lojCodigo = ori.lojCodigo;

Neste momento, como a tabela tblLojas ainda está vazia, somente o bloco NOT MATCHED (que insere os valores) será executado. Consultando a tabela tblLojas, os dados estão idênticos à tabela tblLoja1. MERGE tblLojas des USING tblLoja2 ori Agora, para executar o MERGE da tabela tblLoja2 com a ON ori.proCodigo = des.proCodigo tabela tblLojas, criamos o segundo exemplo de código que é WHEN MATCHED THEN muito parecido com o primeiro, a não ser pela tabela utilizaUPDATE SET des.proDescricao = 'AmbasLojas' da como origem dos dados e pelos processamentos que seWHEN NOT MATCHED THEN rão executados com base no resultado da clausula ON.

Agora, depois de executar esse código que, quando encontra proCodigo que existe na tabela tblLojas e também existem na tabela tblLoja2, atualiza a proDescricao para „AmbasLojas‟, consultar a tabela tblLojas, conseguimos ver com clareza que alguns dados foram inseridos e outros dados atualizados.

SELECT * FROM tblLojas Na hora que populamos as tabelas das lojas, os produtos de código 15 a 20 se repetiram propositalmente, para forçar esta igualdade de dados, e como está no exemplo, atualizar a tabela destino. Concluímos que utilizar o MERGE é mais rápido e simples do que escrever código para fazer uma junção de dados de duas tabelas. Esta nova funcionalidade deve ser utilizada sempre que possível. Ela é muito mais performática do que criar um procedimento fazendo as verificações manualmente.

Diego Nogare é Graduado em Ciência da Computação e Pós-Graduado em Engenharia de Computação com ênfase em Desenvolvimento Web com .NET, Colaborador do Portal Linha de Código, co-Líder do grupo de usuários Codificando .NET, co-Líder dos Microsoft Student Partners (MSP) de São Paulo, possui certificações MCP e MCTS em SQL Server 2005, é palestrante em eventos da Microsoft, Codificando .NET e INETA BR, mantém o site www.diegonogare.net.

9

Artigo: Eu uso metodologia ágil, e você? Como vender a utilização de metodologias ágeis em projetos para organizações tipicamente tradicionais? Diferente de outros assuntos técnicos que beiram questões religiosas (ver discussões entre Java e .Net), há nos diretores e gerentes das corporações uma prudência racional que independe de metodologia. Na verdade, todo gestor sensato quer avidamente três premissas realizadas em seus projetos: o negócio atendido, o orçamento respeitado e o cliente satisfeito (não necessariamente nesta ordem). Um caso prático Iniciamos a reunião na grande sala, muito luxuosa para os padrões que estamos acostumados a trabalhar. Havia cerca de três empresas representadas na sala e aparentemente todas na mesma situação. Um diretor de TI de uma respeitável organização me perguntou: O que está acontecendo com os projetos hoje? Simples, a TI é lenta demais e os negócios são muito rápidos – ele mesmo respondeu. Isso tem 10 anos no máximo e seu surgimento confunde-se com a utilização da Internet, mas é a dura realidade atual dos projetos de software. Seu papel hoje nesta reunião é me fazer compreender o motivo pelo qual eu permitiria você implantar suas técnicas ágeis em meu departamento de TI, me disse o diretor com verdadeiro desdém. E continuou falando: Argumentos relacionados com o controle do sucesso do projeto, principalmente do ponto de vista financeiro, são argumentos inválidos se compararmos técnicas ágeis de controle e técnicas baseadas em PMBok. Portanto seja mais criativo que isto! Ele passou ainda uns 30 minutos expondo toda sua descrença, eu até pensei que a reunião acabaria e eu não teria chance de falar. Abruptamente ele cala-se e olha para mim. Entendi imediatamente que chegou minha vez. Cerca de 8 pessoas caladas numa mesa oval esperando um argumento mágico vindo de mim. Colhendo a motivação Comecei trazendo novas questões, não que eu quisesse ganhar tempo para estruturar os meus argumentos, mas eu precisava entender porque este diretor com a opinião contra metodologias ágeis resolveu me receber numa reunião. Eu simplesmente queria entender o que estávamos fazendo ali naquela sala de reunião luxuosa. Parece-me que os problemas foram bem explanados, contudo não consegui captar a motivação. Qual a motivação de vocês para buscar mudanças? Entendi que não estão plenamente satisfeitos com as técnicas que utilizam hoje, entretanto percebi que estão acostumados com as técnicas e acomodados com os resultados alcançados. Sendo assim, para que conhecer possibilidades diferentes de técnicas e conseqüentemente de resultados? O diretor imediatamente questionou-me em tom mais alto ao invés de responder: _ Você está afirmando que estamos acomodados? Minha resposta politicamente inadequada foi: Independentemente de classificar se há ou não há “zona de conforto”, quero apresentar a minha leitura sobre o significado da palavra insanidade. Insanidade para mim é esperar por resultados diferentes sem fazer nada diferente. Há alguns anos se praticam as mesmas técnicas, como podemos esperar resultados diferentes? Aonde você quer chegar? Retrucou o diretor irritado. Quero encontrar a motivação! Respondi sem mostrar intimidação. As propostas ágeis são tão sérias como todas as propostas de metodologias que você conhece, portanto se não há motivação para mudanças e o objetivo é apenas comparar uma técnica com outra, avise-me, pois trilharei por caminhos mais teóricos neste caso. Neste momento eu sabia que a reunião iria longe, porém eu precisava “recuperar” o diretor. Procuro uma resposta simples, a mais simples que vier em sua mente agora, por favor, me responda o que estamos fazendo aqui agora. Meu cliente não está se sentindo bem atendido! Escapuliu da boca do diretor. Muito obrigado, eu respondi em cima.

10

Artigo: Eu uso metodologia ágil, e você? Obtendo o cenário A organização de nosso departamento de TI é formada por três sub-áreas: uma espécie de escritório de projetos, uma área de qualidade e a área de desenvolvimento propriamente dita. Obviamente temos pessoas de infra-estrutura que também são responsáveis pelos ambientes de desenvolvimento, testes e produção. Com este cenário procuramos ter controle de todas as atividades, porém mesmo assim vivemos um dilema: _ se atendemos aos pedidos dos usuários após o escopo definido, perdemos o controle sobre o orçamento e prorrogamos o prazo; _ se congelamos o escopo previamente definido, apesar de entregar com o orçamento previsto e no prazo combinado, nossos clientes afirmam que não foram atendidos. Afinal, o que podemos fazer diferente? Perguntou o diretor em tom mais amigável. Explicando os motivos Vejo muito naturalmente em seu cenário o conflito de atividades de controle, também chamadas atividades de conformidade, com atividades de resultado. Apesar de ser um problema comum, não há literatura acessível ou cursos que orientem a compreensão e resolução deste conflito. As atividades de controle focam em corrigir desvios e não no aprendizado, ou seja, partem do principio que o plano sempre tem que ser perfeito. Se o plano inicial precisa ser alterado, refaz-se imediatamente todo o plano. Isto explica também porque os técnicos não gostam quando os usuários pedem mudanças, pois é muito trabalho seja lá qual for o tamanho da mudança. Quando afirmo que não há aprendizado neste cenário, caracterizo assim porque ninguém se propõe a entender o porquê do novo pedido do usuário ou da mudança sobre algo previamente combinado. É uma atitude binária, “sim” vamos fazer e o impacto será revelado posteriormente ou “não” podemos, pois o impacto será fatal ao projeto. Deve haver uma razão para tantas mudanças ou para inúmeros pedidos novos, quando vamos nos responsabilizar em compreender isso e transformar nossa atitude? O controle de qualidade, da forma automatizada que vocês usam, consome uma enormidade de tempo. Este tempo extra com qualidade, além de consumir mais atividades de conformidade, também são muito questionadas pelos “sponsors1” dos projetos. A mistura de atividades de controle e atividades de qualidade no seu cenário criam um efeito “bola de neve” em seus projetos. Nestes projetos com problemas, vocês aumentam a prioridade das atividades de conformidade na tentativa de retomar o plano perfeito ao invés de aumentar o foco nas atividades de resultado. Vocês aumentam os testes acreditando que a inspeção é a melhor forma de proteger-se da decepção do cliente. No fim, mesmo tendo trabalhado arduamente durante todo o projeto, há uma sensação em todos de que não foi legal. 1 Sponsors: são executivos e / ou clientes que aprovam o orçamento do projeto e são responsáveis pelo pagamento . Uma direção diferente É necessário quebrar o paradigma de replicabilidade e adotar o paradigma da confiabilidade. • Replicabilidade: entradas e saídas planejadas inicialmente e com pouca variação; • Confiabilidade: foco na saída, flexibilidade na entrada e aproximação do cliente. Muitas metodologias propõem uma espécie de framework para encaixotar o relacionamento com clientes e desenvolvedores como se fossem robôs. Os seres humanos são dotados de uma fantástica criatividade capaz de surpreender, sempre. “Robotizar” o comportamento de nossos clientes e desenvolvedores é transformar a expectativa de um projeto solucionador para o negócio na monotonia de mais um sistema de software . Se você não confia em seu cliente e na sua equipe de desenvolvimento, porque está iniciando este projeto? Se o cliente não é confiável, use de prototipação e entregas freqüentes de código funcionado, se possível em intervalos de 2 semanas.

11

Artigo: Eu uso metodologia ágil, e você? Se a equipe não é confiável, estabeleça estimativas junto com eles, ou seja, todos participam da medição do projeto. Faça reuniões diárias em pé, de aproximadamente 15 minutos, respondendo as seguintes perguntas: 1. O que nós conseguimos fazer ontem? 2. O que nós iremos fazer hoje? 3. O que pode nos impedir alcançar nosso objetivo? Classifique e priorize as atividades junto com seu cliente, deixando atividades de menor valor para o final de projeto. É quase que afirmar: faça do mais difícil para o mais fácil. Desta forma, novos requisitos podem ser trocados por requisitos de menor valor que seriam desenvolvidos mais para o final do projeto. Nos testes, pense que automação é muito bom para garantir que determinados comportamentos do software não sejam perdidos diante as alterações. Na fase de construção, isso não tem tanto valor. Recomendo aplicar técnicas baseadas em “testes comportamentais2” durante esta fase, pois são mais simples, mais econômicas e eficientes. Pratique isso por 3 meses e avalie os resultados. A receita final Mesmo entendendo que muitos executivos querem simplesmente comprar uma metodologia como um segredo mágico, fala-se a palavra certa e tudo funciona, não constatamos isso em nosso mundo real. Metodologia não se compra, se implanta. Depende dos próprios executivos, dos gerentes de projetos e principalmente do fator humano presente. Entenda-se por fator humano o respeito à intuição criativa dos clientes e desenvolvedores. Temos comprovado que quando se trabalha sério com propostas de mudanças e motivação na equipe, com três meses já alcançamos resultados diferentes. Para a autonomia técnica plena da equipe pode ser necessário mais tempo, entretanto quando sponsors percebem progresso, qualquer investimento se justifica e tudo fica mais fácil. A participação de um consultor externo fora da dinâmica dos projetos existentes tem se demonstrado um acelerador providencial. Apenas recomendamos cuidado para ratificar o conhecimento prático deste profissional, pois implantar ciclo de vida de desenvolvimento é 2 Testes Comportamentais ou Behavioral Tests: Técnicas de testes baseadas na interação do ser humano com os produtos desenvolvidos. Destaca-se pela facilidade de implantação e pelo baixo investimento. Para saber mais visite o site http://www.fcamara.com.br Sempre bem mais profundo que as teorias podem alcançar. A melhor forma de se certificar sobre o consultor é verificando seu histórico de realizações. Resumindo conclusivamente, é necessário entender a diferença entre risco e atividade. Quando você cadastra uma atividade em seu aplicativo específico de controle de atividades, você espera uma tarefa detalhada e um produto resultante desta atividade associado. Quando você cadastra um risco no mesmo aplicativo, o que fazer? Todo risco impõe uma mudança de atitude para que resultados diferentes aconteçam. Sucesso em seus projetos!

Fabio Camara ([email protected]) é MCT, MCP, MCAD, MCPD, MCITP, MCTS, MCSD.NET, MSF Practitioner, Certified ITIL Foundations e Certified SCRUM Master– Acredita em bons resultados em projetos com técnicas ágeis, principalmente para as características do mercado brasileiro. Ministra treinamentos e “coaching” para projetos conforme pode ser verificado no site http:// www.fcamara.com.br

12

Por dentro da Base Class Library

O MVP de Asp.Net Israel Aéce disponibilizou em seu site Projetando .Net (www.projetando.net) um material fantástico sobre Base Class Library. Veja uma pequena parte deste material neste artigo e faça o download totalmente grátis dos capítulos.

Link para download: http://www.projetando.net/Sections/ViewArticle.aspx?ArticleID=77 A Base Classe Library (também conhecida como BCL) é um conjunto de classes que o .NET disponibiliza para todas as linguagens que rodam sob o .NET Framework. Essa base encapsula várias funcionalidades que tornam o trabalho do desenvolvedor muito mais fácil. As classes contidas dentro da BCL são comuns para qualquer tipo de aplicação, ou seja, independentemente de tecnologia (ASP.NET, Windows Forms, WPF, etc.), você poderá consumir essas classes que, representam tarefas que são comumente utilizadas. A imagem abaixo exibe onde a BCL está encaixada dentro da plataforma .NET. A versão 2.0 adicionou novos tipos e namespaces, enriquecendo ainda mais esta estrutura. Essas classes vão desde novas coleções (tipadas) até novos namespaces, como é o caso do System.Transactions. Apesar do .NET Framework estar em sua versão 3.5, ele utiliza o .NET 2.0 como seu núcleo. A figura abaixo ilustra perfeitamente a posição do .NET 2.0 dentro do .NET 3.X. A BCL é composta por vários namespaces e, através dos capítulos abaixo, veremos detalhadamente cada um dos principais deles. A idéia é abordar o conteúdo mais útil ao dia-a-dia, mostrando exemplos em Visual Basic .NET e Visual C#. Sendo assim, nem todas as classes/ funcionalidades serão cobertas aqui, mas, para isso, poderá recorrer ao MSDN Library. Conteúdo Capítulo 1 – Tipos de dados e Interfaces Este capítulo abordará a arquitetura de tipos fornecido pelo .NET Framework, onde na primeira parte do capítulo, será abordado os tipos padrões e veremos como identificar se trata-se de um tipo valor ou referência. Além disso, analisaremos um problema grave, deixado de lado por muitos desenvolvedores, que é a questão do boxing e unboxing. Ainda nessa primeira parte, analisaremos alguns novos tipos introduzidos nesta versão do .NET Framework, em principal, os Generics. Na segunda e última parte do mesmo, vamos abordar as várias Interfaces que estão disponíveis para serem implementados em tipos customizados, fornecendo funcionalidades adicionais ao tipo criado. Capítulo 2 – Trabalhando com Coleções As coleções são componentes importantes em qualquer tipo de aplicação e, para isso, esse capítulo abordará extensamente o uso das mesmas, começando pelas coleções primárias, fornecidas desde as primeiras versões do .NET Framework até as novas coleções, introduzidas na versão 2.0 do .NET Framework, quais fazem uso dos Generics. Além das coleções, analisaremos as Interfaces disponíveis para podermos estender as funcionalidades existentes e customizarmos para o nosso cenário. Capítulo 3 – Utilização de Assemblies. Um Assembly é a menor unidade de reutilização, segurança e controle de versão. O Assembly é algo importante que deve ser analisado cuidadosamente, pois toda aplicação .NET depois de compilada gerará um Assembly. Este capítulo abordará a sua criação desde um utilitário de linha de comando até o Visual Studio .NET. Além disso, abordaremos também outros assuntos relacionados a Assemblies, como por exemplo, strong names, GAC (Global Assembly Cache), instaladores e arquivos de configuração. Capítulo 4 – Monitoramento e depuração de aplicações Toda e qualquer aplicação necessita de algum tipo de monitoramento de seu código para detectar possíveis problemas que possam acontecer e que devem ser analisados. O .NET Framework fornece várias classes que ajudam nesse monitoramento e, este capítulo, é responsável por apresentar essas classes que vão desde a manipulação do Event Log do Windows até classes que interagem com o WMI - Windows Management Instrumentation. Capítulo 5 – Manipulando o sistema de arquivos Grande parte das aplicações comerciais que temos atualmente manipulam arquivos. Esses arquivos são arquivos de bancos, arquivos de parceiros e fornecedores que servem para troca de informações. Enquanto os XML Web Services ainda não são uma realidade para muitas empresas, a manipulação de arquivos e seus respectivos conteúdos são ainda muito utilizados. Tendo esse cenário, o capítulo em questão abordará as principais classes contidas dentro do namespace System.IO para exem-

13

Por dentro da Base Class Library

Capítulo 6 – Serialização A serialização de dados é cada dia mais utilizada em aplicações. Por mais que isso aconteça nos bastidores, esse capítulo abordará desde o seu conceito até como implementá-la; e ainda, em seus diversos formatos, utilizando as classes fornecidas pelo .NET Framework 2.0. Além disso, analisaremos classes e Interfaces que temos disponíveis, que proporcionaram o processo de serialização e deserialização mais flexível, onde podemos customizar e interceptar cada um desses processos de acordo com a nossa necessidade.

Capítulo 7 – Globalização de Aplicações Cada vez mais se desenvolve softwares que podem ser acessados por várias pessoas de diferentes idiomas e de diferentes locais do mundo. Tendo esse cenário, é importante que a aplicação que estamos desenvolvendo seja possível ao usuário poder customizar o idioma que deseja visualizar os dados e ainda, poder criar a aplicação independente de qualquer cultura. Esse capítulo tem justamente essa finalidade, ou seja, de exibir o que o .NET Framework é capaz de fazer para atender essa necessidade que, torna-se cada vez mais comum.

Capítulo 8 – Criptografia Criptografia de dados é um ponto muito importante, nos mais diversos tipos de aplicações. Geralmente, em aplicações onde alguns dos dados são muito sigilosos, como é o caso de aplicações financeiras, quais mantêm os dados de seus clientes, é necessário que se mantenha esses dados seguros, pois, se esses dados caírem em mãos erradas, essas pessoas com más intenções, não consigam entender e/ou recuperar esses dados em sua forma legível. Esse capítulo abordará extensamente as classes responsáveis por criptografia e hashing que o .NET Framework disponibiliza, bem como utilizá-las e como aplicá-las ao dia-a-dia.

Capítulo 9 – Utilizando Code Access Security – CAS Toda aplicação que utiliza o Common Language Runtime (CLR) obrigatoriamente deve interagir com o sistema de segurança do mesmo. Quando a aplicação é executada, automaticamente é avaliado se ela tem ou não determinados privilégios. Dependendo das permissões que a aplicação tem, ela poderá rodar perfeitamente ou gerar erros relacionados a segurança. Code Access Security (também conhecido como CAS) é um mecanismo que ajuda limitar/conceder o acesso que o código que está querendo realizar, protegendo recursos e operações. Este capítulo abordará como utilizar o CAS, que é fornecido juntamente com o SDK do .NET Framework e, como configurar devidamente a aplicação para evitar problemas relacionados a segurança.

Capítulo 10 – Envio de Mensagens (E-mails) Envio de e-mails é muito comum em qualquer tipo de aplicação, seja ela uma aplicação para internet, uma aplicação para Windows ou até mesmo serviços que rodam sem uma intervenção do usuário. O .NET Framework fornece um namespace contendo classes e muitos outros tipos que podemos utilizar nas aplicação para habilitar o envio de e-mails e, conseqüentemente, torná-las muito mais dinâmicas e inteligentes.

Capítulo 11 – Criando Serviços do Windows Os Serviços do Windows (Windows Services), permitem-nos criar aplicações que rodam em “background” no sistema operacional. Estes serviços podem ser automaticamente inicializados quando o sistema operacional inicializar, podendo ainda ser pausado e reinicializado, sem apresentar nenhuma interface com o usuário. Esses serviços são ideais para ser usado em servidores ou em funcionalidades de longa duração que necessitem ser executadas de forma totalmente independente, sem a intervenção de um usuário. O capítulo corrente abordará desde a sua criação, depuração e instalação do mesmo.

Capítulo 12 – Interoperabilidade com componentes COM A Microsoft criou a plataforma .NET e, em pouco tempo, essa plataforma foi adotada por muitas e muitas empresas. Algo importante é que muitas dessas empresas, já tinham componentes COM que eram utilizados em massa nas aplicações e que são inviáveis para serem reescritos imediatamente. Felizmente a Microsoft pensou no legado e possibilita a interoperabilidade de componentes COM, interagindo com aplicações baseadas na plataforma .NET e vice-versa. Este capítulo mostrará os passos necessários para efetuar essa interoperabilidade entre as novas aplicações e o que já existe em código legado.

Capítulo 13 – Reflection Reflection é a habilidade de extrair informações de metadados de um determinado tipo, ou seja, quais parâmetros, métodos, entre outros membros um determinado tipo possui. Isso torna a aplicação bastante flexível, onde podemos extrair informações necessárias para podermos customizar e automatizar a criação de ferramentas e utilitários que auxiliam os próprios desenvolvedores. Além disso, permite a criação em runtime de Assemblies e como instanciar classes via programação. Esse capítulo propõe-se a explicar como criar esse tipo de funcionalidade dentro da aplicação.

Israel Aece (Microsoft MVP, MCP, MCAD, MCTS e MCT)

É desenvolvedor de software há aproximadamente 5 anos. Desde então utiliza a plataforma .NET da Microsoft, onde desenvolve sobre ela aplicativos voltados para Internet (ASP.NET), Windows Forms, Windows Services e, principalmente sistema distribuídos, utilizando Visual Basic .NET ou Visual C# .NET como linguagens.

14

Gerenciando Transações com Trasaction Scope no Asp.Net 2.0 Introdução Neste artigo vou explicar como utilizar o Transaction Scope, que é uma ferramenta que pode ajudar muito no controle de transações de sua aplicação. Também vou mostrar a configuração que deverá ser feita nos servidores para que ele possa funcionar adequadamente, pois muitas pessoas se esquecem deste passo e acabam tendo inúmeros problemas na implementação da funcionalidade em produção ou mesmo no ambiente de teste e desenvolvimento. O TransactionScope O .NET Framework 2.0 inclui o namespace System.Transactions que dá um grande suporte a transações distribuídas gerenciadas pelo Transaction Manager, incluindo Banco de Dados e Serviços de Mensagens(message queues). O namespace System.Transactions define a classe TransactionScope, que cria e gerencia transações distribuídas. Devido a sua facilidade de utilização e eficiência, é recomendado que você utilize a classe de TransactionScope para facilitar o controle de transações em sua aplicação, sem que seja necessário (você precise) interagir com a operação propriamente dita. O TransactionScope pode selecionar e gerenciar o ambiente de Transações automaticamente. O System.Transactions fornece uma estrutura de transações totalmente integrada ao .NET Framework, mas não se limitando ao ADO.NET. Utilizando o TransactionScope O TransactionScope é iniciado quando se cria um novo objeto TransactionScope. É altamente recomendado que a declaração do scope seja feito dentro da diretiva using, pois ela garante que o objeto dure somente o tempo necessário para sua utilização. Vamos aos exemplos: Adicione a referência no projeto ao System.Transaction. Inclua a referencia na Classe:

Incluindo o TransactionScope no Bloco de Codigo:

15

Gerenciando Transações com Trasaction Scope no Asp.Net 2.0 Completando a transação: Para “commitar” a transação inserimos uma instrução que será a ultima linha do using.

Obs: Caso ocorra algum problema na execução do bloco de código (dentro do using ) automaticamente a transação é abortada e o Transaction Maneger executa o Roll Back das alterações. RollBack: O RollBack é executado automaticamente quando ocorrer qualquer exceção no bloco que está sendo executado dentro da transação. Exemplo de utilização: No cenário abaixo, temos uma transação onde gravamos informações coletadas separadamente (endereço, dados pessoais, etc). Com o Transaction Scope temos a liberdade de gravar as informações separadamente. Suponhamos que estamos gravando o cliente e após gravar o Endereço e o Telefone do Cliente da um problema na gravação dos Dados pessoais do mesmo sendo assim o transactionScope faz o Roll Back de tudo! Voltando o objeto ao seu estado original.

16

Gerenciando Transações com Trasaction Scope no Asp.Net 2.0

17

Gerenciando Transações com Trasaction Scope no Asp.Net 2.0

Caso ocorra algum erro durante a gravação de algum desses metodos o TrasactionScope faz o RollBack de tudo, como dito anteriormente. Não havendo nenhum problema a transação é completada normalmente. A configuração do ambiente Para que o transactionScope funcione no servidor precisamos fazer algumas configurações, mais somente se o servidor for XP sp2 pra cima! Em Win2000 não precisamos mexer em nada! Menu Iniciar/Configurações/Painel de Controle/Ferramentas administrativas. Abra o Serviço de Componentes (como na figura abaixo):

18

Gerenciando Transações com Trasaction Scope no Asp.Net 2.0

Clique com o botão direito do Mouse em Meu Computador(Como na figura Abaixo) e selecione a opção Propriedades.

Na janela Clique na aba MSDTC e depois em Configurações de Segurança.

19

Gerenciando Transações com Trasaction Scope no Asp.Net 2.0 Habilite as opções:

- Acesso ao DTC de Rede. - Permitir Clientes Remotos - Permitir Administração Remota - Permitir Entrada - Permitir Saída - Nenhuma Autenticação Necessária - Permitir Transações do Protocolo TIP - Habilitar Transações XA (como a figura abaixo)

Lembrando que essa configuração só deve ser feita em ambientes com sistema operacional Win XP ou Win Server2003. E a mesma deve ser feita tanto no servidor de WEB quanto no de Banco de Dados. Espero que este artigo contribua com o seu crescimento.

Abraço e bons projetos 

Fabiano Belmonte Senior Architect da Saraiva.COM, especialista em aplicações e-Business com larga experiência em B2B (Submarino.Com, Americanas.Com e Saraiva.Com). Trabalha há 5 anos com a tecnologia .Net, aplicando conhecimentos nas diversas áreas: instituições financeiras (sistema SPB), e-Commerce, gerenciamento logístico, entre outras.

RECORDAR É VIVER!

21

2º XNA Challenge e uma História de Sucesso

A Microsoft Brasil promove diversas competições e eventos sobre suas ferramentas e tecnologias durante todos os anos. Profissionais de TI e estudantes de todo o Brasil participam massivamente nestes eventos, em busca de mais conhecimento e oportunidades para a carreira. Neste contexto, no final de 2006 foi anunciado o primeiro XNA Challenge que recebeu dezenas de projetos inscritos e teve a participação de centenas de pessoas na final em Fevereiro de 2007. Toda a repercussão marcou no país a data em que uma multidão de programadores (mesmo os mais iniciantes) começaram a desenvolver jogos sob uma tecnologia nova chamada XNA. O XNA é um framework que permite aos programadores produzir um jogo mais rápido ao utilizar um ambiente orientado aos jogos com métodos e controles especiais. Baseado na linguagem de programação chamada C#, o XNA configura-se como uma extensão ao Visual Studio, mesmo o Express Edition. Atualmente está na versão 2.0 e já existem expectativas e boatos sobre sua próxima versão, a 3.0. Como tudo que é bom, a gente pede bis. E eles atendem! Anunciado no segundo semestre de 2007, o 2o. XNA Challenge teve o tema "Meio Ambiente Sustentável", diretamente ligado a Imagine Cup '08, que definiu o challenge como um trampolim para a competição internacional já que em 2008 haveria uma nova categoria, a Game Development. Tudo definido, tempo passando e diversos competidores programando. Dos projetos submetidos, os cinco melhores foram selecionados para participar de uma final em São Paulo aberta ao público que iria definir o campeão, o segundo e o terceiro (além de um prêmio adicional, de maior indicação do público presente). Dos finalistas, dois projetos são Grupo de Projeto e Desenvolvimento de Jogos (GPDJ) da Unicamp, que comentarei mais a respeito. Voltando ao challenge, a criatividade rolou solta. Bruno Evangelista (UFMG) criou "Alice, os Parasitas e o Livro do Tempo" em que o jogador encarna uma menina com poderes especiais para salvar o planeta de seres malignos. Da Unesp, Guilherme Campos apareceu com "City Rain", um jogo a lá Sim City em que o jogador constrói uma cidade na posição de prefeito e aprende sobre ecologia e urbanismo. Outro competidor, José Lourenço (UNIVAP), participou com "Great Adventures of Ted" onde você precisa juntar os cristais e combater o vilão Shredder.

Carolina Gomes (GPDJ/Unicamp) desenvolveu "Gariman" em que ela definiu: "o jogador encarna um simpático lixeiro que tem como ambição ser aprovado como membro dos Gariman, o esquadrão de elite que viaja pelo mundo a limpar cidades". O game foi desenvolvido em uma equipe maior incluindo Thiago Coser, André Esteve e Lucas Bueno, todos integrantes do GPDJ da Unicamp, e o objetivo final é a conquista na França da Imagine Cup '08.

22

2º XNA Challenge e uma História de Sucesso

Por fim, o último competidor e campeão do torneio foi Vítor Antoniolli (GPDJ/Unicamp) com o game "Recicle" em que a missão é despoluir um rio coletando corretamente os lixos recicláveis. Recicle foi desenvolvido por Vítor Antoniolli e Zhenlei Ji, com participação de Fábio Reis, todos do GPDJ da Unicamp. Além do prêmio do júri o game também levou o prêmio adicional decidido pelo público do evento. A esta altura você deve estar se perguntando de onde saiu esse grupo de jogos da Unicamp chamado GPDJ. Pois bem, contarei sobre a história do grupo e o sucesso que felizmente obtivemos no mundo dos games, ao menos até o momento. Antes, devo me apresentar: atuo como coordenador do grupo. O GPDJ formou-se de uma iniciativa de dois professores do Instituto de Computação da Unicamp, em que eles procuravam alunos para desenvolver um teste na férias. Por causa do período, somente 4 alunos deixaram as férias de lado para 15 dias de programação e dessa experiência nasceu o iCoco (vice-campeão SBGames 2007). No projeto iCoco atuei já como coordenador, ajudando os alunos nos entraves mas não durante toda a programação. Em seguida, mais alunos aderiram ao grupo e iniciou-se o projeto Gariman, em Agosto. Como alguns dos alunos não estavam diretamente ligados com o projeto Gariman, em Dezembro eles começaram a produção do Recicle pensando diretamente no 2o. XNA Challenge. Felizmente, como mencionado, ambos foram selecionados entre os 5 finalistas (40%). Em seguida, ambos os projetos foram submetidos (com modificações) para a Imagine Cup '08 e dos 8 projetos brasileiros aceitos para o Round 2 dois são do GPDJ (25%). Tamanho sucesso rendeu ao grupo e integrantes notícias em jornais e na internet, além de entrevistas. Como já conversei com amigos a respeito e nem sempre o retorno é rápido para outros grupos, pensei em montar uma fórmula mágica. A mais próxima que cheguei foi: junte programadores interessados e motivados (mesmo sem receber nada, e sem saber o que pode acontecer no futuro) e adicione artistas e modeladores experientes (crucial no caso do GPDJ). Por fim, se alguém desejar ajudar em outras questões como publicidade e testes, não deixe de fora.

Mais detalhes do grupo, acesse http://www.lms.ic.unicamp.br/grupo.jogos

Bruno Melo ([email protected]) é graduando em Engenharia de Computação na Universidade Estadual de Campinas (Unicamp). Microsoft Student Partner, campeão nacional 2º. XNA Challenge, coordenador do Grupo de Projeto e Desenvolvimento de Jogos da Unicamp e desenvolvedor do Microsoft Innovation Center/Interop.

23

Programa MSP – Microsoft Student Partners

Pelo contrário do que muitas pessoas pensam; participar de programas patrocinados pela Microsoft não exige que você venda sua alma ao diabo, muito pelo contrário, diversos programas incentivam e impulsionam muitas decisões do nosso futuro sem cobrar nada por isso. Dois exemplos bem reais destes programas são MVP [Microsoft Most Valuable Professional] e MSP [Microsoft Student Partners]. Ambos os programas visam incentivar as pessoas que de uma forma direta ou indireta ajudam outras pessoas a aprender alguma tecnologia da Microsoft. O programa MVP é voltado aos profissionais do mercado de trabalho que se destacam nas comunidades de tecnologias. Os profissionais que cedem um pouco de seu tempo para ajudar a outras pessoas tirando dúvidas, dando treinamentos, cursos, palestras, escrevendo artigos, tem chance de conseguir um titulo de MVP. O responsável pelo programa na América Latina é o brasileiro Leonardo Tolomelli, que por sinal nos cedeu uma entrevista na edição 0 – Junho/2007. Já o programa MSP é voltado exclusivamente para estudantes, não importa se é de nível médio ou de doutorado, para ser um MSP tem que ser estudante. O ingresso para o programa é mediante indicações e tarefas que são realizadas em universidades ou escolas, com o intuito de divulgar tecnologias aos estudantes interessados. A base do programa é explorar os talentos dos alunos, fazendo-os crescer pessoal e profissionalmente. Cada MSP é atrelado a uma instituição de ensino, e deve apresentar à Microsoft comprovante de rendimento nos estudos, além de divulgar as tecnologias a outros estudantes através de palestras, workshops, cursos, e quaisquer outros eventos que possam levar conhecimento a estes estudantes. A maioria dos MSPs é ou foi líder de célula acadêmica. As células acadêmicas são os nomes dos grupos de estudantes que se unem com o intuito de estudar, aprender e divulgar alguma ou várias tecnologias Microsoft, seja na parte de Desenvolvimento de Software ou em InfraEstrutura de TI. Uma célula acadêmica é apoiada pela Microsoft, que fornece material para que os alunos que participam da célula possam aprender aquela tecnologia e que consiga empregá-la no mercado de trabalho. Ainda na área acadêmica, o programa Imagine Cup é a maior e mais completa competição de tecnologia do mundo, revelando diversos [talentos] alunos de destaque ao redor do mundo que conseguem chances para ingressar profissionalmente na Microsoft. Contando com competidores de mais de 100 países e de nove categorias diferentes, a Imagine Cup a cada ano aborda um tema atual e de grande importância para o planeta. O Brasil tem nome de peso na competição, e sempre volta como um dos campeões em alguma categoria. Em 2007 a final da competição foi na Coréia, este ano será na França. Além da viagem, hospedagem, alimentação e passeio turístico, gratuito a todos os competidores que forem pra final, dependendo da categoria competida, a equipe ganhadora ainda ganha uma bolada de US$25.000 (isso mesmo, 25 mil dólares!). Em 2007, na categoria de Software Embarcado, a equipe “TriventDreams ED” ganhou em primeiro lugar, e a equipe “Papapaçoca” conseguiu o terceiro lugar na categoria de Filme de Curta Metragem, ambas equipes possuíam MSPs em seu elenco. No Brasil, a área acadêmica é representada por Amintas Neto e sua equipe que com muita colaboração, responsabilidade e bom humor nos ajudam a estabelecer uma base acadêmica nas universidades do país. Para mais detalhes sobre os programas acadêmicos da Microsoft, acesse: http://www.microsoft.com/brasil/educacao/

Diego Nogare é Graduado em Ciência da Computação e Pós-Graduado em Engenharia de Computação com ênfase em Desenvolvimento Web com .NET, Colaborador do Portal Linha de Código, co-Líder do grupo de usuários Codificando .NET, co-Líder dos Microsoft Student Partners (MSP) de São Paulo, possui certificações MCP e MCTS em SQL Server 2005, é palestrante em eventos da Microsoft, Codificando .NET e INETA BR, mantém o site www.diegonogare.net.

24

Coluna: Desvendando o SQL Server Pessoal, nesta série de artigos para a revista Codificando e-Magazine, estou demonstrando o uso de XML com SQL Server 2005. Os seguintes tópicos estarão sendo abordados: Dados XML e tecnologia SQL Server Modificando dados XML Criando Índices XML

SQL SERVER

Dados XML e Tecnologia SQL Server O SQL Server 2005 oferece diversas opções para consultar dados XML. Possui um modo extremamente fácil de usar SELECT com FOR XML nas consultas desenvolvidas em Transact-SQL (disponível também na versão 2000 do SQL Server). FOR XML converte o resultado do SELECT em estrutura XML e apresenta diversos modos de apresentação: RAW, AUTO, PATH e EXPLICITY Modo de apresentação FOR XML RAW: Default para o FOR XML, este modo cria um novo elemento XML identificado como para cada linha no resultado apresentado. Um atributo XML é adicionado ao elemento para cada coluna no SELECT, usando o nome da coluna como nome do atributo. Modo de apresentação FOR XML AUTO: Para cada tabela especificada no SELECT, FOR XML AUTO cria um novo nível na estrutura XML. A ordem de aninhamento dos dados XML é baseado na ordem das colunas como foram declaradas na cláusula SELECT. Modo de apresentação FOR XML PATH: Novo no SQL Server 2005; os desenvolvedores possuem controle total sobre como a estrutura XML é gerada. Cada coluna é configurada de forma independente, permitindo a utilização de ALIAS (se a coluna não receber um ALIAS, o default é usado da mesma forma como em FOR XML RAW). Modo de apresentação FOR XML EXPLICIT: Fornece a melhor opção para os desenvolvedores controlarem a geração de complexas estruturas XML, os desenvolvedores possuem controle total sobre o número de níveis que a estrutura XML possui. Agora, iremos praticar, usando o banco de dados criado anteriormente no segundo artigo da coluna “Desvendando o SQL Server”. Exemplos: USE CodificandoXML GO --- 1. exemplo basico de FOR XML RAW select * from UniversalLog FOR XML RAW --- 2. exemplo basico de FOR XML AUTO select * from UniversalLog FOR XML AUTO --- 3. exemplo basico de FOR XML PATH select * from UniversalLog FOR XML PATH --- 4. exemplo basico de FOR XML EXPLICIT select * from UniversalLog FOR XML EXPLICIT

25

Coluna: Desvendando o SQL Server Suporte para valores NULL no XML: Por default o mecanismo de formatação XML do SQL Server 2005 ignora valores NULL, O SQL Server 2005 pode ser instruído a gerar linhas “vazias” para colunas com valores NULL. Utiliza-se XSINIL para gerar linhas “vazias” Exemplos: declare @myXML XML SET @myXML = (select 100 'coluna 1', 200 'coluna 2', NULL 'coluna 3', 400 'coluna 4'

SQL SERVER

FOR XML RAW) SELECT @myXML declare @myXML XML SET @myXML = (select 100 'coluna 1', 200 'coluna 2', NULL 'coluna 3', 400 'coluna 4' FOR XML RAW, ELEMENTS XSINIL) SELECT @myXML XQUERY e XPATH: O W3C desenvolveu duas linguagens de consultas que fornecem uma poderosa capacidade para manipular estruturas XML. XQUERY é uma linguagem de consulta criada para dados XML. Exemplo com XPATH: DECLARE @Date nvarchar(50) DECLARE @UID nvarchar(256) SET @UID = USER_NAME(); SET @Date = GETDATE(); SELECT TOP(1) LogRecord.query('<errorReport issuedby="{sql:variable("@UID")}" date="{sql:variable("@Date")}"/>'), ( SELECT LogRecord.query(' for $rec in /logRecord, $err in $rec/error order by $rec/@timestamp descending return <error number="{data($err/@number)}" timestamp="{data($rec/@timestamp)}" server="{data ($rec/@machine)}"> <message>{data($err/message)} <module>{data($err/module)} ') FROM UniversalLog WHERE LogRecord.exist('/logRecord/error') = 1 FOR XML PATH(''),TYPE ) FROM UniversalLog FOR XML PATH(''), ROOT('UniversalLog'), TYPE

26

Coluna: Desvendando o SQL Server Exemplo com XQUERY: SELECT LogRecord.value('(/logRecord/error/@number)[1]','int') AS [ErrorNumber], LogRecord.value('(/logRecord/@timestamp)[1]','nvarchar(20)') AS [TimeStamp], LogRecord.value('(/logRecord/@machine)[1]','nvarchar(10)') AS [ServerName], LogRecord.value('(/logRecord/error/message)[1]','nvarchar(100)') AS [Message], LogRecord.value('(/logRecord/error/module)[1]','nvarchar(20)') AS [Module]

SQL SERVER

FROM UniversalLog WHERE LogRecord.exist('/logRecord/error') = 1 Modificando dados XML Dependendo de como os dados XML foram armazenados, o SQL Server 2005 oferece duas tecnologias distintas para modificar dados, se os dados estão armazenados em coluna XML, pode-se utilizar o método modify() para incluir, apagar ou atualizar os dados XML(Neste artigo estaremos focando o método modify()). Por outro lado, se os dados estão armazenados em estrutura relacional, mas processados como XML, pode-se usar FOR XML ou SQLXML. A linguagem XQUERY não oferece palavras-chave para manipulação de dados, mas a Microsoft estendeu as capacidades da XQUERY no SQL Server 2005 incluindo um conjunto de instruções para que o desenvolvedor possa adicionar atualizar e apagar dados XML (XML DML = Data Manipulation Language). O método Modify() recebe um único parâmetro de entrada que obriga a validação XML DML e executa no XML. Exemplo para remover empregados com códigos 1, 2 e 3 dos seus respectivos departamentos (7, 4, 1) usando a palavra-chave delete: Set @a.modify(„delete /Deptos/Depto[@id=7] /Funcionarios/Func[@id=1]‟ Set @a.modify(„delete /Deptos/Depto[@id=4] /Funcionarios/Func[@id=2]‟ Set @a.modify(„delete /Deptos/Depto[@id=1] /Funcionarios/Func[@id=3]‟ Existem três palavras-chave no XML DML definidas pelo SQL Server 2005: Insert, replace value of e delete. Como usar o método modify() no T-SQL UPDATE? update text in the first manufacturing step SET @myDoc.modify(' replace value of (/Root/Location/step[1]/text())[1] with "new text describing the manu step" ') Exemplos: USE CodificandoXML GO UPDATE UniversalLog SET LogRecord.modify(' insert <message>SQL Server service is starting into logRecord[1]') WHERE ApplicationName = 'SalesApp'

27

Coluna: Desvendando o SQL Server UPDATE UniversalLog SET LogRecord.modify(' replace value of (logRecord/information/message)[1] with "Not enough memory"') WHERE ApplicationName = 'HoursReport' UPDATE UniversalLog

SQL SERVER

SET LogRecord.modify(' delete logRecord/post') WHERE ApplicationName = 'CustomerService' SELECT * FROM UniversalLog Criando Índices XML Você pode criar índices XML usando a mesma definição do Transact SQL para criar índices relacionais. A sintaxe para criar um índice primário XML segue abaixo: CREATE PRIMARY XML INDEX Index_Identifier ON table_name (XML_typed_column_name); Podem-se criar índices secundários sendo que, para este tipo de índice, existem 3 tipos distintos: PATH, VALUE e PROPERTY. Sintaxe para índice secundário PATH XML: CREATE XML INDEX Secondary_Index_Identifier ON table_name (XML_typed_column_name); USING XML INDEX Primary_Index_Identifier FOR PATH Sintaxe para índice secundário VALUE XML: CREATE XML INDEX Secondary_Index_Identifier ON table_name (XML_typed_column_name); USING XML INDEX Primary_Index_Identifier FOR VALUE Sintaxe para índice secundário PROPERTY XML: CREATE XML INDEX Secondary_Index_Identifier ON table_name (XML_typed_column_name); USING XML INDEX Primary_Index_Identifier FOR PROPERTY Por enquanto ficaremos por aqui finalizando os estudos de XML e SQL Server 2005. Preparem-se, a viagem promete! Na próxima edição estarei apresentando algumas novas funcionalidades do SQL Server 2008.

Alexandre Lopes atua como consultor especialista em SQL Server em projetos da Y2K-TI (http://www.y2k-ti.com.br). Possui mais de 10 anos de experiência na área de TI, sendo certificado Microsoft com os títulos MCT, MCSE e MCDBA. Como instrutor MCT (Microsoft Certified Trainer) possui cerca de 4.200 horas ministrando treinamento oficial Microsoft.

29

Cinema MEU NOME NÃO É JOHNNY http://www.meunomenaoejohnnyfilme.com.br/ O cinema brasileiro mais uma vez nos contempla com um anti-herói com cara de mocinho. Na realidade Johnny, ou melhor, João Guilherme Estrella, é o herói do filme. A maioria de nós torce por seu triunfo; chora por suas angústias, se emociona com a sua trajetória. Meu Nome Não É Johnny eleva ainda mais o nível do cinema brasileiro, chegando ao patamar dos grandes filmes europeus. Mas o objetivo aqui não é fazer comparativos, seja com o belíssimo mercado europeu ou com a bilionária fábrica de cinema hollywoodiana. A produtora Mariza Leão deu a tacada certa na escolha do elenco, colocando a frente, Selton Mello no papel do carismático Johnny, Julia Lemmertz como mãe do protagonista e também a doidinha Cléo Pires, inspiração e perdição do nosso herói. Mariza apostou forte no diretor Mauro Lima, que até então fez seus melhores trabalhos na música, produzindo e dirigindo bons vídeo-clipes e assinando alguns arranjos musicais. Mauro mandou bem na dinâmica dos diálogos. Ok, nobres, como de costume, chega de ladainha e vamos pra pancada: análise do filme! “O que é iiiiissso, vééééei? Que filme é esse? Alucinante, empolgante, vééééi, me fala aí!?”. Essa pérola saiu de um brother, que prefiro manter anônimo, mas que retrata o sentimento de quem assiste ao filme. Johhny, um playboy de classe média-alta, adorado pelos pais e muito popular entre os amigos, vive sempre acelerado, bom anfitrião das festas promovidas que ocorrem em sua mansão. Consumindo uma droguinha aqui, outra ali, mas nada pra deixá-lo doidão, até que vê uma excelente oportunidade de negócio naquele movimento todo. Compra uma pequena quantidade e revende. Lucro certo. Aumenta o volume de compra e melhora o nível das festas. O dinheiro entra e sai muito fácil da mão de Johnny. Numa das festanças conhece Sofia, interpretada por Cléo Pires, e tem um romance avassalador. Numa grande transação, Johnny vai torrar seu dinheiro na Europa, com sua doce amada. Cenas dramáticas se misturam com momentos hilários e por que não dizer impagáveis, como a chegada de um novo chefe na prisão. O novo big boss, interpretado por Luis Miranda (da trupe do Sob Nova Direção) chega pilhado pedindo “Meque Donáud”, “meque nuguétis” e outras iguarias com sua gíria hilariante. É dele também um dos momentos mais engraçados do filme, quando Johnny é forçado „a traduzir um diálogo entre brasileiros e africanos. Cássia Kiss, também tem uma atuação interessante no papel de juíza. Ela consegue transmitir um forte sentimento de angústia, momentos de reflexão e muita energia. Fique atento ao postal enviado pela juíza. Não perca tempo. Vá contemplar o cinema nacional com esse bom filme. Altamente recomendado. Emerson Facunte

- Curtindo sua fase de filmes nacionais

30

Blogs, Foruns e Links

Blogs: Alexandre Tarifa: http://blogs.vstsrocks.com.br/alexandretarifa/default.aspx Emerson Facunte: http://www.facunte.com.br Diego Nogare: http://www.diegonogare.net

Fórum (Endereços para Entrar no Grupo): Codificando .NET: [email protected] XNA-BR: [email protected]

Sites Recomendados: Visual Studio 2008: http://msdn2.microsoft.com/en-us/vstudio/aa700830.aspx SQL Server CTP: http://www.microsoft.com/sqlserver/2008/en/us/trial-software.aspx

31

.Close() Windows Forms... também conhecida de Desktop, winforms, client, aplicaçãozinha que se instala, etc... é um tipo de aplicação utilizado a alguns anos (desde a era VB) em muitas empresas como padrão de interface de aplicações. Como todas as outras tecnologias sofreu muitas alterações durante esses anos, e dentro da plataforma .Net foi incorporada oficialmente como Windows Application e a versão mais recente é a 2.0. Muitas pessoas dizem que seria o fim das aplicações Windows Forms com o domínio das aplicações web... que domínio? Enfim, ninguém pode negar que desenvolver uma aplicação Windows Forms é muito mais produtivo do que uma aplicação web... mas tudo bem, pouco importa se o desenvolvedor tem mais trabalho ou não... pensando no cliente... uma aplicação Windows Forms também oferece uma produtividade MUITO superior... e não venham me dizer que os frameworks AJAX da vida oferece uma produtividade semelhante que é IMPOSSÍVEL. Tecnicamente a justificativa é simples: Windows Forms – todo o poder do computador do cliente. Web – todo o poder (pouco) do Browser. Agora, se pensarmos em distribuição, é inegável também que é muito mais simples distribuir uma aplicação Web... mesmo com recursos novos como o Click Once, que utiliza Web para distribuir... podemos dizer que Web tem uma vantagem boa. Porém, como grandes partes das aplicações Windows Forms são feitas como solução para ambientes coorporativos, ai o cenário muda... distribuir Windows Forms fica tão fácil como uma aplicação Web. Acredito que a morte do Windows Forms não viria devido às aplicações Web. Finalizado essa discussão agora entra a briga mais acirrada. A Microsoft lançou recentemente as aplicações WPF (Windows Presentation Foundation) que é uma revolução do Windows Forms com um ambiente gráfico mais rico (3D) oferecendo recursos de interface realmente muito ricos... mais ricos do que Windows forms. Fazendo uma comparação boba: Asp.Net – Classe média, Windows Forms – Classe Alta e WPF – Milionários. Porém tudo tem um custo. Hoje ainda, mesmo com o Visual Studio 2008, é muito mais produtivo desenvolver uma aplicação Windows Forms... são mais de 10 anos de maturidade e ferramentas evoluindo. Ainda sim, muitas aplicações vão ser feitas em WPF. Principais razões: Modismo, vão dizer por ai que é legal e algumas realmente por necessitar dos recursos sensacionais do WPF. Agora, aplicações comerciais... faturamento, contas a pagar, BI, folha de pagamento, etc etc etc... não existe a menor razão para isso.

Alexandre Tarifa é MVP Visual Developer Visual Basic .Net, bacharel/pós graduado em Ciência da Computação, trabalha em diversos projetos. Tem participado de diversos projetos que começam como Web e terminam com Smart Client. Especialista .Net e Líder de Projetos na ITGROUP (www.itgroup.com.br), editor da revista Codificando e-Magazine e fanático torcedor do São Paulo Futebol Clube. Blog: www.vstsrocks.com.br/alexandretarifa.

Related Documents

Codificando E Magazine5
November 2019 0
Codificando E Magazine7
November 2019 0
Codificando E Magazine4
November 2019 0
Codificando E Magazine3
November 2019 0