codificando-e-magazine15

96

Upload: johnvmartins

Post on 24-Jun-2015

604 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: codificando-e-magazine15
Page 2: codificando-e-magazine15

Fale com Editor

É muito importante para a equipe saber a sua opinião sobre a revis-ta, caso tenha alguma critica, su-gestão, ou elogio entre em conta-to. Caso tenha interesse em publicar um artigo na revista envie o título e um resumo do tema em formato Word.

[email protected]

EDITORES Alexandre Tarifa Diego Nogare Emerson Facunte Sergio Gonçalves REVISÃO Felipe Pocchini Fernanda Sallai EDITORAÇÃO E DIAGRAMAÇÃO Adriano Almeida Fernanda Sallai COLABORADORES Alexandre Marcondes Caio Azevedo Cleyton Santana de Sousa Diego Nogare Djonatas Tenfen Felipe Pocchini Fernanda Sallai Leandro Alves Santos Fabiano Belmonte Fábio Luiz Pessoa Campinho Fabrício Sanches Ítalo Chesley Jensen Clayton Juliano Schimiguel Laerte Junior Marcel Medina Márcio Fábio Althmann Rodrigo José Santi Sara Barbosa Vinicius Quaiato

Produzido por:

www.codificando.net

Edição 15 Número 15 Ano 04 2010

Sumário

04:. Editorial 96:. .Close ( )

15:. Temperaturas do MVP Summit

2010 com Power Pivot

49:. Uso do Microsoft Project des-

crevendo suas caracterísiticas

24:. Criando o seu Próprio ORM

18:. Aplicações com “N” camadas

em ASP.Net - Parte IV Final

39:. SQL Reporting Service 2005

Parte V

55:. Novidades em Desenvolvimen-

to no Sharepoint 2010

65:. JQuery 1.4 - Novidades

11:. Introdução a Expression Blend 3

05 :. Eventos: Um Exemplo Prático

69:. Copa Microsoft de Talentos

67:. C# 4.0 -Tipos Dinâmicos

Page 3: codificando-e-magazine15
Page 4: codificando-e-magazine15

Diego Nogare [email protected]

Fala galera, essa edição da revista marca mais um divisor de águas no Codificando .Net! Seguindo o espírito da nossa comunidade de promover os membros ativos e que acredi-tam que o compartilhamento de conhecimento altruísta é algo que engrandece nosso país e faz a diferença entre nós, profissionais de tecnologia da informação. Digo que esta edição é diferenciada, porque marca a transição da Editoração da revista Codificando .Net e-Magazine para a Fernanda Sallai. Ela vem desenvolvendo um traba-lho fantástico com a revista, e nada mais justo do que retribuir o trabalho dela junto à nossa comunidade colocando-a a frente das atividades que faz. Não deixarei completamente a edição da revista, vou me manter no time, mas só auxili-ando a Fernanda no que for preciso (não farei praticamente nada). Bom, depois de fazer a comunicação oficial desta mudança na revista, vou comentar so-bre outro fator bem interessante desta edição: A Copa Microsoft de Talentos. A Copa foi realizada por mais de 8.000 participantes em todo o território nacional, ain-da estamos nas quartas-de-final, mas agora só 120 participantes passaram. Essa Copa foi criada para divulgar os novos produtos lançados este ano e as pessoas que forem as-sistindo as apresentações e realizando as provas vão acumulando pontos. Aconteceram vários eventos através de Webcast – inclusive fui moderador na apresentação de SQL Server

2008 R2 – e também realizaram 17 eventos presenciais em vários estados. Esta edição da revista trás fotos e relatos de como foram esses eventos presenciais nos estados, feitos por membros da comunidade que acompanharam de perto o evento. Quero deixar um agradecimento especial a todos eles, que colaboraram para permitir que pessoal de ou-tros estados pudessem sentir como foram os eventos. Pra finalizar, não menos importante, os artigos que foram aprovados nesta edição estão com um nível bastante elevado. Praticamente todos os artigos são de membros da co-munidade que nos procuraram para publicar os materiais. Se você tiver algum artigo e quiser publicar com a revista, pode nos enviar um e-mail para [email protected]

Editorial

Edição 15 Número 15 Ano 04 2010

Page 5: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 5555

Eventos: Um exemplo prático

Nesse artigo, veremos como efetuar a im-plementação de um evento que indique o progresso de um processamento efetuado dentro de uma classe. O que é um evento? Um evento é uma mensagem disparada por um objeto indicando alguma ação exe-cutada. Por exemplo, temos o evento Click de um objeto Button que é disparado sem-pre que um usuário pressiona e solta esse objeto, ou o evento Shown de um objeto Form, que indica que o Form está sendo mostrado pela primeira vez. Da mesma forma que podemos responder a esses e-ventos, podemos criar nossos próprios e-ventos e o usuário de nossa classe pode respondê-los. Projeto que será criado Imagine um caso em que o usuário selecio-na vários arquivos de texto e clica em um botão em que os arquivos selecionados se-rão processados. Dependendo do tamanho de cada arquivo, da quantidade de arqui-vos selecionados, do computador do usuá-rio, etc., essa tarefa pode demorar. Com a tela do aplicativo parada, o usuário pode imaginar que o aplicativo travou e pode tentar fechá-lo ou tentar reiniciar o compu-tador.

Isso pode ser evitado se, durante o pro-cessamento dos arquivos, nós informar-mos ao usuário o que está ocorrendo in-ternamente através do formulário da a-plicação. Então, vamos criar um aplicativo que simula o processamento de arquivos e indica ao usuário o status desse proces-samento. Vamos ao exemplo prático? Escrevendo a classe que dispara o evento Crie um projeto no Visual Studio do tipo Class Library com o nome de Arquivos e adicione uma classe ao projeto com o no-me de Arquivos como podemos ver nas Figuras 1 e 2. O escopo dessa classe será public. Veja a declaração da classe na Listagem 1.

Por: Leandro Alves Santos

Figura 1 – Criando o projeto Arquivos.

Page 6: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 6666

Na Listagem 4, criamos o método que simula o processamento dos arquivos, efetuamos um looping no objeto arqui-vos, percorrendo cada string e incluímos uma chamada ao método Sleep(), simu-lando um tempo de processamento em cada arquivo.

Antes de escrever o código do nosso e-vento, vamos criar a classe que conterá os dados do nosso evento. Essa classe herda da classe EventArgs. Essa classe conterá uma variável que va-mos utilizar para passar o nome do ar-quivo que será processado para a classe que vai responder ao nosso evento. Essa variável será privada e incluiremos uma propriedade para acessá-la. Notem na Listagem 5 que a nossa pro-priedade contém o método set declarado

namespace Arquivos

{

public class Arquivos

{

}

}

Na Listagem 2, vamos declarar um membro da classe do tipo StringCollecti-on que conterá o nome dos arquivos a serem processados e no construtor da classe, vamos preencher esse objeto com nomes de arquivos para fazermos a si-mulação.

Também teremos nessa classe, uma pro-priedade que retorna o número de arqui-vos a serem processados. Isso é mostra-do na Listagem 3.

Eventos: Um exemplo prático

Figura 2 – Adicionando a classe Arquivos ao nosso projeto.

Listagem 1 – Declaração da classe Arquivos.

Listagem 2 – Código criado para gerar a

Listagem 3 – Propriedade que retorna a quantidade de arquivos.

Listagem 4 – Primeira versão do método de processamento.

Page 7: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 7777

gate nesse caso, é utilizado como uma ponte entre o objeto que disparou o e-vento e o objeto que tratará esse evento.

Estamos quase finalizando a classe ar-quivo. Agora teremos que revisitar o mé-todo CarregarArquivos() para disparar o evento quando um arquivo estiver pres-tes a ser processado. Veja a nova versão do método na Listagem 7. Primeiro cria-mos um objeto do tipo CarregandoAr-quivoEventArgs, e atribuímos a string com o nome do arquivo a propriedade NomeArquivo do objeto. Depois verifi-camos se o evento é nulo e caso ele não seja nulo, disparamos o evento passando o objeto que está disparando o evento e o objeto do tipo CarregandoArquivoE-ventArgs que contém o nome do arqui-vo. Por que tenho que verificar se um evento é nulo?

Caso o usuário de sua classe não tenha criado nenhum método que responda ao evento, o evento será nulo e quando ten-tarmos dispará-lo, ocorrerá uma exceção NullReferenceException.

com o escopo internal. Quando declara-mos um membro como internal, impedi-mos que esse membro seja acessado fora do assembly em que a classe foi criada. Fizemos isso para impedir que o método que responde ao nosso evento possa mo-dificá-la.

Agora vamos declarar o delegate e o e-vento da classe. Veja na Listagem 6 que o delegate contém uma assinatura, seu retorno é void, e os parâmetros são do tipo object e CarregandoArquivoEven-tArgs. No parâmetro do tipo object, pas-saremos uma referência da classe que disparou o evento e no parâmetro do ti-po CarregandoArquivoEventArgs, pas-saremos uma referência a um objeto cria-do na nossa classe e que conterá o nome do arquivo que será processado. Mas o que é um delegate?

Para capturarmos um evento e efetuar-mos alguma ação com base nesse evento, precisamos de um delegate. Um delegate é uma classe que contém uma referência para um método. Basicamente, um dele-

Eventos: Um exemplo prático

Listagem 5 – Classe que contém os dados do evento.

Listagem 6 – Declaração do delegate e do evento na classe Arquivos.

Listagem 7 – Segunda versão do método de processamento.

Page 8: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 8888

Tipo: Button

Propriedades:

Name – btnProcessarArquivos Text – Processar Tipo: Label Propriedades:

Name – lblNomeArquivo Text - <vazio> Tipo: ProgressBar

Propriedades:

Name – pbProgresso O seu form deve ficar semelhante ao da figura 5.

Na Listagem 8, adicionamos um método de captura ao evento Click do botão btn-ProcessarArquivos. Você pode adicioná-lo clicando duas vezes no botão. Nesse evento, configuramos a propriedade TopMost para true para que o form fique sempre à frente dos outros forms que não estejam configurados da mesma for-ma. Desabilitamos o botão para que o usuário veja que o mesmo não pode ser pressionado. Criamos uma instância da nossa classe Arquivos e configuramos a propriedade Maximum do nosso objeto do tipo ProgressBar com a quantidade de arquivos que temos para processar.

Veja a seguinte linha de código:

Criando o formulário que vai capturar o evento

Adicione a solução um projeto Windows Forms Application (figura 3), clique nes-se projeto com o botão direito e clique em Set as StartUp Project.

Para trabalharmos com a classe Arqui-vos, precisamos adicionar uma referên-cia ao projeto Arquivos. Podemos fazer isso clicando com o botão direito no nos-so projeto do tipo Windows Forms Ap-plication -> Add Reference. Após isso, clique na Aba Projects, selecione o proje-to Arquivos e clique em OK (figura 4).

Inclua os seguintes componentes ao form:

Eventos: Um exemplo prático

Figura 3 – Criando o projeto ProcessadorArquivo.

Figura 4 – Referenciando o projeto Arquivos.

Figura 5 – Formulário do nosso aplicativo.

Page 9: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 9999

Agora precisamos escrever o código do método que responderá ao evento. Pode-mos ver o código na Listagem 9. Esse método atualiza a label com o nome do arquivo que será processado e incremen-ta o valor da barra de progresso. Ao final disso o form é atualizado para que pos-samos visualizar os novos valores dos objetos.

Execute o aplicativo e você verá o pro-gresso da nossa simulação, tanto na La-bel que indica qual arquivo está sendo processado, como na barra de progresso.

Mas o meu form fica travado. E agora?

É possível deixar o form livre para que o usuário continue fazendo outras tarefas durante o processamento dos arquivos através de threads e com a utilização do

arquivos.CarregandoArquivo += new Arqui-vos.Arquivos.CarregandoArquivoHandler(arquivos_CarregandoArquivo);

Com ela indicamos que o método arqui-vos_CarregandoArquivo responderá ao evento quando ele for disparado e o seu código será executado.

Para finalizar, chamamos o método que processa os arquivos e ao final de todo o processamento, resetamos o valor do ProgressBar e da Label, habilitamos o botão e configuramos TopMost para fal-se.

Eventos: Um exemplo prático

Listagem 8 – Código do evento Click do botão btnProcessar

Listagem 9 – Método que responde ao evento CarregandoArquivo.

Figura 6 – Progresso do processamento sendo mostrado no formulário.

Page 10: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 10101010

método Invoke para a atualização dos objetos do formulário quando um arqui-vo começa a ser processado, mas isso fo-ge do escopo do artigo. Conclusão

Com poucas linhas de código podemos criar um evento para o nosso aplicativo enviar respostas durante o processamen-to para que o usuário não fique com a impressão de que o aplicativo travou e pare o processo forçando o seu encerra-mento.

Eventos: Um exemplo prático

Leandro Alves Santos

Bacharel em Sistemas de Informação. Atua a 4 anos com desenvolvimento e manutenção de sistemas. Tem experiência na Plataforma .NET (VB.NET e C Sharp), Visual Basic 6, Crystal Reports, Sql Server e MySql.

Page 11: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

11111111 Abr/ Mai - 2010 |

Introdução ao Expression Blend 3

O Silverlight chegou a sua terceira versão, com novos recursos e melhorias, e nesse artigo iremos aprender a utilizar o Expres-sion Blend, ferramenta que usamos para desenvolver nossas aplicações e anima-ções. Podemos comprar ou baixar um Trial do Expression Blend 3, no link: http://www.microsoft.com/expression/products/Blend_Overview.aspx. A instalação é simples e segue o padrão “Next – Next – Finish”. Se você seguiu a instalação padrão, o blend vai estar no me-nu Iniciar -> Microsoft Expression -> Ex-pression Blend 3 (figura 1).

Por: Fábio Luiz Pessoa Campinho

Quando iniciamos o Blend pela primeira vez, veremos a tela de boas vindas com as opções para abrir Exemplos

(Samples), Help e Projetos (Projects). Iremos clicar em Projets e depois New Project. A tela para criação de projetos aparecerá conforme figura abaixo, nela temos as opções de “Silverlight” e “WPF (Windows Presentation Fundation)”, ambos os projetos trabalham com o pa-drão XAML (Extensible Application Markup Language). O Padrão Silverlight é para ambiente Web, enquanto o WPF é para aplicações Desktop. Selecionada a opção Silverlight vamos marcar a opção “Silverlight 3 Application + Website”. Essa é uma melhoria em relação a versão 2 que cria além de criar o projeto do Sil-verlight, cria outro projeto com um Web Site. Para finalizar selecionaremos a lin-guagem que iremos trabalhar, no nosso exemplo iremos manter o C#. Após clicar em OK, os dois projetos serão criados conforme a figura 2.

Figura 1. Tela de inicio do Expression Blend 3.

Page 12: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

12121212 Abr/ Mai - 2010 |

Agora vamos criar nossa animação, o primeiro passo é definir o tipo de Layout que iremos trabalhar. Clique em “LayoutRoot” com o botão direito (Figura 3), depois em “Change Layout Type” e selecione a opção “Canvas”. Es-sa é a opção ideal para trabalharmos com desenhos e animações.

Introdução ao Expression Blend 3

Vamos desenhar um quadrado, que será utilizado futuramente na nossa animação. Clique na imagem da Caneta e segure por 2 segundos, isso fará com que as duas fer-ramentas fiquem visíveis (Figura 4). Ire-mos trabalhar com a caneta (Pen), clique nela e no espaço em branco da tela clique em quatro pontos da tela até formar um retângulo de quatro lados, no último pon-to posicione o mouse em cima do primei-ro ponto, o mouse irá mudar indicando o fechamento do retângulo.

Agora vamos alterar nosso retângulo para transformá-lo em um quadrado. Pressio-ne F11 duas vezes para exibir em modo SPLIT exibindo o código do XAML e o visual e pressione F4 para ampliar a área de trabalho do Blend (Figura 5). Tudo o que é desenhado, escrito ou adi-cionado no modo visual é codificado em XAML. No nosso exemplo duas tags fo-ram criadas: <CANVAS> que é a área on-de serão adicionados os nossos desenhos e <PATH> que é o nosso retângulo. Ire-mos modificar a propriedade Data da TAG <PATH> para transformar nosso re-tângulo em um quadrado. A letra M sig-nifica MoveTo e a letra L significa LineTo, a letra z indica o fechamento do Path. A

Figura 2. Criando um novo projeto no Blend.

Figura 3. Mudando o tipo do LayoutRoot para Canvas.

Figura 4. Construindo um retângulo com a ferramenta Pen.

Page 13: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

13131313 Abr/ Mai - 2010 |

referência completa para a sintaxe do Path encontra-se em http://msdn.microsoft.com/en-us/library/ms752293.aspx. Altere a propriedade pa-ra Data="M145,218 L260,218 L260,310 L145,310 z".

Vamos executar diversos tipos de anima-ções básicas que o Blend permite. Vamos pressionar F4 novamente para exibir as guias “Objects and Timeline” e “Properties”. Na primeira gerenciamos o tempo das animações, na segunda esta-remos alterando as propriedades a se-rem alteradas durante a animação. Em “Objects and Timeline” clique no “Path” e altere a cor para azul. Agora clique no “+” em para criar um “Storyboard” (Figura 6), que é nossa li-nha de tempo onde definimos todas as animações, o blend trabalha com tempo em segundos, dê o nome de “Animacao” para o nosso Storyboard e pressione OK.

Introdução ao Expression Blend 3

Clique no 10º segundo, posição 10 da li-nha de tempo e vamos começar nossas animações. A primeira é mudar a cor para Vermelho. Na aba de Propriedades, no grupo Brushes digite 0 no B (Blue) e 255 no R (Red) (Figura 7). Essa animação que fizemos é “ColorAnimationUsingKeyFrames”, você pode verificar a modificação no XAML pressionando F11.

Figura 5. Tela em modo Split e Código do Path.

Figura 6. Criando um novo Storyboard.

Figura 7. Mudando a cor para vermelho.

Page 14: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

14141414 Abr/ Mai - 2010 |

No século XVII René Descartes definiu os primeiros estudos sobre geometria cartesiana, estudos que definiam as transformações bi-dimensionais, que são muito importantes para a computação gráfica e que iremos ver na nossa anima-ção. Vamos fazer agora o quadrado se movimentar para a direita 100 pixels. Esse tipo de animação é definido como translação, que é o deslocamento de um objeto no eixo x e/ou y a partir do seu ponto original. Vamos para o grupo “transform”, clique nas setas ao lado dos nomes dos grupos para fazê-los encolher ou expandir, o grupo “transform” fica lá em baixo, você pode também usar a bar-ra de rolagem. Digite 100 no X da pro-priedade Translate (Figura 8).

No próximo passo iremos fazer nosso objeto rotacionar. Clique na setinha da aba de rotação e informe 720 no campo de ângulo que irá fazer o nosso objeto girar no sentido horário sobre o seu pró-prio eixo 720 graus. Finalmente iremos reduzir fazer a transformação de escala, que aumenta ou diminui um objeto u-sando o fator sobre o seu próprio tama-nho, ou seja você informa quanto quer multiplicar o tamanho atual pelo fator, no nosso exemplo iremos aumentar o

Introdução ao Expression Blend 3

seu tamanho em 20%, para isso adiciona-mos o fator de 1,2 nos eixos x e y confor-me figura 9. Finalmente clique no Play para ver a animação executando.

Pressione a tecla F11 para ver o código XAML e observe a animação que criamos ela é do tipo DoubleAnimationUsingKey-Frames e serve para alterar as proprieda-des do tipo Double e é o código que irá executar nossas animações. Vimos aqui as três animações bi-dimensionais básicas, explore as abas adi-cionais para descobrir outras possibilida-des de animação. Estaremos explorando nas próximas matérias, outras técnicas de animação com o StoryBoard e C#.

Figura 8. Transformação de translação.

Figura 9. Transformação de Escala.

Fábio Luiz Pessoa Campinho [email protected] Sou MCP, MCAD .NET e MCTS em Sharepoint e Win-dows 7, atualmente sou professor de Computação Grá-fica da Faculdade Dom Pedro II em Salvador e desen-volvedor a 15 anos. Desenvolvo para .NET desde 2001. Mantenho meu blog fcampinho.spaces.live.com

Page 15: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

15151515 Abr / Mai - 2010 |

Temperaturas do MVP Summit 2010

com PowerPivot

Por: Diego Nogare

Com o lançamento do SQL Server 2008 R2 previsto para os próximos meses, nada mais justo do que explorar algumas de suas funcionalidades. Algumas coisas que estão bem interessantes no SQL Server 2008 R2 é sua customização para traba-lhar com BI, um ponto que a Microsoft está investindo pesado para o lançamento da plataforma do SQL Server 2008 R2. Vendo esse investimento em Self-Service BI, pensei em escrever um artigo sobre o PowerPivot utilizando como dados as temperaturas que enfrentarei no MVP Global Summit 2010, na Microsoft em Redmond. Vou juntar a informação ir-relevante das temperaturas dos luga-

res que visitarei, com um exemplo de

criação e utilização do PowerPivot e

Excel 2010.

Não vou reescrever com as minhas pala-vras o que é o PowerPivot, justamente porque o Zavaschi fez isso muito bem neste artigo e neste outro. Recomendo a leitura! Pra começar, os links que utilizei pra montar isso foram: ♦ Pra encontrar a temperatura: http://www.dryday.com/miniforecast.asp

Hah, como no site a temperatura está em Farenheight, utilizei a formula Cº = (Fº –

32) / 1,8 pra chegar em Celsius. ♦ Para baixar o add-on pro Office

2010: http://powerpivot.com/download.aspx

♦ Pra baixar o Office 2010 Beta: http://www.microsoft.com/office/2010/en/default.aspx Montei também uma tabela no SQL Ser-ver 2008 R2, pra armazenar diretamente (isso significa que é a forma mais rápida, e mais burra) de guardar estes dados. Eles serão utilizados só pra isso e não servirão pra mais nada. Mas como o ob-jetivo é só mostrar esses dados hoje, en-tão vou fazer assim mesmo! Fazendo um select simples na tabela, te-nho o seguinte RowSet (figura 1):

Ótimo, já tenho a tabela e já tenho os da-dos das temperaturas. Agora é abrir o Excel 2010 e montar meu gráfico das temperaturas.

Figura 1– Exibindo dados da tabela.

Page 16: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

16161616 Abr / Mai - 2010 |

Com o PowerPivot instalado, vou abrir o Excel 2010 já com o plugin instalado, e procurar a opção PowerPivot [1] no menu superior. Ao acessar esse menu, procurar o item PowerPivot window [2].

Agora é esperar o ambiente de Workspace do PowerPivot carregar e começar a confi-gurar as coisas. Quando se abre o Power-

Pivot Windows, essa tela abaixo é apre-sentada, e é onde se monta a brincadeira. Selecionamos a origem dos dados vindo do SQL Server, que é o primeiro item do menu que aparece na figura 3.

Uma tela pra colocar as credenciais do banco, e demais informações de acesso é apresentada (figura 4).

Depois de preencher as credenciais e avan-çar pra próxima tela, existe a possibilidade de escrever uma query e testar, pra ver o retorno dela. Fazendo isso corretamente, um resultado como esse é apresentado na figura 5.

Após essa validação, é só confirmar no bo-tão OK e depois em Finish. O PowerPivot vai analisar a sua query e montar um relató-rio em seu Workspace te apresentando o RowSet que retornou do banco com a facili-dade de se trabalhar com o Excel 2010. Com os dados apresentados, é possível montar alguns relatórios com poucos cli-ques do mouse, utilizando todos os benefí-cios do Excel 2010. No exemplo vou montar

Temperaturas do MVP Summit 2010 com PowerPivot

Figura 2 – Acessando menu.

Figura 3 – Selecionando a origem dos dados.

Figura 4 – Adicionando informações.

Figura 5 – Apresentando resultados.

Page 17: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

17171717 Abr / Mai - 2010 |

um único gráfico, selecionando Single Pi-

votChart, que é a segunda opção do item PivotTable.

Neste momento, o PowerPivot pergunta em qual Worksheet quero colocar o gráfi-co que está selecionado, e então, o gráfico (sem nenhum dado ainda) é apresentado, e as informações que vieram do SQL Server 2008 R2 (ou qualquer outra fonte de dados se-

lecionada) é mostrado no TaskPanel. Agora que as informações já estão de volta ao Worksheet do Excel 2010, é só trabalhar normalmente. Isso é ótimo pros Gerente / Diretores e Presidentes (não o da republica,

mas os de verdade) veja na figura 7.

Pra fechar, o relatório com as temperatu-

ras que vou enfrentar em Seattle é exibido na figura 8:

A informação da temperatura é importante pra mim, pra eu me planejar com a quanti-dade de roupas que vou levar, mas a do Po-werPivot é bem legal pra quem trabalha com desenvolvimento de relatórios gerenci-ais. Fica ai a dica!

Temperaturas do MVP Summit 2010 com PowerPivot

Figura 6 – Montando gráfico.

Figura 7 – Selecionando o WorksheetWorksheetWorksheetWorksheet.

Figura 8 – Exibindo temperaturas.

Diego Nogare

Graduado em Ciência da Computação, Pós-Graduado em Engenharia de Computação com ênfase em Desenvolvi-mento Web com .NET. Colaborador do Portal Linha de Código e da revista SQL Magazine, Líder do grupo de usuários Codificando .NET, Líder dos Microsoft Student

Partners [MSP] de São Paulo e Microsoft Most Valuable

Professional [MVP] em SQL Server, possui certificações MCP e MCTS em SQL Server 2005, é palestrante em e-ventos da Microsoft, Codificando .NET e INETA BR, man-tém o site: www.diegonogare.net.

Page 18: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

18181818 Abr / Mai - 2010 |

Aplicações em N Camadas com

ASP.NET - PARTE IV FINAL

Aplicações em n camadas são desenvolvi-das de forma distribuída, onde cada ca-mada tem sua responsabilidade dentro do contexto. Para um modelo de aplicação Web são comumente usadas 3 camadas: Presentation(Apresentação), Business(Lógica do negócio) e Data(Responsável pelas transações com o banco da dados). Para finalizar esta série de artigos, vamos desenvolver agora a camada de apresen-tação(Presentation), que será a aplicação web que vai utilizar os recursos das ca-madas criadas para fazer o gerenciamento de clientes.

Iremos adicionar a camada Presentation em nosso projeto da mesma maneira que aprendemos a adicionar as outras cama-das. Para adicionar a camada ao projeto, vamos clicar com o botão direito na solu-ção e adicionar um novo projeto.

Esse novo projeto não será mais do tipo Class Library, e sim um projeto do tipo ASP.NET Web Application, que será nossa aplicação. Como o foco desse arti-go é o entendimento de aplicações em N camadas, vamos desenvolver a camada de apresentação utilizando um projeto do tipo ASP.NET Web Application, mas a mesma poderia ser desenvolvida utili-zando outros tipos de projetos ofereci-dos pela tecnologia.

Por: Felipe Pocchini

Figura 1: Exemplo de aplicação em N Camadas.

Figura 2: adicionando um novo projeto a solução (Add > New Project).

Figura 3: projeto do tipo ASP.NET Web Application.

Page 19: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

19191919 Abr / Mai - 2010 |

Com o projeto adicionado a solução, po-demos agora trabalhar na camada Presen-tation.

Para evitar erros na hora da execução da aplicação, vamos seta-lá como StartUp de nosso projeto.

Para a camada Presentation reconhecer uma entidade da camada Entity, assim co-mo os objetos da camada Business, é ne-cessário adicionar as referências das cama-

das Entity e Business na camada Presentati-on.

A camada Presentation não precisa de uma referência da camada Data, já que a camada Business é responsável pela comunicação entre elas. Listando dados A primeira coisa a ser feita é construirmos uma página onde serão listados todos os clientes cadastrados no banco de dados. Essa página será o WebForm Default.aspx que foi criado junto com o projeto, nesse WebForm vamos adicionar um componente GridView que irá receber como DataSource o método listar da classe Clientes perten-cente a camada Business.

Aplicações em N Camadas com ASP.NET - PARTE IV FINAL

Figura 4: projeto criado.

Figura 5: configurando o projeto como StartUp.

Figura 6: adicionando referências das camadas Entity e Business na camada Presentation(Add Reference > Projects > OK).

Page 20: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

20202020 Abr / Mai - 2010 |

Para que as colunas do GridView não se-jam criadas automaticamente vamos atri-buir na propriedade AutoGenerateCo-lumns o valor "False". Vamos então, custo-mizar o GridView adicionando um BoundField para o Nome e outro para o Email, vamos adicionar um LinkButton com um link para edição do registro, para isso vamos utilizar o TemplateField. Va-mos utilizar também no WebForm, um Button para adicionar um novo Cliente a base de dados. Depois disso o código deve ficar assim:

Para implementar a codificação da página tecle F7 com o WebForm Default.aspx aber-to, a janela com o Code-Behind será aberta.

Vamos rodar a aplicação e se deu tudo certo até aqui, a página será exibida:

Aplicações em N Camadas com ASP.NET - PARTE IV FINAL

Figura 7: adicionando o componente GridView ao WebForm Default.aspx (Tollbox > Data > GridView).

Figura 8: visualização do código .aspx do WebForm Default.aspx.

Figura 9: implementação do WebForm Default.aspx.

Page 21: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

21212121 Abr / Mai - 2010 |

Visualização detalhada do dados

Para a edição e visualização dos registros, vamos criar um novo WebForm, onde va-mos ter os detalhes de cada Cliente cadas-trado no banco.

Com o WebForm criado, podemos adicio-nar os componentes que vamos utilizar na edição dos dados.

Para implementar as funcionalidades do WebForm vamos teclar F7.

Aplicações em N Camadas com ASP.NET - PARTE IV FINAL

Figura 10: visualização da página Default.aspx.

Figura 11: Adicionando um novo WebForm ao projeto (Add > New Item > Web Form).

Figura 12: visualização do código .aspx do WebForm Cliente_Edit.aspx.

Page 22: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

22222222 Abr / Mai - 2010 |

Page_Load

Salvar

Alterar

Aplicações em N Camadas com ASP.NET - PARTE IV FINAL

Figura 13: implementação do método Page_Load.

Figura 14: implementação do método btnSalvar_Click.

Figura 15: visualização do formulário de edição executando uma inserção.

Figura 16: implementação do método btnAlterar_Click.

Figura 17: visualização do formulário de edição executando uma alteração.

Page 23: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

23232323 Abr / Mai - 2010 |

Excluir

Concluímos que ao final de mais uma eta-pa, teremos todas as camadas implemen-tadas e funcionando de forma indepen-dente. Lembrando que o objetivo desse artigo foi demonstrar o funcionamento de aplicações em N camadas, alguns detalhes como tratamento de erros e outras funcio-nalidades foram deixadas de lado para não perdermos o foco do entendimento. Fica aqui então a dica: Como você imple-mentaria cada camada de seu projeto?

Tratamento de erros, o uso de boas práticas e outras funcionalidades que você usaria no desenvolvimento de sua aplicação em N ca-madas. Participe, escreva seu artigo e com-partilhe conhecimento. Aprofunde seus conhecimentos sobre esse tema na comunidade ASP.NET Para saber mais:

Visão geral de aplicativo de dados n camadas

Confira também:

Aplicações em N Camadas com ASP.NET - PAR-

TE I

Aplicações em N Camadas com ASP.NET - PAR-

TE II

Aplicações em N Camadas com ASP.NET - PAR-

TE III

Até a próxima, grande abraço a todos.

Aplicações em N Camadas com ASP.NET - PARTE IV FINAL

Figura 18: implementação do método btnExcluir_Click.

Figura 19: visualização do formulário de edição executando uma exclusão.

Felipe Pocchini Graduado em Ciência da Computação pela Universida-de José do Rosário Vellano (UNIFENAS), em Alfenas – MG, trabalha com desenvolvimento de aplicações Web e Windows Forms utilizando a tecnologia .Net. Mode-rador da comunidade Desenvolvendo para Web, cola-borador da comunidade Codificando.Net e editor da revista eletrônica Codificando .Net e-Magazine.

Page 24: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 24242424

Criando o seu próprio ORM

Introdução

♦ Entendendo ORM ♦ Quando usar ORM? ♦ Como escolher um ORM? ♦ Por que criar seu próprio ORM? ♦ Como criar seu próprio ORM ♦ O que fazer após criar seu próprio

ORM?

Objetivo

Capacitar o leitor a decidir qual ferramenta de ORM deve usar e se necessário, criar sua própria ferramenta de ORM

Introdução

O Mapeamento Objeto-Relacional (ORM – Object-relational Mapping ou O/R Map-ping) é uma técnica usada para solucionar o problema da impedância entre sistemas usando programação orientada a objetos (OOP – Object Oriented Programming) e gerenciadores de bancos de dados relacio-nais (DBMS – Data Base Management Sys-tem). A impedância é causada porque sis-temas que usam OOP, quando acessam um DBMS, precisam usar de técnicas pro-cedurais (o que quebra boa parte do con-ceito de OOP) devido às limitações da lin-

guagem SQL. Outros problemas são in-compatibilidade de tipos entre a lingua-gem e o SQL, diferenças estruturais, ma-nipulativas e no tratamento de transa-ções. Entenda melhor as diferenças: Encapsulamento

Sistemas usando OOP são projetados pa-ra encapsular os dados dentro de obje-tos, escondendo o seu funcionamento interno. Quando estes sistemas utilizam DBMS, os dados ficam expostos de for-ma que o encapsulamento é quebrado, pois o banco de dados é exposto publica-mente, sem restrições de acesso (geralmente só se utiliza proteção por login / senha, tornando todas as tabelas públicas para usuários autenticados).

Diferenças de tipos de dados

A maior diferença entre sistemas que de-senvolvidos com OOP e o uso de DBMS, está no sistema de tipos. Não há suporte por parte dos DBMS para tipos por refe-rência (ponteiros), enquanto a maioria das linguagens usadas em OOP faz de ponteiros um de seus recursos essenciais (algumas deixam ponteiros apenas para uso interno – como o Java, outras ocul-

Por: Alexandre Marcondes

Page 25: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 25252525

dos. As linguagens de OOP, por sua vez, trabalham os dados em listas, coleções e hash-tables utilizando-se de manipula-ção de baixo-nível através de operações imperativas e sub-linguagens para busca (como o LinQ).

Diferenças nas transações

No aspecto de transações, temos que as linguagens que suportam OOP, geral-mente, não trabalham com transações no modelo ACID, visto que a maioria das transações envolve manipulação de da-dos simples em campos ou propriedades nos objetos. Uma das técnicas para minimizar estes problemas é o uso de ferramentas de Mapeamento Objeto-Relacional que per-mitam o programador aproveitar os re-cursos de OOP, mas de forma que não seja preciso preocupar-se com o funcio-namento interno do DBMS ou com co-mandos em SQL. Entendendo ORM

As ferramentas de ORM geralmente se apresentam como bibliotecas que são u-sadas durante o desenvolvimento e elas usam diversas abordagens para resolver os problemas de impedância Objeto-Relacional. As principais abordagens são as que seguem: ♦ Geração de código SQL automatizada

via código apenas

A abordagem de geração de SQL é a mais simples de todas. Há uma classe ou função de persistência que deve ser usa-da para gerar um SQL a partir de parâ-

tam boa parte dos ponteiros – como o .NET e o Delphi, e uma boa parte usa explicitamente ponteiros – como o C++). A implementação de tipos básicos ou escalares (como int, char, long, bool) va-ria de linguagem para linguagem e, al-gumas vezes, pode ser complicado tra-duzir entre tipos na linguagem de OOP e no DBMS.

Diferenças estruturais e de in-tegridade

Acesso aos dados em OOP geralmente são feitos por meio de interfaces que provêem acesso aos dados encapsulados, enquanto os DBMS usam de views para restringir o acesso a dados e manter a integridade. A manutenção de integrida-de é diferente nos dois modelos, em O-OP são utilizadas exceções com escopos protegidos (geralmente com try ... catch) e eventos, enquanto em DBMS usa de restrições (constraints) e chaves estran-geiras (foreign keys) para manter a inte-gridade. Enquanto um sistema usando OOP apli-ca conceitos de classes, herança e poli-morfismo, estas características não são suportadas por DBMS. Há também o problema de que em OOP os dados são organizados hierarquicamente e em DBMS são organizados em tuplas com relações não hierárquicas.

Diferenças na manipulação

Algumas das maiores diferenças estão na manipulação de dados, pois DBMS têm um conjunto pequeno de operado-res para usar em operações de busca e são otimizados para buscar tuplas de da-

Criando o seu próprio ORM

Page 26: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 26262626

nas nos objetos. É uma abordagem não invasiva pois permite que os objetos te-nham sua própria linha de herança, não interferindo no modelo do sistema.

♦ Herança

Esta abordagem é rápida e simples de implementar, mas por obrigar os objetos que serão persistidos a herdarem suas características de um objeto comum, muito do modelo do sistema OOP é per-dido. Em compensação, se ganha em fa-cilidade ao codificar, pois as funções de persistência também são herdadas e des-ta forma não há a necessidade de chamar funções ou classes específicas para per-sistir os dados.

♦ Reflexão em POCOs (Plain Old C# Ob-jects) ou POJOs (Plain Old Java Objects)

Utilizando-se dos recursos da linguagem no seu limite, algumas abordagens con-seguem fazer com que tenhamos POCOs ou POJOs, sendo persistidos sem muitas vezes nem precisar dos atributos ou ano-tações. Estas bibliotecas mostram-se as mais flexíveis em relação a modelagem usada em OOP, pois há a possibilidade de unir o mapeamento seguindo pa-drões, sem precisar herdar de uma classe comum e ainda chamar a função de per-sistência diretamente do próprio objeto. Mapeamento seguindo um padrão pré-definido

Algumas bibliotecas preferem definir um padrão de nomenclatura para as classes e campos de forma que fique simples mapear para tabelas e colunas. Caso haja exceções, é necessário definir o

metros que serão colocados no template escolhido. Esta abordagem simplesmen-te esconde o código SQL no sistema, re-servando todos os comandos de banco de dados a alguns arquivos de configu-ração, mas não há mapeamento entre os objetos e os templates.

♦ Mapeamento definido pelo usuá-rio via arquivo de configuração

Trabalhando um pouco mais no código de geração de SQL, e incluindo arquivos de configuração para o mapeamento, te-mos a possibilidade de não precisar es-colher qual template usar quando cha-mamos as funções ou classes de persis-tência. Esta abordagem facilita a codifi-cação, pois à partir do próprio objeto a biblioteca pode inferir quais são os parâ-metros.

♦ Mapeamento definido pelo usuá-rio em código via atributos ou a-notações

Alguns programadores evitam usar ar-quivos de configuração, especialmente em XML e, com o surgimento de funcio-nalidades como atributos em .NET e a-notações em Java, surgiu a necessidade de mapeamento de objetos sem arquivos de configuração. Estas bibliotecas usam recursos de reflexão para identificar o mapeamento de objetos e podem usar três abordagens para isto: ♦ Classe ou função de persistência

Nesta abordagem a função ou classe de persistência fazem uso de reflexão pro-curando por atributos específicos que identificam quais são as tabelas e colu-

Criando o seu próprio ORM

Page 27: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 27272727

♦ A ferramenta suporta polimorfismo e herança?

♦ Quaisquer tipos de relação podem ser mapeados (1-1, 1-n, m-n ou n-n)?

♦ Há como usar transações? ♦ Funções agregadoras como SUM,

AVG, MIN, MAX e COUNT têm seus equivalentes na ferramenta de ORM?

♦ Agrupamento e ordenamento são passíveis de ser controlados?

♦ Quais DBMS são suportados? ♦ Há como enviar diretamente co-

mandos SQL se for necessário (pode-se precisar de queries mais complexas ou usar funções especí-ficas do DBMS)?

♦ Store Procedures e views são ma-peadas?

♦ A ferramenta usa uma linguagem própria de buscas de objetos (OQL, OPath ou LinQ)?

♦ A ferramenta suporta Databinding? ♦ JOINS e WHERE são suportados? ♦ Como a ferramenta trata a concor-

rência no acesso aos dados? ♦ Há alguma espécie de cache de da-

dos em memória? ♦ Como é o suporte para tipos de da-

dos específicos do DBMS (como identity, sequences, generators, GUIDs, auto-incrementos)?

♦ Há como mapear múltiplos objetos a partir de uma mesma tabela?

♦ A ferramenta implementa lazy loa-ding?

♦ Tem como enviar mais de um co-mando para o DBMS (algumas fer-ramentas implementam o sistema de commits e rollbacks em memó-ria ou bulk updates para otimizar o envio de comandos ao DBMS)?

mapeamento de forma manual via arqui-vo ou anotações e propriedades. Nota do autor

Os POCOs e POJOs são objetos simples, que não herdam de nenhuma classe da biblioteca em questão nem implemen-tam nenhuma interface específica para a persistência.

Quando usar ORM?

Pessoalmente, sempre que faço uma a-plicação que usa banco de dados, eu faço questão de usar uma ferramenta de ORM. Eu gosto de manter a estrutura do modelo usando OOP nas aplicações em que trabalho. Mas, opiniões pessoais à parte, ferramentas ORM devem ser usa-das apenas quando há a necessidade de manter ou criar uma hierarquia de clas-ses em OOP mais complexa, e ainda as-sim persisti-la usando DBMS com SQL. É importante notar, que sempre que o desempenho for um requisito essencial, é prudente evitar o uso de ferramentas ORM, pois elas agregam certa quantida-de de processamento a mais, em cada ação que tomar no banco de dados. Como escolher um ORM?

Alguns recursos podem ser essenciais para sua aplicação, assim, é essencial u-ma boa escolha antes de começar a usar uma ferramenta de ORM. Alguns recur-sos são importantes de serem avaliados no processo de escolha da ferramenta certa para cada projeto. É importante perguntar-se:

Criando o seu próprio ORM

Page 28: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 28282828

estes recursos em C#, fiquei curioso e me senti desafiado a desenvolver minha própria ferramenta de ORM. Desta for-ma criei o C# Data Objects ( CsDO – http://www.codeplex.com/CsDO ). Como criar seu próprio ORM

O primeiro passo para criar seu próprio ORM é decidir qual abordagem irá se-guir. Para criar o C# Data Objects (CsDO), eu e a equipe que me auxiliou no desenvolvimento decidimos por usar a abordagem de Herança com reflexão para termos configurações em Properties do C#. Em seguida é importante modelar a estrutura de Interfaces e Classes para fazer o controle do Mapeamento Objeto Relacional (Veja Figuras 1.1 a 1.4).

♦ Como é o desempenho da ferra-menta?

♦ Como a ferramenta trata referên-cias circulares?

♦ A ferramenta suporta objetos seria-lizáveis?

Por que criar seu próprio ORM?

Levando em consideração as opções de ORM mais difundidas em .NET, logo após o lançamento do Framework .NET 2.0, surgiu uma necessidade e uma curi-osidade, qual a dificuldade produzir mi-nha própria biblioteca de ORM de acor-do com o que eu considerava mais pro-dutivo em OOP. Levei em consideração os seguintes recursos que não encontrei nas ferramentas ORM da época (pelo menos não todos na mesma ferramenta): ♦ Configuração da conexão de banco

de dados por meio do web.config ou app.config

♦ Mapeamento automático dos no-mes das classes para tabelas

♦ Mapeamento automático dos no-mes de propriedades públicas para colunas

♦ Possibilidade especificar proprie-dades que não devem ser mapea-das propriedades

♦ Configuração de mapeamento de por meio de atributos do .NET

♦ Possibilidade de executar no .NET 1.x / 2.0 e no Mono

♦ Mapeamento transparente de Fo-reign Keys

♦ Otimização de buscas por meio da Primary Key

Como não foi possível, na época, encon-trar uma biblioteca de ORM com todos

Criando o seu próprio ORM

Figura 1.1. Conexão com o Banco de Dados

Figura 1.2. Atributos de configuração

Page 29: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 29292929

DO optamos por criar um classe usando o padrão Singleton ( http://pt.wikipedia.org/wiki/Singleton ). Agora toda a base está pronta, e devida-mente testada – o CsDO usou a metodo-logia TDD ( http://en.wikipedia.org/wiki/Test-driven_development ) no de-senvolvimento e teve muitos testes uni-tários para garantir a integridade das a-plicações que o usam. Chegou o momen-to de criar o mapeamento propriamente dito. Como a escolha no CsDO foi de u-sar a herança para definir que classes de-vem ser mapeadas, a implementação re-sumiu-se em codificar um gerador de comandos SQL à partir das propriedades do objeto por meio de reflexão ( http://pt.wikipedia.org/wiki/Reflexão_(programação) ).

Para gerar os comandos SQL muitas s-trings precisam ser concatenadas, assim, a escolha natural é usar StringBuilder (Ver Figura 2) para minimizar o consu-mo de memória e aumentar a perfor-mance da biblioteca. As Listagens 1.1 a 1.5 mostram uma versão simplificada do

Assim, definimos uma Interface para o acesso ao DBMS ( IDataBase ) onde é pos-sível manter a conexão ( getConnection, open e close ) e executar comandos ( getCommand e getDataAdapter ). Para cada DMBS será criado um Driver que implementa as especificidades de cada servidor. Em seguida, é necessário defi-nir como as configurações do mapea-mento seriam inseridas no sistema, a es-colha no CsDO foi de usar atributos em classes para mapear tabelas e em propri-edades para mapear colunas e chaves primárias. Para evitar uma quantidade muito grande de configurações desne-cessárias, foi adotado o padrão de que classes que descendem de DataObject automaticamente têm mapeado seu no-me para o nome da tabela e o nome de suas propriedades públicas para o nome das colunas, qualquer exceção deve ser configurada usando atributos. O próximo passo é criar uma forma de acessar diretamente o DBMS para fazer queries mais complexas, caso haja neces-sidade (usadas geralmente em relatórios, gráficos ou em análise de dados). No Cs-

Criando o seu próprio ORM

Figura 1.3. Classe de acesso ao Banco de Dados.

Figura 1.4. Classe base para objetos de persistência.

Figura 2. Comparação de performance entre concatenação de Strings (linha azul), StringBuilder com construtor padrão (linha vermelha) e StringBuilder alocando memória no tamanho correto (linha verde).

Page 30: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 30303030

♦ Mapear objetos nulos para o banco de dados – A Listagem 2.2 mostra como o CsDO resolve o problema, identificando Nullable Types e ma-peando para NULL no DBMS;

♦ Mapear nulos do banco de dados para tipos que não aceitam nulos – Tipos como int, long, float, double, char, string, DateTime e bool não aceitam nulos como padrão e as soluções foram as seguintes:

1. int, long, float e double : mapear para 0;

2. char : mapear para o caractere 0x0; 3. string : mapear para String.Empty; 4. bool : mapear para false; 5. DateTime : mapear para 01-01-01

00:00:00; ♦ Mapear datas – mapear usando

ToString("yyyyMMdd

HH:mm:ss"); ♦ Otimizar as queries – identificamos

campos ativos (não-nulos) e apenas estes formam as queries, desta for-ma dmininuimos o processamento no DBMS e no ORM;

♦ Identificar objetos alterados – Atua-lemente apenas identifica campos nulos e preenchidos;

♦ Mapear chaves estrangeiras – As chaves estrangeiras, no CsDO, são mapeadas automaticamente para as classes, desde que o tipo da pro-priedade seja o tipo da classe da tabela em questão. Ao gravar, o Cs-DO grava a chave primária da tabe-la secundária no campo de chave estrangeira e ao ler, carrega o obje-to em questão com o registro da tabela secundária;

♦ Evitar redundância, principalmente quando a tabela faz auto-referência – O CsDO tem uma propriedade

código necessário para gerar o SQL de cada comando DML ( http://pt.wikipedia.org/wiki/Lingua-gem_de_manipulação_de_dados ). Os comandos devem ser usados da seguinte forma: ♦ O delete e o update devem ter sem-

pre a chave primária com conteúdo não zerado, caso contrário será fei-to um WHERE com todos os cam-pos, para garantir que apenas aque-le objeto será atualizado;

♦ O insert deve ter pelo menos a cha-ve primária com conteúdo não ze-rado;

♦ Para encontrar um objeto deve-se preencher um objeto novo com os campos a serem buscados e chamar o método find, se retornar verda-deiro há registros válidos para esta busca, em seguida deve-se chamar fetch enquanto ele retornar verda-deiro (como num DataReader) para preencher o objeto em questão com o valor de cada registro da busca.

Para finalizar, algumas funções de su-porte precisam ser desenvolvidas: get-ColumnProperties, formatValue,

assertField e loadFields . Estas funções servem respectivamente para carregar as configurações de uma coluna, formatar os dados para colocar na string SQL, va-lidar os dados de uma coluna e carregar os dados das queries nos objetos e po-dem ser vistas nas Listagens 2.1 a 2.4 . Alguns desafios deverão ser superados para a primeira versão de seu próprio ORM, seguem os desafios com as solu-ções implementadas no CsDO:

Criando o seu próprio ORM

Page 31: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 31313131

&& !data.Equals("NULL")) { values.Append(data); values.Append(","); } } values.Remove(values.Length -1, 1); values.Append(")"); sql.Append(" ("); sql.Append(ActiveFields); sql.Append(")"); sql.Append(values); int i=0; Persisted = (i == 1); return (Persisted);

Listagem 1.2 Código do Update StringBuilder sql = new StringBuilder("UPDATE "); StringBuilder clausule = new StringBuilder(); string search = ""; string operador = ""; StringBuilder values = new StringBuilder(); bool hasWhere = false; PropertyInfo [] props = GetType().GetProperties(); foreach (PropertyInfo propriedade in props) { bool primaryKey = false; bool persist = true; string name = null; getColumnProperties(propriedade, ref name, ref persist, ref primaryKey); if (!persist) continue; if (name == null)

pública não persistida chamada Depth que tem como valor padrão 3, a cada leitura de chave estrangei-ra ele debita 1 do nível de profun-didade, o que limita em 4 níveis de reentrância (isto pode ser configu-rado objeto a objeto se necessário);

♦ Comparação entre objetos mapea-dos – Optou-se por comparar ape-nas as chaves primárias, por isto, foi feita a sobrecarga dos operado-res de comparação e as funções ToString, Copy e GetHashCo-de;

Listagem 1.1 Código do Insert

PropertyInfo propriedadeIdentity = null; string ident = null; StringBuilder sql = new StringBuilder("INSERT INTO "); sql.Append(Table); StringBuilder values = new StringBuilder(" Values ("); PropertyInfo [] props = GetType().GetProperties(); foreach (PropertyInfo propriedade in props) { bool persist = true; string data = null; getColumnProperties(propriedade, ref persist); if (!persist) continue; data = formatValue(propriedade); if ((data != null) && !data.Equals("'00010101 00:00:00'")

Criando o seu próprio ORM

Page 32: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 32323232

sql.Append(clausule); } bool result = false; if (hasWhere) { int i = DataBase.New().Exec(sql.ToString()); Persisted = (i >= 1); result = (i >= 1); } else result = false; return result; Listagem 1.3 Código do Delete

StringBuilder sql = new StringBuilder("DELETE "); StringBuilder clausule = new StringBuilder(); string search = ""; string operador = ""; bool hasWhere = false; PropertyInfo [] props = GetType().GetProperties(); foreach (PropertyInfo propriedade in props) { bool primaryKey = false; bool persist = true; string name = null; getColumnProperties(propriedade, ref name, ref persist, ref primaryKey); if (!persist) continue; if (name == null) name = propriedade.Name; operador = " = ";

name = propriedade.Name; operador = " = "; if (propriedade.PropertyType == typeof(System.String)) { operador = " LIKE "; } search = formatValue(propriedade); if (primaryKey && (search != null) && !search.Equals("'00010101 00:00:00'") && !search.Equals("NULL")) { StringBuilder item = new StringBuilder(); item.Append("("); item.Append(name); item.Append(operador); item.Append(search); item.Append(")"); hasWhere = true; clausule.Append(item); clausule.Append(" AND "); } else { values.Append(name); values.Append("="); values.Append(search); values.Append(","); } } if (!values.ToString().Equals("")) values.Remove(values.Length - 1, 1); if (hasWhere) { clausule.Remove(clausule.Length - 4, 4); sql.Append(Table); sql.Append(" SET "); sql.Append(values); sql.Append(" WHERE ");

Criando o seu próprio ORM

Page 33: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 33333333

Listagem 1.4 Código do Find

StringBuilder sb = new StringBuilder("SELECT "); StringBuilder clausule = new StringBuilder(); string search = ""; string operador = ""; bool hasWhere = false; PropertyInfo [] props = GetType().GetProperties(); foreach (PropertyInfo propriedade in props) { bool primaryKey = false; bool persist = true; string name = null; getColumnProperties(propriedade, ref name, ref persist, ref primaryKey); if (!persist) continue; if (name == null) name = propriedade.Name; if (propriedade.PropertyType == typeof(bool) || propriedade.PropertyType == typeof(System.Boolean)) continue; operador = " = "; if (propriedade.PropertyType == typeof(System.String)) operador = " LIKE "; search = formatValue(propriedade); if (search != null && !search.Equals("0") && !search.Equals("'00010101 00:00:00'") && !search.Equals("NULL"))

if (propriedade.PropertyType == typeof(System.String)) operador = " LIKE "; search = formatValue(propriedade); if ((search != null) && !search.Equals("0")) { StringBuilder item = new StringBuilder(); item.Append("("); item.Append(name); item.Append(operador); item.Append(search); item.Append(")"); hasWhere = true; clausule.Append(item); clausule.Append(" AND "); } if (primaryKey) break; } if (hasWhere) { clausule.Remove(clausule.Length - 4, 4); sql.Append("FROM "); sql.Append(Table); sql.Append(" WHERE "); sql.Append(clausule); } bool result = false; if (hasWhere) { int i = DataBase.New().Exec(sql.ToString()); result = (i == 1); } else result = false; return result;

Criando o seu próprio ORM

Page 34: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 34343434

if (result) result = loadFields(dt[dt.Cursor], this); return result; } return false; Listagem 2.1 Código do getColumnProperties

object[] attributes = property.GetCustomAttributes(typeof(Column), true); if (attributes.Length > 0) { Column column = (Column) attributes[0]; persist = column.Persist; if (column.Name != null) name = column.Name; } attributes = property.GetCustomAttributes(typeof(PrimaryKey), true); if (attributes.Length > 0) primaryKey = true; Listagem 2.2 Código do format-Value

string result = ""; object valueObj; if (property.PropertyType.IsSubclassOf(typeof(DataObject))) { valueObj = (property.GetValue(this, null) != null) ? ((DataObject)property.GetValue(this, null)).getPrimaryKey() : "NULL"; } else

{ StringBuilder item = new StringBuilder(); item.Append("("); item.Append(name); item.Append(operador); item.Append(search); item.Append(")"); hasWhere = true; clausule.Append(item); clausule.Append(" AND "); } if (primaryKey && (search != null) && !search.Equals("0") && !search.Equals("00010101 00:00:00")) break; } if (hasWhere) { clausule.Remove(clausule.Length - 4, 4); sb.Append(Fields); sb.Append(" FROM "); sb.Append(Table); sb.Append(" WHERE "); sb.Append(clausule); } else { sb.Append(Fields); sb.Append(" FROM "); sb.Append(Table); } dt = DataBase.New().QueryDT(sb.ToString()); return true;

Listagem 1.5 Código do Fetch

if ((dt != null) && !dt.IsEmpty) { bool result = dt.Read();

Criando o seu próprio ORM

Page 35: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 35353535

case "System.Int64": case "System.Nullable`1[System.Int64]": return ((Int64)valueObj).ToString(formatNumber); case "System.Decimal": case "System.Nullable`1[System.Decimal]": return ((Decimal)valueObj).ToString(formatNumber); case "System.Double": case "System.Nullable`1[System.Double]" : return ((Double)valueObj).ToString(formatNumber); case "System.Single": case "System.Nullable`1[System.Single]": return ((Single)valueObj).ToString(formatNumber); case "System.String": sb = new StringBuilder("'"); sb.Append(valueObj.ToString()); sb.Append("'"); return sb.ToString(); default: if (valueObj.GetType().IsSubclassOf(typeof(DataObject))) return formatObject(((DataObject)valueObj).getPrimaryKey()); else return valueObj.ToString(); } } return "NULL"; Listagem 2.3 Código do loadFields

if (dr != null && obj != null) { { PropertyInfo [] props = GetType().GetProperties();

{ valueObj = (property.GetValue(this, null) != null) ? property.GetValue(this, null) : "NULL"; } if (valueObj != null) { CultureInfo culture = new CultureInfo("en-US"); IFormatProvider formatNumber = culture.NumberFormat; StringBuilder sb; switch (valueObj.GetType().ToString()) { case "System.Boolean": case "System.Nullable`1[System.Boolean]": return ((Boolean)valueObj ? "'T'" : "'F'"); case "System.Char": case "System.Nullable`1[System.Char]": sb = new StringBuilder("'"); sb.Append(((Char)valueObj).ToString()); sb.Append("'"); return sb.ToString(); case "System.DateTime": case "System.Nullable`1[System.DateTime]": sb = new StringBuilder("'"); sb.Append(((DateTime)valueObj).ToString("yyyyMMdd HH:mm:ss")); sb.Append("'"); return sb.ToString(); case "System.Int16": case "System.Nullable`1[System.Int16]": return ((Int16)valueObj).ToString(formatNumber); case "System.Int32": case "System.Nullable`1[System.Int32]": return ((Int32)valueObj).ToString(formatNumber);

Criando o seu próprio ORM

Page 36: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 36363636

} else { val = assertField(null, propriedade); propriedade.SetValue(this, val, null); continue; } } if (obj.PrimaryKeys.Count > 0) { ((PropertyInfo)obj.PrimaryKeys[0]). SetValue(obj, val, null); obj.find(); obj.fetch(); PropertyInfo propriedade = obj.PrimaryKeys[0]; bool nullObject = false; if (propriedade != null) { object col = propriedade.GetValue(this, null); if (col != null) nullObject = col.ToString(). Equals(val.ToString()); else return nullObject = col == val; } else throw new CsDOException("Field '" + obj.PrimaryKeys[0].Name + "' not found!"); if (!nullObject)

bool persist = false; foreach (PropertyInfo propriedade in props) { string name = null; getColumnProperties(propriedade, ref name, ref persist); if (!persist) continue; if (String.IsNullOrEmpty(name)) name = propriedade.Name; object val = dr[name]; if (propriedade != null) { #region Property holds a Foreign Key if (propriedade.PropertyType.IsSubclassOf(typeof(DataObject)) && !val.GetType().IsSubclassOf(typeof(DataObject))) { if (val == null || val.ToString().Equals("0") || val.GetType() == typeof(DBNull)) { propriedade.SetValue(this, null, null); continue; } DataObject obj = (DataObject)propriedade.GetValue(this, null); if (obj == null) { if (depth > 0) { obj = (DataObject) Activator. CreateInstance(propriedade.PropertyType); obj.depth = this.depth - 1;

Criando o seu próprio ORM

Page 37: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 37373737

if (val != null && (val.GetType().IsSubclassOf(typeof(DBNull)) || val.GetType() == typeof(DBNull))) { val = null; } else if (nullableType == typeof(bool)) { if (val.ToString().ToUpper().Equals("T") || val.ToString().ToUpper().Equals("TRUE")) val = (Boolean)true; else val = (Boolean)false; } else if (nullableType == typeof(float) && val.GetType() == typeof(double)) { val = float.Parse(((double)val).ToString()); } else if (nullableType == typeof(int) && val.GetType() == typeof(long)) { val = int.Parse(((long)val).ToString()); } return val; O que fazer após criar seu pró-prio ORM?

Atualmente o projeto do CsDO (que tem o código aberto) está estável e tem tido poucas atualizações mas após a constru-ção do ORM, e alguns projetos reais u-sando a biblioteca que você construir, algumas necessidades surgirão. Este é o momento que você deve reavaliar o seu projeto tendo em vista as tecnologias que estão surgindo. No caso do CsDO, após algum tempo, surgiram algumas tecnologias como LinQ, a cache de objetos Velocity, Nula-ble Types, Extension Methods e o Entity Framework. Reavaliando o projeto, há

propriedade.SetValue(this, null, null); else propriedade.SetValue(this, obj, null); } else throw new CsDOException("Class '" + propriedade.PropertyType + "' has no Primary Key!"); continue; } #endregion else #region Property holds data { val = assertField(val, propriedade); propriedade.SetValue(this, val, null); continue; } #endregion } } Persisted = true; return true; } return false; Listagem 2.4 Código do assertField

Type nullableType = null; if (propriedade.PropertyType.Name == "Nullable`1") nullableType = propriedade.PropertyType.GetGenericArguments()[0]; else nullableType = propriedade.PropertyType;

Criando o seu próprio ORM

Page 38: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 38383838

novos recursos / tecnologias que gostaria de implementar:

♦ Desobrigar a herança, para possibi-litar o uso de POCOs;

♦ Usar o modelo de detecção de alte-rações similar ao do Entity Frame-work;

♦ Dar suporte ao LinQ e LINQ to S-QL;

♦ Dar suporte completo a Nullable Types (atualmente há suporte par-cial);

♦ Dar suporte à cache de objetos Ve-locity (atualmente há uma cache implementada no próprio projeto);

♦ Dar suporte a DataSources, Data-Sets e Transfer Objects;

♦ Permitir o uso de transações; ♦ Permitir o envio de vários coman-

dos em Batch ao DBMS;

Conclusão

Apesar de termos inúmeras opções para fazer Mapeamento Objeto-Relacional, algumas vezes, é preciso criar sua pró-pria solução. O grande desafio é saber quando optar por construir uma ferra-menta ao invés de usar uma pronta e compreender como tomar as decisões críticas para o projeto ter sucesso. Neste artigo tentei passar um pouco do conhecimento neste domínio de aplica-ção para que outros possam, eventual-mente, criar suas ferramentas de ORM proprietárias ou novos projetos de códi-go aberto. Quaisquer dúvidas ou suges-tões, sinta-se livre para comentar e / ou entrar em contato.

Criando o seu próprio ORM

Alexandre Rocha Lima e Marcondes [email protected] Coach de executivos e profissionais de sucesso com 18 anos de experiência na área de Tecnologia da Informação. Mais de 10.000 horas de vivência como desenvolvedor de software e mais de 1000 pessoas treinadas na área. Sua vasta experiência com gru-pos de trabalho remoto em diversas configurações proporcionou o envolvimento em projetos com participantes em quatro continentes e mais de 35 países. Reconhecido pela qualidade de seus produ-tos e treinamentos. Formação Profissional em Coaching com Eliana Du-tra e Cursos de Formação Internacional em Coa-ching pelo Integrated Coaching Institute (ICI) - Rhandy Di Stéfano. Facilitador Licenciado pela Cor-porate Coach U International (CCUI). Consultor em Tecnologia da Informação com Graduação em Tec-nologia em Processamento de Dados.

Page 39: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

39393939 Abr/ Mai - 2010 |

Explorando microsot sql reporting

services 2005 - Parte V

Olá pessoal, como prometido hoje apresen-taremos, como consumir os relatórios, bem como apresentaremos outros exemplos com funcionalidades incríveis, imperdível. Lembrando que todos os códigos aqui im-plementados estão disponíveis no site da nossa comunidade, http://comunidade.codificando.net/ e no meu blog http://caiodotnet.blogspot.com/, bom divertimento. Parte V – remote mode – consu-mindo relatórios Consumindo o relatório

Relatórios hospedados no RS podem ser consumidos sob demanda, ou entregues via serviço um de delivery. No cenário mais comum, consumo sob demanda, o RS disponibiliza via Report Manager (URL, http://<servidor>/Reports, onde <servidor> corresponde ao nome ou endereço IP, da estação no qual o reporting services se en-contra, se for na sua estação de trabalho localhost, também funciona.) os relatórios para visualização, outra maneira de visua-lização dos relatórios é através do nosso já conhecido controle ReportViewer. Para o serviço de entrega dos relatórios, o RS dis-põe de um serviço de assinatura que vere-

mos mais adiante. Controle reportviewer Para interação dos relatórios com os cli-entes, temos o controle ReportViewer, disponível no visual Studio, em duas versões uma para web e outra para Win-dows forms. Com ele é possível disponi-bilizar para as aplicações um conjunto de funcionalidades tais como: ♦ Exportação dos dados nos formatos

Excel, PDF, CSV, TIFF, XML ♦ Suporte a impressão e visualização

de impressão do relatório ♦ Rica Interatividade com navegação,

document map, bookmarks e orde-nação

♦ Pesquisa de texto no corpo do rela-tório

♦ Zoom ♦ Permite validações de parâmetros

customizados Exemplos de relatórios

A seguir implementaremos alguns rela-tórios para exemplificar o que já vimos até então, bem como alguns recursos que veremos com os relatórios que criare-

Por: Caio Azevedo

Page 40: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

40404040 Abr/ Mai - 2010 |

mos. Nossos exemplos são baseados no modelo de dados apresentado na figura 2.3 que relaciona pedidos, itens de pedi-do, produtos e vendedores. Tentaremos aqui construir alguns exemplos de modo a complementar os exemplos criados nos relatório Local Mode, com algumas fun-cionalidades especificas tais como parâ-metros multivalorados com datasets, bem como funcionalidades não explora-das tais como relatórios Matrix e uso de parâmetros na formatação dos relatórios. Relatório tabular - com uso de parâmetros para formatação

Nesse exemplo criaremos um relatório que nos permite visualizar a relação de produtos, seu total em estoque e valor unitário. A grande novidade aqui é fazer uso de parâmetros para formatação do relatório, onde o usuário, de duas for-mas distintas, especifica quais colunas gostaria de visualizar. O relatório tam-bém faz uso de formatação condicional através de uma função do relatório (tab Code, das propriedades do relatório) pa-ra selecionar que imagem exibir confor-me o valor da quantidade em estoque do produto. Criando o Relatório Esse relatório exibe as colunas com o no-me, total em estoque (com uma imagem) e valor unitário de cada produto. Primeiro Passo: Construção do DataSet. Para criação do DataSet, acessamos a tab Data do nosso ambiente de desenvolvi-mento e criamos um novo DataSet com as seguintes propriedades:

Explorando microsot sql reporting services 2005 - Parte V

Segundo Passo: Criação e modelagem do Relatório. Incluiremos um novo relatório em nosso projeto chamado TBEstoqueProdutos, U-sando um objeto Table da toolbox dos relatórios criaremos a estrutura do relató-rio formatado conforme a figura 3.15 (destaque para o objeto Image):

Nas propriedades do relatório, tab Co-

de,criaremos uma função que será utiliza-da para formatação da nossa imagem, es-sa função tem o seguinte codificação (listagem 1): Public Shared Function GetImage(ByVal Estoque As Integer) As String If Estoque > 100 GetImage= "happy.jpg" Else GetImage= "sad.jpg" End If End Function

Certifique-se de incluir as duas imagens no projeto. E especificar no objeto image a propriedade Source igual à External, e

Nome: EstoqueProdutos

Command Type: Text

Query string: select * from tb_produto

order by ds_produto

Figura 3.15 – Formatação.

Listagem 1 - Função de formatação da imagem.

Page 41: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

41414141 Abr/ Mai - 2010 |

Value igual à seguinte expression : =Code.GetImage(Fields!QT_ESTOQUE.Value) Terceiro Passo: Criar os parâmetros Nosso relatório disponibiliza para os u-suários a possibilidade de exibir/ocultar suas colunas, para tal criamos os parâ-metros “ExibePreco” e “coluna” com as propriedades descritas na tabela a se-guir:

Quarto Passo: Configurar Colunas Finalmente, configuramos as colunas do nosso relatório para serem exibidas con-forme os parâmetros anteriormente cria-dos. Para tal especificamos as proprieda-des Visibility�Hidden das colunas de Produto e Estoque respectivamente com as seguintes instruções em nosso editor de expressions:

=InStr(Join(Parameters!coluna.Value,", "),"1") = 0 e =InStr(Join(Parameters!coluna.Value,", "),"2") = 0

E na coluna de valor unitário a seguinte instrução:

=Not Parameters!exibePreco.Value Finalmente, eis nosso relatório em ação (figura 3.16): Relatório matrix

Explorando microsot sql reporting services 2005 - Parte V

Nesse exemplo criaremos um relatório que correlaciona por dia, os vendedores e suas respectivas vendas, apresentando por produto, a quantidade em estoque, bem como o valor da venda. Aqui usaremos um dos recursos mais po-derosos dos relatórios que é o componen-te Matrix da caixa de ferramentas, utiliza-do para agrupamentos e totalizações das informações. Primeiro Passo: Construção do DataSet. Para criação DataSet, acessamos a tab Da-ta do nosso ambiente de desenvolvimento e criamos um novo DataSet com as se-guintes propriedades:

Nome: ExibePreco

Data Type: Boolean

Prompt Exibe Valor Unitário ?

Nome: Coluna

Data Type: String

Prompt Exibir Colunas

Atributo: Multi-value

Available values Non-queried: Produto (1)

Estoque(2)

Figura 3.16 - Relatório em ação.

Nome: Vendas

Comm

and

Type:

Text

Query

string:

Select p.id_pedido, p.dt_pedido,

p.id_vendedor, v.no_vendedor ,

pr.ds_produto ,sum(pr.qt_estoque) as

'em estoque'

,sum(pr.vl_preco*qt_produto) as 'valor

venda'

from tb_pedido p inner join

tb_itens_pedido i on p.id_pedido =

i.id_pedido

inner join tb_produto pr on i.id_produto =

pr.id_produto inner join tb_vendedor v on

v.id_vendedor = p.id_vendedor group by

p.id_pedido, p.id_vendedor,

v.no_vendedor,pr.ds_produto,p.dt_pedido

order by p.id_vendedor

Page 42: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

42424242 Abr/ Mai - 2010 |

Segundo Passo: Criação e modelagem do Relatório. Incluiremos um novo relatório em nosso projeto chamado MxVenda.Usando um objeto Matrix da toolbox (que o chama-remos de mtx), criaremos a estrutura do relatório formatado conforme a figura 3.17.

Iniciaremos a formatação desse relatório, apresentando alguns conceitos do com-ponente matrix. Uma matriz é composta por linhas e co-lunas (Rows e Columns, vide figura 3.18) e como já dissemos, por um ou mais gru-pos associados às linhas e colunas que podemos criar e/ou editar nas proprieda-des da matriz (tab Groups).

Criaremos nosso primeiro agrupamento em coluna pelo campo de data do pedi-do. Para isso, arrastamos e formatamos o campo data do pedido (dt_pedido) para a posição da coluna, o que gerará auto-

Explorando microsot sql reporting services 2005 - Parte V

maticamente um grupo em coluna cha-mado mtx_dt_pedido. Em seguida criare-mos um segundo e terceiro grupos, esses em linha, respectivamente com o nome do vendedor e a descrição do produto, nomeados de mtx_no_vendedor e mtx_ds_produto (Para criar um segundo grupo, basta clicar com o botão direito sobre um dos grupos e selecionar a opção “Insert Group...”). Devemos garantir que os textbox dos nossos grupos tenham os seguintes nomes – dt_pedido, no_vendedor e ds_produto. Finalmente adicionamos as duas colunas na sessão Data da matrix, com os campos em_estoque e valor_venda (observe que o RS utiliza a função de agregação SUM, automaticamente para os campos da ses-são Data), nossa matrix terá a aparência parecida à figura 3.19.

Proveremos um recurso interessante que é a capacidade de exibir/ocultar o agrupa-mento em linha dos produtos, para isso editaremos o grupo mtx_ds_produto mo-dificando sua visibilidade (tab Visibility) para oculto, e a sua visibilidade poderá ser habilitada/desabilitada no campo no_vendedor como mostra a figura 3.20:

Figura 3.17 – Formatação.

Figura 3.18 – Matrix suas linhas e colunas.

Figura 3.19 – Matrix com seus respectivos dados.

Page 43: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

43434343 Abr/ Mai - 2010 |

Outro recurso muito interessante do componente matrix é a possibilidade de criar totalizadores por grupos. No nosso exemplo incluiremos um subtotal no grupo do nome do vendedor (para isso, basta clicar com o botão direito sobre a caixa de texto no_vendedor, selecionar a opção Subtotal). E finalmente, para preenchermos com o 0 (zero) os campos sem valor, usamos as seguinte instruções nos campos, “Total Estoque” e “Valor da Venda”:

=IIF(IsNothing(Fields!em_estoque.Value),0,Sum(Fields!em_estoque.Value)) =IIF(IsNothing(Fields!valor_venda.Value),0,Sum(Fields!valor_venda.Value))

Formatando as caixas de texto para valo-res moeda e numérico, temos nosso rela-tório com a seguinte forma figura 3.21.

Explorando microsot sql reporting services 2005 - Parte V

Nesse exemplo criaremos um relatório que nos permite visualizar a relação de produtos, suas respectivas categorias, to-tal em estoque e valor unitário. Até ai na-da diferente do que já fizemos em outros relatórios, no entanto faremos uso de um recurso até então não utilizado, que são os parâmetros multivalorados para o fil-tro dos produtos a serem exibidos. Nosso relatório disponibilizará uma coleção de categorias para os usuários, e uma vez selecionadas essas categorias, serão dis-ponibilizados os produtos dessas catego-rias, sendo que o próprio relatório selecio-nará por padrão os produtos das categori-as anteriormente selecionadas que tenha sido parte integrante de algum pedido. Os parâmetros multivalorados não são interpretados por stored procedures somen-te por instruções T-SQL do tipo text, uma vez que eles são repassados com a seguin-te formatação: “param1,param2,param2,...,paramN” uti-lizadas na clausula IN do SQL, no entanto quando utilizadas em stored procedures o SQL não interpreta corretamente esses valores, sendo necessário criar artifícios para remediar a situação como veremos

Figura 3.20 – Matrix visibilidade dos grupos. Figura 3.21 – Matrix em ação.

Page 44: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

44444444 Abr/ Mai - 2010 |

em nossos exemplos. Primeiro Passo: Construção dos Data-Sets. Criaremos um conjunto de DataSets que serão usados, tanto para parametrizar os dados do relatório como para criar um conjunto de valores possíveis para os campos multivalorados. Nosso primeiro DataSet é o primeiro de nossos parâmetros que é a relação de ca-tegorias, esse DataSet tem as seguintes características:

Segundo Passo: Criação e modelagem do Relatório. Incluiremos um novo relatório em nosso projeto chamado MxVenda.Usando um objeto Matrix da toolbox (que o chama-remos de mtx), criaremos a estrutura do relatório formatado conforme a figura 3.17.

Iniciaremos a formatação desse relatório, apresentando alguns conceitos do com-ponente matrix.

Explorando microsot sql reporting services 2005 - Parte V

Uma matriz é composta por linhas e colu-nas (Rows e Columns, vide figura 3.18) e co-mo já dissemos, por um ou mais grupos associados às linhas e colunas que pode-mos criar e/ou editar nas propriedades da matriz (tab Groups).

Criaremos nosso primeiro agrupamento em coluna pelo campo de data do pedido. Para isso, arrastamos e formatamos o campo data do pedido (dt_pedido) para a posição da coluna, o que gerará automati-camente um grupo em coluna chamado mtx_dt_pedido. Em seguida criaremos um segundo e terceiro grupos, esses em linha, respectivamente com o nome do vendedor e a descrição do produto, no-meados de mtx_no_vendedor e mtx_ds_produto (Para criar um segundo grupo, basta clicar com o botão direito sobre um dos grupos e selecionar a opção “Insert Group...”). Devemos garantir que os textbox dos nossos grupos tenham os seguintes nomes – dt_pedido, no_vendedor e ds_produto. Finalmente adicionamos as duas colunas na sessão Data da matrix, com os campos em_estoque e valor_venda (observe que o RS utiliza a função de agregação SUM, automaticamente para os campos da ses-são Data), nossa matrix terá a aparência parecida à figura 3.19.

Nome: dsCategorias

Command Type: Text

Query string: SELECT * FROM

TB_CATEGORIA

Figura 3.17 - Formatação.

Figura 3.18 – Matrix suas linhas e colunas.

Figura 3.19 –matrix com seus respectivos dados.

Page 45: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

45454545 Abr/ Mai - 2010 |

Proveremos um recurso interessante que é a capacidade de exibir/ocultar o agru-pamento em linha dos produtos, para isso editaremos o grupo mtx_ds_produto modificando sua visibi-lidade (tab Visibility) para oculto, e a sua visibilidade poderá ser habilitada/desabilitada no campo no_vendedor co-mo mostra a figura 3.20:

Outro recurso muito interessante do componente matrix é a possibilidade de criar totalizadores por grupos. No nosso exemplo incluiremos um subtotal no grupo do nome do vendedor (para isso, basta clicar com o botão direito sobre a caixa de texto no_vendedor, selecionar a opção Subtotal). E finalmente, para preenchermos com o 0 (zero) os campos sem valor, usamos as seguinte instruções nos campos, “Total Estoque” e “Valor da Venda”: =IIF(IsNothing(Fields!em_estoque.Value),0,Sum(Fields!em_estoque.Value)) =IIF(IsNothing(Fields!valor_venda.Value),0,Sum(Fields!valor_venda.Value))

Formatando as caixas de texto para va-lores moeda e numérico, temos nosso

Explorando microsot sql reporting services 2005 - Parte V

relatório com a seguinte forma figura 3-3.21.

Relatório tabular - com uso de parâmetros multivalorados

Nesse exemplo criaremos um relatório que nos permite visualizar a relação de produtos, suas respectivas categorias, to-tal em estoque e valor unitário. Até ai na-da diferente do que já fizemos em outros relatórios, no entanto faremos uso de um recurso até então não utilizado, que são os parâmetros multivalorados para o fil-tro dos produtos a serem exibidos. Nosso relatório disponibilizará uma coleção de categorias para os usuários, e uma vez selecionadas essas categorias, serão dis-ponibilizados os produtos dessas catego-rias, sendo que o próprio relatório selecio-nará por padrão os produtos das categori-as anteriormente selecionadas que tenha sido parte integrante de algum pedido. Os parâmetros multivalorados não são interpretados por stored procedures somen-te por instruções T-SQL do tipo text, uma vez que eles são repassados com a seguin-te formatação: “param1,param2,param2,...,paramN” uti-lizadas na clausula IN do SQL, no entanto quando utilizadas em stored procedures o SQL não interpreta corretamente esses valores, sendo necessário criar artifícios

Figura 3.20 – Matrix visibilidade dos grupos.

Figura 3.21 – Matrix em ação.

Page 46: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

46464646 Abr/ Mai - 2010 |

para remediar a situação como veremos em nossos exemplos. Primeiro Passo: Construção dos Data-Sets. Criaremos um conjunto de DataSets que serão usados, tanto para parametrizar os dados do relatório como para criar um conjunto de valores possíveis para os campos multivalorados. Nosso primeiro DataSet é o primeiro de nossos parâmetros que é a relação de ca-tegorias, esse DataSet tem as seguintes características:

O próximo DataSet retorna um conjunto de todos os produtos, provenientes da tabela de produtos, dado as categorias anteriormente selecionadas. Esse Data-Set tem as seguintes características:

Agora o DataSet que carrega os valores default para os produtos na lista de pro-dutos. Nosso critério serão os produtos das categorias anteriormente seleciona-

Explorando microsot sql reporting services 2005 - Parte V

das que já constarem em pelo menos um pedido. Para resolvermos a limitação do RS com parâmetros multivalorados em stored procedures, criamos a função “Split”. Esse dataSet tem as seguintes característi-cas:

Finalmente criaremos o DataSet para pre-enchimento do relatório em uma consulta simples tendo como parâmetro as identi-ficações dos produtos. Novamente utili-zaremos a função “Split”. Esse DataSet tem as seguintes características:

Nome: dsCategorias

Command Type: Text

Query string: SELECT * FROM

TB_CATEGORIA

Nome: dsProdutosinCategorias

Command Type: Text

Query string: SELECT * FROM

tb_Produto prod

INNER JOIN

TB_CATEGORIA cate

ON

[prod].ID_CATEGORIA =

[cate].ID_CATEGORIA

WHERE

[prod].ID_CATEGORIA in

(@idCategorias )

Nome: dsProdutosDefaultValue

Command Type: StoredProcedure

Query string: getProdutosinItensPedido,

cujas instruções T-SQL são:

SELECT DISTINCT

ped.ID_PRODUTO FROM

tb_itens_pedido ped

INNER JOIN

tb_produto pro ON

ped.id_produto =

pro.id_produto

,Split('I',@idCategorias, ',')

as CategoriasId

Nome: dsDetalhesdoProduto

Command Type: StoredProcedure

Query string: getProdutosporCategoria,

cujas instruções T-SQL são:

SELECT

[prod].DS_PRODUTO,

[cate].DS_CATEGORIA,

[prod].QT_ESTOQUE

, [prod].VL_PRECO

from TB_PRODUTO prod

INNER JOIN

TB_CATEGORIA cate ON

[prod].ID_CATEGORIA =

[cate].ID_CATEGORIA,

Split('I',@idProdutos, ',') as

ProdutosId

WHERE

[prod].ID_PRODUTO in

(Convert(int,

ProdutosId.ValorIni))

ORDER BY

[prod].DS_PRODUTO

Page 47: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

47474747 Abr/ Mai - 2010 |

Segundo Passo: Criação e modelagem do Relatório. Incluiremos um novo relatório em nosso projeto chamado TBProdutosporCategoria, Usando um objeto Table da toolbox dos relatórios, criaremos a estrutura do rela-tório formatado conforme a figura 3.22:

Terceiro Passo: Criar os parâmetros Como já dissemos nosso relatório permi-te que os usuários selecionem um ou mais produtos a partir de um filtro pré-vio das categorias. Ambos os parâmetros são exibidos em dropdowns, cujos valo-res são provenientes dos datasets previa-mente criados. O primeiro parâmetro é a relação de categorias, que é configurado conforme a figura 3.23.

Explorando microsot sql reporting services 2005 - Parte V

O próximo parâmetro é a relação de pro-dutos com valores default, todos com da-dos provenientes de DataSets, e que é configurado conforme a figura 3.24.

Finalmente, eis nosso relatório em ação figura 3.25:

Deploy dos relatórios

Uma vez criados faremos o deploy dos nossos relatórios. Para tal, basta selecio-nar no Visual Studio o menu Build De-ploy <<nome do projeto>>. Uma vez que o projeto esteja configurado (ver sessão “Configurações das Propriedades do Pro-jeto”, figura 3.8), nossos relatórios estarão disponíveis na url: http://<servidor>/Reports, onde <servidor> corresponde ao nome ou endereço IP, da estação no qual o reporting services se encontra, se for na

Figura 3.22 – Formatação.

Figura 3.23 – Parâmetro multivalorado.

Figura 3.24 –parâmetro multivalorado com

valores default.

Figura 3.25 – Parâmetros multivalorados em ação.

Page 48: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

48484848 Abr/ Mai - 2010 |

sua estação de trabalho localhost, tam-bém funciona, que corresponde ao apli-cativo Report Manager (figura 3.26).

Nossos relatórios estão disponíveis na pasta “Treinando”. Limitações

Os relatórios Remote-mode suprem com grande eficiência uma demanda muito comum e pouco explorada que são os relatórios, especialmente em ambientes web, no entanto temos algumas limita-ções que esperamos serem sanadas em próximas versões. Abaixo relacionamos alguns dos itens que apontamos como limitações desse modelo de relatórios. ♦ Dependência do IIS ♦ Requer uma infra-estrutura mais

sofisticada ♦ A API OLEDB, de acesso a dados

possui algumas restrições funcio-nais

♦ Interface padrão com restrições no Firefox

Por hoje é só pessoal, na próxima edição nosso ultimo artigo, apresentaremos

Explorando microsot sql reporting services 2005 - Parte V

funcionalidades adicionais do reporting services muito úteis tais como serviços de delivery, cache e os importantíssimos as-pectos de segurança, grande abraço e até lá.

Figura 3.26 – Report Manager.

Caio Azevedo

Graduado em Ciência da Computação, Engenharia Civil e louco por ciências exatas em especial física e mate-mática. Coordenador da Célula Microsoft da Magna Sistema e Arquiteto Microsoft, palestrante, tecno-colunista e instrutor da treinando .net. MCP, MCAD, MCSD, MCTS e MCPD. E fanático pela série star wars – “may the force be with you.” Blog: http://caiodotnet.blogspot.com/

Page 49: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

49494949 Abr / Mai - 2010 |

Uso do Microsoft Project: Descre-

vendo suas Características

Por: Rodrigo José Santi e Dr. Juliano Schimiguel

1. Introdução

Microsoft Project é um software de gestão de projetos (ou gerência de projetos) pro-duzido pela Microsoft.Criado pela Micro-soft em 1985 (primeira versão). Nos anos posteriores sofreu profundas mudanças, de layout até funcionais, aumentando a oferta de serviços e recursos relacionados à gestão de projetos. São vários os focos do Ms Project: tempo (datas, duração do projeto, calendário de trabalho), Gráfico de Gantt, modelo probabilístico (para cál-culos relacionados à planejamento), Dia-grama da Rede, Custos (fixos, não fixos, outros) e uma gama de relatórios. A últi-ma versão, Microsoft Project Professional 2007 ainda possui mais recursos. Um óti-mo software para gestores, administrado-res e coordenadores. A interface padroni-zada da Microsoft (similar a outros pro-dutos da empresa) facilita para os inician-tes a familiarização com o produto. Ainda carece de maior conhecimento dos profis-sionais envolvidos com gestão de negó-cios.Com o decorrer dos anos, o Microsoft Office Project tornou-se numa das princi-pais ferramentas de gestão de projetos para usuários que desejam fazer a dife-rença no seu trabalho mediante o planeja-mento, gestão e comunicação eficazes das informações dos projetos.O Microsoft Of-fice Project fornece ferramentas de gestão de projetos robustas em conjunto com a combinação ideal de usabilidade, capaci-

dade e flexibilidade, para que possa ge-rir os projetos diretamente a partir do seu computador. O objetivo do Micro-soft Project é desenvolver a capacidade de planejar e gerenciar projetos de qual-quer natureza utilizando o MS Project, uma das ferramentas mais adequadas e exigidas para Gerentes, Engenheiros, ou Líderes de projetos.O Microsoft Project possui vários recursos que podem ser utilizados pelo Gerente de Projeto, no entanto, são poucos os profissionais que realmente sabem utilizar a maioria des-tes recursos. O Microsoft Project lembra bastante uma planilha em Excel basicamente os menus e botões Microsoft Project segue o pa-drão do Microsoft Office apesar de pare-cer uma ferramenta de simples manusei-o como um Excel ou Word, o Microsoft Project é uma ferramenta complexa e seu manuseio não é tão simples assim. Se-guem-se as principais razões para utili-zar o Microsoft Project: 2. Características do Microsoft Project

2.1 Estimativa e Agendamento Realis-tas

A definição de expectativas realistas jun-to das equipes de projeto, gerência e cli-entes depende, muitas vezes, de uma es-

Page 50: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

50505050 Abr / Mai - 2010 |

timativa hábil de agendas, necessidades de recursos e orçamentos. O Project não só ajuda a gerir o processo de criação de a-gendas cronológicas e de estimativas dos custos, como ainda ajuda a compreender o impacto que as alterações ou atrasos apli-cados a tarefas específicas poderão exercer sobre o projeto como um todo (figura 1).

Os círculos se referem ao numero dado aquela etapa do projeto, lembrando que PRODECESSORAS significa que para se fazer uma etapa é necessário que a etapa prodecessora esteja finalizada.

2.3 Criando Relatórios e Controlando Projetos em Tempo

É possível melhorar a exatidão e oportuni-dade da criação de relatórios escolhendo

um dos relatórios personalizados, prontos para utilizar, listados. A criação de relató-rios claros e simples permite-lhe informar a sua equipa e a gerência do estado do projeto de forma eficaz, e, ao mesmo tempo, contro-lar o andamento do projeto através de cál-culos do valor estimado, do caminho crítico e de vários cálculos base. Exemplos de relatórios existentes no Project na figura 3:

Exemplo de Relatório de custos – orçamen-to conforme figura 4:

2.4 Melhorando a Atribuição de Recursos

Com o Project, podemos atribuir recursos a tarefas com facilidade e ajustar o respectivo método de atribuição para resolver conflitos e sobre atribuições. Desta forma, teremos

Uso do Microsoft Project: Descrevendo suas Características

Figura 1: Estimativa e agendamento realistas.

Figura 2: Planejamento e gestão orientados.

Figura 3: Exemplos de relatórios no Project.

Figura 4: Exemplos de relatório de custos.

Page 51: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

51515151 Abr / Mai - 2010 |

um maior controle e flexibilidade sobre a gestão dos recursos, agendas de projetos e custos.

2.5 Apresentação Eficiente de Informa-ções do Projeto

Os gestores de projetos poderão apresen-tar as informações, rápida e facilmente, num vasto leque de formatos. Através de um novo assistente, poderá formatar e im-primir agendas numa única página com facilidade. Também poderá exportar facil-mente os dados do projeto para o Micro-soft Word, para obter documentos for-mais, para o Microsoft Excel, para obter gráficos ou folhas de cálculo personaliza-das, para o Microsoft PowerPoint®, para obter apresentações inovadoras, ou para o Microsoft Visio®, para obter diagramas na figura 5.

2.6 Integração de Dados

O Project pode ser facilmente integrado em outros programas do Microsoft Office Sys-tem. Com algumas combinações de teclas, poderá converter listas de tarefas existentes em planos de projeto do Microsoft Office Excel e Microsoft Office Outlook®. Também é possível adicionar recursos a projetos a partir do serviço de diretório Microsoft Ac-tive Directory® ou do livro de endereços do Microsoft Exchange Server.

2.7 Usabilidade

Uma interface melhorada, consistente com as Edições do Microsoft Office, facilita a a-prendizagem do Project e o acesso às ferra-mentas e funcionalidades de que necessita. As barras de ferramentas e menus intuiti-vos, assim como outras funcionalidades, permitem-lhe dominar rapidamente os con-ceitos fundamentais da gestão de projetos, mesmo que nunca tenha utilizado o Project antes (figura 6).

2.8 Ajuda

O Project fornece um variado leque de fer-ramentas de ajuda, tanto para usuários

Uso do Microsoft Project: Descrevendo suas Características

Figura 5: Atribuição de recursos.

Figura 5: Apresentação eficiente de informações do projeto.

Figura 6: Usabilidade melhorada.

Page 52: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

52525252 Abr / Mai - 2010 |

principiantes como para experientes. O Project inclui um mecanismo de busca de ajuda robusto, etiquetas inteligentes e as-sistentes, integrando ainda o acesso onli-ne, caso tenhamos uma conexão com a In-ternet, a cursos de formação, modelos, ar-tigos, entre outros (figura 7).

2.9 Personalização Simples

Um conjunto de várias funcionalidades personalizáveis permite adaptar o Project de modo a refletir as necessidades especí-ficas do projeto. Escolha um dos campos de apresentação personalizados listados que passam a fazer parte da agenda do projeto. Também pode modificar barras de ferramentas, fórmulas, indicadores grá-ficos e relatórios. Para ter acesso a uma flexibilidade acrescida, o formato de ar-quivo XML (Extensible Markup Langua-ge), o Microsoft Visual Basic® for Applica-tions (VBA) e os suplementos COM (Component Object Model) facilitam a partilha de dados e a criação de soluções personalizadas.

3. Exemplos de Empresas que u-tilizam o Microsoft Project

3.1 Randon Implementos

Prestes a comemorar seis décadas de atua-ção, a Randon Implementos precisava au-

tomatizar seu processo de relacionamento com cerca de 65 distribuidores exclusivos que atuam em todo o Brasil, comercializan-do implementos para transporte rodoviário, vagões ferroviários e silos, entre outros i-tens. A empresa buscava maior sinergia com sua rede para potencializar as vendas, o que implicava em obter uma visão com-pleta do processo de negócio, desde a fase de prospecção. Tais ganhos só foram con-quistados após a implementação do Micro-soft Dynamics CRM. Agora, além de acom-panhar melhor o trabalho, a Randon Imple-mentos está mais segura de ter fortalecido sua parceria com os revendedores.

3.2 Dimebel

Empresa de distribuição de produtos farma-cêuticos, a Dimebel tinha o desafio comum a várias empresas: lidar com um ambiente de tecnologia heterogêneo, o que dificulta o gerenciamento e gera problemas de segu-rança. Para mudar esse cenário, a Dimebel decidiu renovar seu ambiente de TI para extrair mais de cada software. Atualizou suas estações com o Windows Vista e assim garantiu mais estabilidade às suas aplica-ções de negócios. Com o Microsoft Win-dows Server 2008, a Dimebel ganhou vários recursos que facilitam processos gerenciais rotineiros. E instalando o Microsoft Fore-front em suas estações de trabalho, assegu-rou maior proteção às suas

3.3 Empro

A Empro ganhou produtividade e controle com Office 2007 e Microsoft Project. A hete-rogeneidade do ambiente e a falta de ferra-mentas que permitissem maior controle so-

Uso do Microsoft Project: Descrevendo suas Características

Figura 7: Ajuda imediata.

Page 53: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

53535353 Abr / Mai - 2010 |

bre os projetos levaram a Empresa de Pro-cessamento de Dados da Prefeitura de São José do Rio Preto a promover mudanças na sua estrutura tecnológica. A companhia implementou o Microsoft Office system 2007 e o Microsoft Project. Além da redu-ção dos chamados de help desk, graças ao fim das falhas por incompatibilidade, a Empro observou aumento de produtivida-de. A gestão dos projetos também foi apri-morada e é possível acompanhar as inicia-tivas de TI em tempo real e realizar ajustes ao longo do processo de desenvolvimento.

4. Conclusão

Considerando o risco de fracasso de um projeto, adotar uma ferramenta que facili-te o planejamento e o acompanhamento é imprescindível. O MS Project é uma ferra-menta da Microsoft que possui diversos recursos que podem ser usados para au-mentar às chances de sucesso de um proje-to, controlando os gastos, o uso de maté-ria-prima, a mão-de-obra utilizada em ca-da tarefa, o tempo previsto para conclu-são, o tempo real de conclusão e várias ou-tras informações importantes para o de-senvolvimento. O Microsoft Project é uma aplicação infor-mática que gere uma base de dados onde são Introduzidas todas as informações correspondentes a um projeto. Estas infor-mações Referem-se principalmente a tare-fas e suas durações e relações, recursos, custos, horários de trabalho e atribuições de recursos a tarefas. Todas estas informa-ções são submetidas a um programa de cálculo baseado em agendas, o que permi-te dar ao utilizador elementos exato e refe-

renciados no tempo, das variáveis caracte-rísticas do projeto. Tendo em conta a inter-dependência entre tempo, custo e trabalho, o Project permite aos gestores de projetos tantas simulações quantas necessárias para decidir quais as condições mais favoráveis para a execução desses projetos. Paralela-mente também é possível produzir docu-mentação que permite aos decisores de to-po, mesmo que não tenham conhecimentos específicos sobre a utilização deste softwa-re, avaliar quais as condições de planeja-mento impostas ao desenvolvimento dos trabalhos e, a Posteriores avaliar o desem-penho dos intervenientes mo desenrolar do projeto.

Usando o Microsoft Office Project, podemos estimar e controlar informações de cus-to (custo: o custo agendado total de uma tarefa, de um recurso, de uma atribuição ou de um projeto inteiro. Às vezes é chamado de custo atual. No Project, os custos da li-nha de base são geralmente denominados "orçamento".) básicas para seu projeto. Po-demos usar uma variedade de tipos de cus-tos, e o Project calcula esses custos para o usuário à medida que o projeto avança. O uso do Ms Project dá uma notável contribu-ição para a produção da documentação e os seus recursos são suficientemente vastos para que ele possa constituir uma espinha dorsal de todo o sistema de informação do Projeto. Na base de dados do Project está contida toda a informação referente a traba-lho, datas, tempos, recursos humanos, re-cursos materiais e custos envolvidos no pro-jeto.

Uso do Microsoft Project: Descrevendo suas Características

Page 54: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

54545454 Abr / Mai - 2010 |

REFERÊNCIAS: Project 2003 versão 7, Dados obtidos: Últi-mo acesso: 08/12/2009. Site: Microsoft, http://office.microsoft.com/pt-br/project/HA101672711046.aspx

Rodrigo José Santi Aluno de Tecnologia em Análise e Desenvolvimento de Sistemas FATEPA – Faculdade de Tecnologia Unianchie-ta – Centro Universitário Anchieta Jundiaí, SP

Prof. Dr. Juliano Schimiguel Professor do Curso de Tecnologia em Análise e Desen-volvimento de Sistemas FATEPA – Faculdade de Tecno-logia Unianchieta – Centro Universitário Anchieta Jun-diaí, SP

Uso do Microsoft Project: Descrevendo suas Características

Page 55: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

55555555 Abr / Mai - 2010 |

Novidades em Desenvolvimento no

Sharepoint 2010

Neste artigo mostrarei um overview das novidades em desenvolvimento para o Sharepoint 2010 no que diz respeito a no-vas ferramentas que podemos utilizar pa-ra o desenvolvimento de soluções em Sharepoint. O objetivo principal do time de Sharepo-int da Microsoft foi de criar uma nova plataforma atrativa para desenvolvimen-to, de maneira que possamos identificar o Sharepoint 2010 como um ambiente para criação de aplicações. Dessa forma ao es-colher uma plataforma para criação de aplicações, arquitetos e desenvolvedores decidam por criar uma solução no Share-point, pois este apresenta um cenário fa-vorável ao desenvolvimento. Para tornar o Sharepoint atrativo a desen-volvedores, a Microsoft investiu em 3 á-reas conforme figura 1:

Veremos a seguir o que cada uma dessas áreas traz de novidades para o desenvol-vimento no Sharepoint 2010. Para facilitar o entendimento, as explica-ções estão ilustradas com imagens perti-nentes ao assunto. Produtividade

O Sharepoint 2007 é uma plataforma po-derosa para criação de aplicações, porém para que um desenvolvedor se inicie no desenvolvimento de soluções Sharepo-int, o tempo despendido no aprendizado é de certa forma penoso. Se você já desenvolve para o Sharepoint, quantos macetes você já teve que apren-der para agilizar o desenvolvimento? A utilização de ferramentas disponibiliza-das no Codeplex é uma delas, e isso você só aprende em campo de batalha. Agora temos o Sharepoint Designer 2010 e o Visual Studio 2010 que vieram para facilitar o nosso trabalho! Vejamos suas novidades: Sharepoint Designer 2010 O Sharepoint Designer 2010 sofreu mu-danças para aumentar a produtividade, começando pela aparência da ferramenta

Por: Marcel Medina

Figura 1 - Sharepoint 2010 para desenvolvedores.

Page 56: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

56565656 Abr / Mai - 2010 |

que, assim como outros produtos da linha 2010, possui uma barra de ferramentas (Ribbon) mais intuitiva. Agora não é mais somente uma ferramen-ta que possibilita customizações de pági-nas e criação de workflows, trata-se uma ferramenta nova que possibilita a cust-omização/criação de artefatos no Sharepo-int. Em outras palavras, dos objetos do Sharepoint. Para quem já estava acostumado com o Sharepoint Designer 2007, a nova versão é diferente e traz novos recursos para de-senvolver soluções rapidamente: ♦ Business Connectivity Services

(BCS) – oferece suporte a conexões e definições de outros databases.

♦ List Schema - suporte à criação de listas e libraries.

♦ Custom Actions - suporte à cria-ção de custom actions para serem incorporados ao Ribbon do Sharepo-int.

♦ Task/Approval Designer - suporte a novas Actions, incluindo Assign Item for Approval, Assign Item for Feedback e General Task Process.

Alguns recursos já existentes no Sharepo-int 2007 foram melhorados:

♦ Workflow Designer - suporte à extensão e reutilização de work-flows.

♦ Page Editor - oferece uma nova u-ser interface (UI) para customização

de conteúdo. Visual Studio 2010 Quando precisamos obter um resultado di-ferente do que o Sharepoint Designer 2010 pode nos oferecer, através da codificação o Visual Studio 2010 traz novas ferramentas para facilitar o desenvolvimento para o Sha-repoint 2010. ♦ Web Part, BCS e Workflow designers O Visual Studio 2010 nos oferece suporte a ferramentas Out-Of-The-Box (OOTB), que nos permitem a criação de web parts utili-zando o Web Part Designer, a criação de custom Entities para conexão a datasources externos, a construção de workflows utili-zando código para a adição de actions e ac-tivities, permitindo a criação de uma solu-ção completa para nossas necessidades. ♦ Empacote e faça o deploy de projetos

Sharepoint Agora quando criarmos um projeto no Vi-sual Studio 2010 para o Sharepoint 2010, au-tomaticamente teremos a criação de Featu-res e pacotes WSP para deploy. ♦ Crie pacotes WSP para deploy em Pro-

dução Podemos controlar o deploy das Features e customizar o conteúdo dos pacotes WSP, utilizando novos editores que o Visual Stu-dio 2010 nos oferece.

Novidades em Desenvolvimento no Sharepoint 2010

Page 57: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

57575757 Abr / Mai - 2010 |

♦ Visualização de um site do Sharepo-int pelo Server Explorer

Agora temos suporte à conexão de sites do Sharepoint pelo Server Explorer, o que nos dá maior agilidade na identificação dos objetos do site durante o desenvolvi-mento. ♦ Integração com o Team Foundation

Server Inerente ao Visual Studio 2010 também temos a integração com o Team Foundati-on Server (TFS), que permite o gerencia-mento do ciclo de desenvolvimento das aplicações. Podemos inclusive importarmos do Share-point Designer 2010 pacotes WSP para Vi-sual Studio 2010, o que nos dá maior flexi-bilidade ao trabalharmos com as duas fer-ramentas juntas. Ambiente de Desenvolvimento Como desenvolvedores temos agora 2 op-ções para criação do ambiente de desen-volvimento: ♦ Windows Server 2008 Service Pack 2

x64 (ou Windows Server 2008 R2 x64).

♦ Windows 7 x64, Windows Vista Service Pack 1 x64, or Windows Vista Service Pack 2 x64.

OBS: Lembrando apenas que devemos possuir um computador com capacidade de processamento em 64 bits, com pelo menos 2 gigabytes (GB) e preferencial-

mente com 4 GB de RAM para instalação do SharePoint Foundation, e de 6 a 8 GB de RAM para o SharePoint Server. Para mais detalhes de como realizar a cria-ção de seu ambiente de desenvolvimento, acesse o link: http://msdn.microsoft.com/en-us/library/ee554869(office.14).aspx.

Nova Plataforma de Serviços

Novidades em Desenvolvimento no Sharepoint 2010

Como exemplo da utilização das no-

vas ferramentas acima, disponibilizei

um vídeo ilustrativo no link: http://

www.youtube.com/watch?

v=nmxCAYbngp8

O mesmo vídeo também está dispo-

nível com mais qualidade no link:

http://www.screencast.com/t/

YWZjOGY5MWUt

OBS: O código criado no vídeo e o próprio videocast

estão disponíveis para download no link:

http://sharepoint4developers.spaces.live.com/blog/cns!

419BF2880E221BB9!478.entry

Figura 2 – Diagrama de blocos.

Page 58: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

58585858 Abr / Mai - 2010 |

Novos blocos e componentes para a cria-ção de soluções foram disponibilizados. De acordo com a Figura 2, os blocos em laranja e vermelho trazem novidades, as quais estarei comentando nesse artigo.

Na camada de UI, as páginas ASP.NET foram estendidas para suportar Silverlight e XSLT views. Na camada inferior, as APIs foram esten-didas para permitirem que o desenvolvi-mento no SharePoint seja mais padroniza-do. As APIs que executam no servidor in-cluíram algumas melhorias no modelo de objetos e o suporte ao LINQ foi adiciona-do. Agora as APIs que executam no lado cliente suportam REST, e o modelo de ob-jetos cliente facilita o trabalho com dados no SharePoint. Na camada mais abaixo o application mo-del, que incluem os Sites e Listas não so-freram muitas mudanças, os mesmos con-ceitos utilizados no SharePoint 2007 conti-nuam sendo válidos no SharePoint 2010.

O modelo de dados do SharePoint é com-posto por Listas e Libraries, que estão in-

clusas numa hierarquia de Sites, e estes em Site Collections. Para saber mais detalhes sobre Listas e Li-braries, acesse o link: http://sharepoint4developers.spaces.live.com/blog/cns!419BF2880E221BB9!217.entry Para saber mais detalhes sobre Sites e Site Collections, acesse o link: http://sharepoint4developers.spaces.live.com/blog/cns!419BF2880E221BB9!173.entry As listas e libraries possuem as seguintes novidades no SharePoint 2010: ♦ Relashionships As Listas e Libraries possibilitam a constru-ção de relacionamentos e estruturas de da-dos mais sofisticados. Os relacionamentos entre listas podem ser criados para reforçar uma Integridade dos dados. ♦ Lookup to multiple columns Novo recurso de JOIN entre as Listas e Li-braries. É possível criarmos no mesmo loo-kup referências a múltiplas colunas da mes-ma lista ou library. ♦ Validation Validações com fórmulas em colunas foram adicionadas. Utilizando fórmulas do Excel podemos adicionar validações a colunas e exibirmos mensagens aos usuários.

Novidades em Desenvolvimento no Sharepoint 2010

Figura 3 – Legenda de cores.

Data Model Lists

Listas e Libraries

Page 59: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

59595959 Abr / Mai - 2010 |

♦ Escalabilidade, performance e es-trangulamento (throttling)

Como desenvolvedores, precisamos estar cientes dos problemas que podem ocorrer ao lidarmos com um processamento que pode exigir bastante do servidor. Agora tais importantes questões podem ser me-lhor gerenciadas pelos administradores no lado administrativo do SharePoint. External Data Lists Com o objetivo de integração de múltiplos datasources ou mesmo da utilização da UI para navegação no SharePoint 2010, estru-turas de dados externas como databases legados ou outros databases no SQL Ser-ver, dados que retornam de web services ou de código .Net podem ser adicionados ao SharePoint como External Data Lists. No ponto de vista dos usuários é como se trabalhar com listas, utilizando views e forms. Podendo ser estendido para traba-lhar com o SharePoint Workspace 2010 no lado cliente.

Server APIs SPLinq Com o modelo de objetos podemos mani-pular os dados, porém via SPLinq temos uma outra alternativa. Esse é um novo re-curso do Sharepoint 2010, que traz um Linq provider para manipulação dos dados. Tais manipulações são realizadas no lado do ser-vidor. Quais os benefícios da utilização do SPLinq?

♦ Programação com Entidades (Entities)

Ao invés de trabalharmos diretamente com itens e listas, podemos trabalhar com os ob-jetos que representam tais itens e listas, co-mo: Produtos (Products) e Fornecedores (Vendors) por exemplo. Isso é bem mais prático, rápido e fácil na criação de queries, pois podemos utilizar o intellisense do Vi-sual Studio. Exemplo de query feita com o SPLinq: from p in adc.Products where p.Vendors.CountryRegion == "Brasil" select p; ♦ Joins entre listas Por trás dos panos a query acima é traduzi-da em Collaborative Application Markup Language (CAML), que é uma linguagem baseada em XML utilizada para construir e customizar web sites no Sharepoint. Essa linguagem foi estendida de modo que tam-bém podemos realizar joins entre listas e

Novidades em Desenvolvimento no Sharepoint 2010

Como exemplo de utilização dos objetos

acima, disponibilizei um vídeo ilustrativo

no link:

http://www.youtube.com/watch?

v=y1sBMazMAwY

O mesmo vídeo também está disponível

com mais qualidade no link: http://

www.screencast.com/t/NDlmODQxZGY

OBS: O videocast está disponível para download no

link:

http://sharepoint4developers.spaces.live.com/blog/

cns!419BF2880E221BB9!480.entry

Page 60: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

60606060 Abr / Mai - 2010 |

recuperarmos seus dados. Events O suporte a eventos de Lista e Itens foram estendidos no SharePoint 2010. Geralmen-te tais eventos são criados para validar da-dos. Novos eventos foram adicionados, vejam as novidades: ♦ After synchronous event No SharePoint 2007 os eventos ocorriam antes que os dados sofressem modifica-ções e após um tempo que os dados já ha-viam sido persistidos. Esse novo evento foi disponibilizado para interceptar o que ocorre entre os dois e-ventos, justamente no meio da operação, para que o desenvolvedor garanta que seu código seja executado antes que o Form que contém a Lista/Item seja retornado ao usuário.

♦ Site-scoped events - diz respeito ao eventos do Site Collection (SPSite).

♦ Web creation events - diz respeito aos eventos de criação de Sites (SPWeb).

♦ List creation events - diz respeito aos eventos de criação de Listas (SPList).

♦ Workflow events - Podemos cus-tomizar como os workflows podem ser executados. Temos os eventos Starting, Started, Postponed e Com-pleted para manipularmos suas exe-cuções.

♦ Maior controle da interface dos usuá-rios

Podemos controlar como a interface do usu-ário retornará quando os eventos de cance-lamento ou validação de dados ocorrerem, podendo redirecionar para páginas de erro ao invés de retornar mensagens simples do tipo String. Connected Client APIs Client Object Model Um novo recurso para manipulação de da-dos é através do novo modelo de objetos cliente, que é uma versão cliente de um sub-set do modelo de objetos de servidor, tais como: Webs, Lists, ListItems, etc. Podendo ser utilizado diretamente no Silverlight, .Net (aplicações console, winform) ou Javas-cript, pois se trata do mesmo modelo de objetos. Esse novo modelo de objetos foi criado para o batch de comandos e eficiência das opera-ções. Por exemplo, quando trabalhamos com web services do SharePoint, temos que tratar os dados recuperados em XML, o que é bem trabalhoso. Dependendo do tipo de operação a ser realizada precisamos criar um web service para obtermos os dados, porém com esse novo modelo as chamadas são diretas e com uma única query pode-mos obter o que precisamos. Além disso podemos usufruir do tratamen-to assíncrono dos dados e de um tratamento de escopo de exceções e de lógica condicio-nal.

Novidades em Desenvolvimento no Sharepoint 2010

Page 61: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

61616161 Abr / Mai - 2010 |

REST

Uma nova maneira de trabalharmos com dados de listas e Excel no Sharepoint é a-través de integrações utilizando protoco-los REST e ATOM. Utilizando o ADO.NET Data Services com o Visual Studio 2010, podemos integrar facilmente nossas aplicações. Também po-demos utilizar novas tecnologias como o ASP.NET AJAX e o PowerPivot - projeto Gemini (utilizado para análise de dados no Excel) para integrar nossas aplicações.

Content Management Workflow

Vejamos as novidades relacionadas aos workflows: ♦ Performance e Escalabilidade Agora os profissionais de Infra podem de-finir servidores dedicados para a execução de workflows. Isso possibilita que work-flows sejam executados mais rapidamente e que os mais críticos possam ser executa-dos em servidores exclusivos.

♦ Site-scoped workflows Workflows são disparados sobre Itens/Documentos, e se desejarmos disparar workflows sobre um conjunto de Itens/Documentos ou sobre todos os Itens/Documentos? Com site-scoped workflows podemos fazer isso dentro do Site Collecti-on. ♦ Visualização no browser Com o SharePoint Server 2010, entre todas as aplicações do pacote Office, o Visio 2010 traz a possibilidade de criarmos workflows no servidor a partir de diagramas. Um dos benefícios para os usuários é a pos-sibilidade de que os mesmos visualizem o progresso dos workflows, com todas as a-ções e pontos de decisão, uma vez que os diagramas estarão vinculados aos work-flows. ♦ Workflows OOTB customizáveis Os workflows OOTB sofreram mudanças em seu design para serem melhor reutiliza-dos através de "building boxes", que permi-tem que estes sejam estendidos mais facil-mente. Pages and User Interface Ribbon e Dialogs O Ribbon representa a nova barra de tarefas no Sharepoint 2010. Proveniente do Office 2007, ele veio para ficar. Sua customização é possível através da criação de Custom Acti-ons pelo Sharepoint Designer 2010 ou pelo Visual Studio 2010.

Novidades em Desenvolvimento no Sharepoint 2010

Como exemplo da utilização das novas

APIs acima, disponibilizei um vídeo ilus-

trativo no link:

http://www.screencast.com/t/OGQ0MGJm

OBS: Os códigos criado no vídeo e o próprio video-

cast estão disponíveis para download no link:

http://sharepoint4developers.spaces.live.com/blog/

cns!419BF2880E221BB9!481.entry

Page 62: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

62626262 Abr / Mai - 2010 |

O Status Bar ou Barra de Status nos traz informações do contexto em que estamos. Utilizado para exibir informações persis-tentes, tais como: status da página ou ver-são. Enquanto que a Notification Area ou Área de Notificação nos traz informações transitórias de duração de 5 segundos e depois desaparecem.

Os Dialogs são representados por modal pop-ups, que congelam a edição dos cam-pos do plano de fundo e só permitem a edição dos campos em evidência. Bastante conhecido por desenvolvedores Web.

Padronização e Compatibilidade

As páginas do Sharepoint 2010 estão mais amigáveis para os desenvolvedores. As masterpages foram criadas no padrão XHT-ML 1.1, deixando as páginas mais limpas e padronizadas. Os browsers Mozilla e Safari são suportados sem restrições, ou seja, todas as funcionali-dades executam em tais browsers. Da perspectiva de acessibilidade, o padrão WCAG 2.0 nível AA foi implementado. Pa-ra mais informações, acesse o link: http://www.w3.org/TR/WCAG/ A linguagem XSLT foi largamente utilizada para a customização de views, devido a seu padrão na transformação de dados XML. Mais uma novidade é de que a UI agora ofe-rece suporte multilíngue, ou seja, a Língua das páginas podem ser trocadas. No ponto de vista de desenvolvimento, durante a construção de soluções, dependendo dos requisitos, devemos pensar na possibilidade do usuário mudar a UI para suportar Inglês ou Português por exemplo. Silverlight

O Silverlight possibilita ricas visualizações de conteúdo e o Sharepoint 2010 traz consi-go templates de Silverlight webparts. Isso possibilita uma maneira mais simples de realizarmos o upload de arquivos xaps (aplicações Silverlight) e utilizá-los no Sha-rePoint. Vale lembrar que o Client Object Model ofe-rece total suporte ao desenvolvimento de aplicações Silverlight.

Novidades em Desenvolvimento no Sharepoint 2010

Figura 5 – Novas funcionalidades da UI do

SharePoint 2010.

Figura 6 – Modal popups.

Page 63: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

63636363 Abr / Mai - 2010 |

Flexibilidade no Deploy Para efetivamente gerenciarmos o ciclo de desenvolvimento de aplicações necessita-mos de ferramentas que nos auxiliem. O Visual Studio 2010 se integra inteiramente com o Team Foundation Server, que for-nece uma solução completa para o geren-ciamento do ciclo de desenvolvimento e automatização do processo de entrega de aplicações. Apenas dessa maneira é que temos um deploy com 100% de sucesso.

Uma vez finalizada uma solução, basta realizarmos o deploy dela! É assim que funciona em seu ambiente de trabalho? Na grande maioria dos casos acredito que não, primeiramente é necessário verificar o impacto que sua solução pode trazer ao ambiente de produção. Para isso é neces-sária a realização de testes (funcionais e não-funcionais) em ambientes de pré-produção. Testes de performance são extremamente necessários para se evitar dores de cabeça indesejadas. É por isso que somente após o aval da equipe de Infra é que as soluções são disponibilizadas em produção. Geral-mente isso leva tempo e traz custos inde-sejados aos projetos. Para facilitar esse meio-de-campo, Sand-boxed Solutions foram disponibilizadas no Sharepoint 2010.

Sandboxed Solutions Sandboxed Solutions são soluções seguras que são executadas em um processo sepa-rado do servidor. Tais soluções são res-tringidas a serem executadas somente com

um subset de APIs e dentro do mesmo Site Collection. Estas soluções são monitoradas e caso algu-ma delas traga alguma instabilidade são au-tomaticamente finalizadas, o que traz mais segurança à estabilidade do farm. O objetivo principal da utilização de Sand-boxed Solutions é de agilizar os negócios, permitindo que as soluções sejam criadas e disponibilizadas rapidamente, sem que haja a relutância do deploy por Administradores do Farm uma vez que são soluções mais se-guras. Tipos de solução Vários tipos de soluções podem ser criados, desde que a solução esteja dentro do escopo do Site Collection em que se encontra. O subset de APIs do Sharepoint inclui a maioria das classes, incluindo SPSite, SP-Web, SPList e SPListItem. A lista completa de classes disponíveis no subset de APIs do Sharepoint está disponível no link: http://msdn.microsoft.com/en-us/library/ee537860(office.14).aspx Sandboxed Solutions podem ser criadas a partir de objetos do Sharepoint, tais como: Web Parts, Modules, Lists, Content Types, Event Receivers, Feature Activation Events, Custom Workflow Actions e InfoPath Forms. Formato dos Pacotes Através da criação de pacotes WSPs as solu-ções foram unificadas. Dessa forma os pró-prios Administradores do Site Collection

Novidades em Desenvolvimento no Sharepoint 2010

Page 64: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

64646464 Abr / Mai - 2010 |

podem realizar o deploy das soluções fa-cilmente, selecionando os pacotes e reali-zando o upload. Arquitetura Alguns componentes se fazem necessários para que as Sandbox Solutions sejam exe-cutadas. A Figura 7 mostra os componen-tes essenciais e o fluxo de execução das Sandboxed Solutions. ♦ O usuário solicita uma página, ou

outro objeto que contenha uma Sandbox Solution no Front End. In-ternamente o IIS identifica a solicita-ção (1) e através do Application Pool (2) a solicitação é enviada ao Back End.

♦ O User Code Service (SPUCHostService.exe) precisa estar ativo para que a execução de Sand-box Solutions seja garantida (3). Este serviço pode existir em vários servi-dores que desejam dividir a execução de Sandbox Solutions.

♦ O Sandbox Worker Process (SPUCWorkerProcess.exe) é o pro-cesso real em que Sandboxed Soluti-ons são executadas. A execução de

Sandbox Solutions é limitada a um subset das APIs do Sharepoint (4). Ca-so o código desenvolvido se enquadre no subset do modelo de objetos então o proxy é chamado.

♦ O Sandbox Worker Process Proxy (SPUCWorkerProcessProxy.exe) é cha-mado (5) para permitir a execução do código da Sandbox Solution contra o modelo completo de APIs do Sharepo-int.

Conclusão

Através da união das 3 partes: Produtivida-de com a utilização de novas ferramentas, nova plataforma de serviços e nova forma de deploy, as soluções em SharePoint sofre-ram um grande upgrade, pela integração entre plataforma e as ferramentas. Isso possibilitará a ingressão de novos de-senvolvedores no mercado mundial para suprir as demandas existentes, que tendem a crescer pelos benefícios que a plataforma oferece e pelas facilidades na customização desse novo ambiente, citados nesse artigo.

Novidades em Desenvolvimento no Sharepoint 2010

Figura 7 – Arquitetura e Fluxo de Execução das Sandboxed Solutions.

Marcel Medina

Especialista em desenvolvimento .Net/Sharepoint, atua como Consultor Microsoft nas tecnologias .Net/Sharepoint. Também é Microsoft Trainer nas tecnolo-gias citadas. Atualmente vive em Auckland, New Zea-land e gosta de esportes radicais, música e jogos. Como desenvolvedor Sênior coordenou e participou de vários projetos grandes de desenvolvimento, inclu-indo os jogos Pan-americanos Rio 2007 nas platafor-mas web, windows e mobile. Possui 10 anos de experiência no mercado de TI e as seguintes certificações: MCP, MCDBA, MCAD, MCSD, MCTS, MCPD e MCT. contato: [email protected] blog técnico português: http://sharepoint4developers.spaces.live.com blog técnico inglês: http://sharepoint4developersnz.spaces.live.com

Page 65: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 65656565

JQuery 1.4 - Novidades

Olá pessoal, hoje vou escrever sobre a no-va versão do JQuery versão 1.4. Vejamos o que melhorou nesta versão. Uma coisa que podemos notar é que depois que a Micro-soft começou a apoiar, a FrameWork vem crescendo bastante e nós que ganhamos com isso!!!

No início do mês eu já dei uma Twitada sobre a nova versão, que foi lançada no dia 14 de janeiro, achei bem legal o que foi fei-to, pois no dia do aniversário do JQuery, para celebrar eles lançaram um site http://jquery14.com/. Nota Oficial do Site: Nós estamos empolga-

dos em trazer por 14 dias consecutivos novas

liberações para celebrar a versão 1.4 do jQuery.

Você observará que nós estamos empolgados

com o número 14 desde que a versão 1.4 do

jQuery foi liberada no aniversário do jQuery

(14 de janeiro). Por isso não deixe de voltar a

cada dia porque outro anúncio é feito e um no-

vo conteúdo é liberado.

Tem coisas bem legais nesse site, pretendo explorar mais artigos falando dessas mu-danças. Uma das principais mudanças foi a melho-ria de performance dos principais métodos do FrameWork, se você já achava rápido, imagine agora...

Nota Oficial do Site: Muitos dos princi-

pais métodos do jQuery sofreram alterações

significantes na nova versão. Quando anali-

samos o código descobrimos que estávamos

aptos à fazer alguns significantes ganhos de

performance comparados com a versão ante-

rior. Vendo quantas chamadas para funções

internas estavam sendo feitas e o trabalho

para reduzir a complexidade do código. (*

Ref 01)

Outro ponto em que a equipe de DEV de preocupou bastante foi com a cobertura de testes e o suporte a uma quantidade maior de browsers. (* Ref 02)

Nota Oficial do Site: Na versão

1.4 corrigimos cerca de 207

bugs (comparados com 97 na versão 1.3).

(* Ref 03).

Adicionalmente nós melhoramos nossa co-

bertura de testes de 1504 testes no jQuery

1.3.2 para 3060 testes na versão 1.4. A suite

de testes do jQuery está passando 100% na

maioria dos browsers (Safari 3.2, Safari 4,

Firefox 2, Firefox 3, Firefox 3.5, IE 6, IE 7,

IE 8, Opera 10.10, e Chrome).

Outro ponto muito importante foi a rees-crita de toda a documentação oficial (*

Ref 04 ) do jQuery 1.4 e a liberação de

Por: Fabiano Belmonte

Page 66: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

Abr / Mai - 2010 | 66666666

Ref 08 : http://code.google.com/intl/pt-BR/apis/ajaxlibs/documentation/index.html Ref 09 : http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.min.js Bons Códigos...

um novo fórum de discussão. (*Ref 05) Nota Oficial do Site: Nós utilizamos listas

de discussões, e posteriormente Grupos do

Google, ao longo dos 4 anos para gerenciar as

discussões e comunidades em volta do

jQuery. Essa solução em particular não tem

sido capaz de escalar nossas discussões tanto

em termos de participação e

no gerenciamento de spam.

(*Ref 06)

Você já pode baixar a nova versão aces-sando qualquer um dos links a seguir: Jquery: http://code.jquery.com/jquery-1.4.js Google: http://code.google.com/apis/ajaxlibs/documentation/index.html Microsoft: http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.min.js

Referências: Ref 01 : http://ejohn.org/blog/function-call-

profiling/

Ref 02 : http://jquery14.com/day-01 Ref 03 : http://dev.jquery.com/report/34 Ref 04 : http://api.jquery.com/ Ref 05 : http://jquery14.com/day-07 Ref 06 : http://ejohn.org/blog/google-groups-is-dead/ Ref 07 : http://code.jquery.com/jquery-1.4.js

JQuery1.4 - Novidades

Fabiano Belmonte

Líder de Projetos da Compugraf foi senior Architect da InfoMoney.com, especialista em aplicações e-Business com larga experiência em B2B (Submarino.Com e Saraiva.Com). Trabalha há 5 a-nos com a tecnologia .Net, aplicando conhecimen-tos nas diversas áreas: instituições financeiras (sistema SPB), e-Commerce, gerenciamento logísti-co entre outras. Trabalhando com Visual Studio desde suas primeiras versões, responsável pela im-plementação de uma Metodologia de trabalho e melhoras significativas no resultados e na qualidade do time de Desenvolvimento de muitas empresas por onde passou como (Saraiva.Com) e ferramen-tas como TFS (Team Foundation Server). Foi palestrante em eventos como Codificando. NET 2008 e outros eventos sobre Tecnologia .NET.

Page 67: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

67676767 Abr/ Mai - 2010 |

C# 4.0 - Tipos Dinâmicos

Olá Pessoal, há algum tempo comecei a escrever sobre C# 4.0, acho que já passou da hora de voltar a escrever sobre o assun-to. Hoje vou escrever sobre uma funcionalida-de bem legal, na minha opinião ajudará bastante nosso dia a dia, que é Dynamic Typed Objects. Uma feature bem legal do C# 4.0 e o supor-te à programação dinâmica, isso é feito a-través da criação de tipos dinâmicos de ob-jetos, o que acontece é que esses tipos são resolvidos em tempo de execução e não em tempo de compilação. O que muda? Na declaração da variável utilizamos a palavra "dynamic". A palavra-chave informa o compilador que o objeto foi declarado de forma dinâmica, deve ser tipado em tempo de execução usando o Dynamic Language Runtime (DLR). Mais não confunda o "dynamic" com o "var", pois eles não são a mesma coisa. O "var" é tipado em tempo de compilação diferente do "dynamic", que é tipado em tempo de execução.

Vamos fazer alguns exemplos: Veja um cenário onde você precisa defi-nir propriedades de um objeto, uma dll, e você vai fazer isso utilizan-do Reflection: Assembly objLib= Assembly.LoadFile(@"C-:\projects\Testes\bin\Debug\Testes.dll"); Type TesteObjType = objLib.GetType("Teste.TesteClassLib"); object Classobj= Activator.CreateInstance(TesteObjType); PropertyInfo pInfo= TesteObjTy-pe.GetProperty("Nome"); pInfo.SetValue(Classobj, "Fabiano", null); Código que faz o load de uma dll via reflection e atribui um valor para a pro-priedade nome do objeto Agora vou fazer a mesma coisa utilizan-do "dynamic" basta mudar a terceira e a última linha para: dynamic dynamicTesteObj = Activator.CreateInstance(Classobj); dynamicTesteObj.Name = "Fabiano"; código que faz o acesso a propriedade

Por: Fabiano Belmonte

Page 68: codificando-e-magazine15

www.codificando.net

Codific

ando.net e

-magazine

e-magazine

68686868 Abr/ Mai - 2010 |

da DLL utilizando dynamic. Simples não é? Vamos ver um slide da palestra do Anders Hejlsberg's no PDC 2008.

Como podemos ver na figura acima, vo-cê pode chamar o método (s), tais como x.ToString (), y.ToLower (), z.Add (1) e ele irá funcionar sem problemas. Esta é mais uma feature que nos oferece muita flexibilidade. Quero explorar mais o C# 4.0, pretendo fazer isso separando por features. Espero que gostem! Bons Códigos...

C# 4.0 - Tipos Dinâmicos

**slide da palestra do Anders Hejlsberg's no PDC 2008.

Fabiano Belmonte

Líder de Projetos da Compugraf foi senior Architect da InfoMoney.com, especialista em aplicações e-Business com larga experiência em B2B (Submarino.Com e Saraiva.Com). Trabalha há 5 a-nos com a tecnologia .Net, aplicando conhecimen-tos nas diversas áreas: instituições financeiras (sistema SPB), e-Commerce, gerenciamento logísti-co entre outras. Trabalhando com Visual Studio desde suas primeiras versões, responsável pela im-plementação de uma Metodologia de trabalho e melhoras significativas no resultados e na qualidade do time de Desenvolvimento de muitas empresas por onde passou como (Saraiva.Com) e ferramen-tas como TFS (Team Foundation Server). Foi palestrante em eventos como Codificando. NET 2008 e outros eventos sobre Tecnologia .NET. Twitter.com/fabianobelmonte

Page 69: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 69696969 69696969 Abri/ Mai - 2010 |

A Microsoft seguindo sua filosofia de ofere-cer conteúdo (em grande quantidade e qua-lidade) para os participantes da comunida-de, realiza diversos tipos de eventos por to-do o Brasil. A mais nova iniciativa da Micro-soft Brasil é a Copa de Talentos Microsoft, que está movimentando desenvolvedores e profissionais de infra-estrutura em todo o território nacional. Dentre os muitos eventos que a Copa Micro-soft está promovendo, destaca-se o Road Show. O Road Show é um encontro entre desenvolvedores, profissionais de infra-estrutura, funcionários e colaboradores (MVP's) da Microsoft onde são ministradas palestras, mesas de discussões, dentre outras atividades e é realizado nas principais cida-des do país.

No último dia 15/04 foi a vez de Ribeirão Pre-to, cidade localizada no interior de São Pau-lo, a aproximadamente 300 kilômetros da capi-tal receber o evento. O evento foi realizado nas dependências do Stream Hotel bem no centro da cidade e contou com as participações dos MVP's Renato Haddad (http://weblogs.asp.net/renatohaddad/), Fábio Hara (http://fabiohara.spaces.live.com/), Alex S-chulz (http://blogs.msdn.com/alexschulz/), dentre outros. O evento teve início as 9h00 no auditório cen-tral do hotel com desenvolvedores e pessoal de infra juntos. Nesta primeira fase, Fábio Ha-ra apresentou a agenda do dia e o cenário no qual as palestras (todas com 100% de prática) seriam baseadas. As 10h00 o grupo foi dividi-do em dois sendo que, os desenvolvedo-

Road Show em Ribeirão Preto

Por: Fabrício Sanches

Pessoal acertando os últimos detalhes antes da palestra.

Alex Schulz apresentando sua palestra sobre

SharePoint 2010.

Renato Haddad apresentando sua palestra sobre Visual Studio 2010. e .NET Framework 4.0.

Page 70: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 70707070 70707070 Abri/ Mai - 2010 |

(dirigidos por Renato Haddad e Alex S-chulz) e o pessoal de infra continuou no auditório central (comandados por Fábio Hara e demais colaboradores). Em ambas as salas assuntos técnicos foram apresen-tados e, como já mencionado, palestras 100% práticas com soluções apresentadas em tempo real. Após a pausa para o almoço (que ocorreu das 12h30 às 13h30), cada grupo voltou para suas respectivas salas para a continu-ação do evento. Os grupos voltaram a reu-nir-se no auditório central as 16h00 quan-do alguns assuntos de interesse geral (como o Windows 7, por exemplo) foram apresentados e alguns sorteios também foram realizados. O evento contou com a participação de aproximadamente oitenta pessoas e todos, sem exceção, apreciaram o evento. Abaixo o parecer de Fábio Hara, um dos pales-trantes no evento em seu blog. "[...] O feedback foi excelente: todos gostaram

do modelo que apresentamos: nada de PPT a-

penas demos focadas em problemas e como re-

solvê-los. Tenho percebido que muitas pessoas

fazem palestras de produtos preocupadas em

mostrar recursos (features). Este tipo de mode-

lo de palestra agrada o publico que já conhece

uma ferramenta e deseja saber exatamente cada

funcionalidade. Porém se você quer mostrar o

que um produto pode fazer por você então é

importante que você mostre um problema e

como você pode resolver usando determinado

recurso. Esse feedback nos tivemos do publico e

foi muito bom saber que quase todos conseguiram

entender bem quais as vantagens do Windows 7,

Windows Server 2008 R2, Exchange 2010, Office

2010, SharePoint 2010, SQL 2008 R2 e Visual

Studio 2010." As próximas etapas do Road Show estão rela-cionadas abaixo. Se você está próximo a uma destas cidades, não perca a oportunidade de participar de um evento de alto nível com os principais colaboradores da Microsoft em cada área. 08/05/2010 São Paulo 11/05/2010 Campinas 13/05/2010 Cuiabá

Fabrício Sanches

Possui graduação em Ciência da Computação pela UNORP - Centro Universitário do Norte Paulista (2005). Obteve título de mestre junto a USP (Universidade de São Paulo) no Programa Interunidades Bioengenharia campus São Carlos. Atualmente é aluno de doutorado e pesquisador na mesma instituição e de-partamento. É membro regular do SpeechLab (Laboratório de Processamento de Áudio e Voz) localizado no Instituto de Física de São Carlos. Atua na área de processamento digital de áudio e voz, especialmente baseado em wavelets aplicadas à inserção e extração de watermarks em sinais de áudio e fala, análise cepstral de sinais de fala e desenvolvimento de ferramentas computacionais aplicadas ao processamento digital de sinais. Atua como desenvolvedor web na União Central Brasileira da IASD com C# e ASP.NET desde 2007.

Page 71: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 71717171 71717171 Abri/ Mai - 2010 |

No dia 23/04/2010 aconteceu um grande e-vento em Fortaleza, a 10ª etapa da Copa Mi-crosoft de Talentos. Time de palestrantes: Rodrigo Dias (IT Pro Evangelist) Rogério Cordeiro (Developer Evangelist) Renato Haddad (MVP) Álvaro Rezende (MVP) Herleson Pontes (MVP)

Acompanhados do: Rodrigo Munhoz (Customer and Partner Sa-tisfaction Manager) e Murilo Curti (Time do Windows 7 e Grenn Light) A galera da comunidade de Fortaleza fez mais que o esperado, foram mais de 150 pes-soas para prestigiar o Road show. Ponto pra Fortaleza, das 10 primeiras etapas nós fomos o maior publico e mais interativo (palavras dos palestrantes).

Vimos um cenário da Empresa Adventure-Works com os diversos problemas que uma empresa enfrenta quando para de investir em TI e depois enxerga que precisa correr para recuperar mercado, mas não tem capital para investimentos pesados em TI. Soluções nativas apresentadas dentro dos pro-dutos, onde alguns são gratuitos (Hyper-V Server, SharePoint 2010 TF, etc...)

Ao final do evento, um intenso "Perguntas & Respostas" muito produtivo e empolgante, on-de por questões de tempo não foi mais adian-te.

Road Show em Fortaleza

Por: Jensen Clayton

Page 72: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 72727272 72727272 Abri/ Mai - 2010 |

Final de evento e uma foto pra registrar o dia (Rodrigo Munhoz, Herleson Pontes, Álvaro Rezende, Renato Haddad, Jensen Clayton, Rogerio Cordeiro e Rodrigo Di-as). Não acabou por aqui! Após o evento, os influenciadores da co-munidade conversavam com o time da Copa Microsoft. Feedback pra lá e pra cá e todos ganha-ram os parabéns pelos excelentes traba-lhos realizados e melhor ainda... vem mais novidade em breve.

Jensen Clayton

MCSA Windows Server 2003, MCTS Windows Server 2008 e Microsoft Student Partner. Cursa Redes de Computadores na UNICE. Trabalha com TI desde 1999, e vem se especializando na plataforma Microsoft com foco em Servidores e Virtualiza-ção. Integrante da comunidade TechNet e colaborador ativo do grupo MSFor e Office.CE. Administrador de Redes do Sistema Verdes Mares. Blog: http://jensenclayton.spaces.live.com

Page 73: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 73737373 73737373 Abri/ Mai - 2010 |

Apresentarei alguns resultados do even-to Community Launch: MSInfraES Vitória – ES que foi realizado em 20/03/2010. Esta a-ção foi concebida e realizada pelos grupos de usuários MSInfraES www.msinfraes.com.br e MSDev-ES http://br.groups.yahoo.com/group/msdev-es/ em parceria com o Centro de Inovação Micro-soft - Vitória e várias empresas e organiza-ções do estado do Espírito Santo. O Community Launch (CL) é uma ação rea-lizada pela Microsoft Brasil através do proje-to Copa de Talentos. Para a realização desta onda foi elencado o TechNet, MSDN e Co-munidade em Ação (CEA) para alavancar as atividades dos grupos de usuários e um Ro-ad Show em várias localidades do Brasil. O preparatório do Community Launch foram reuniões via webcast e o CommunityZone 2010 que reuniu mais de 100 influenciadores Microsoft em SP. Do qual tive o prazer de participar. Na capital do ES - Vitória, atendemos o cha-mado TechNet/MSDN e aceitamos o desafi-os de realizar o CL. Foram vários desafios vencidos como entregar conteúdo de quali-dade, reunir um time de especialistas nos produtos da campanha a fechar todos os en-laces de articulação para a realização deste ousado projeto.

A Copa de Talentos está focada em produtos que foram lançados recentemente e nos que serão lançados nos próximos meses. Ela con-siste num jogo disputado pela comunidade técnica em que você colocará seus conheci-mentos em prática sobre as seguintes soluções: Infraestrutura •Windows 2008 Server R2 •Windows 7 •Exchange 2010 Desenvolvimento •Visual Studio 2010 •Sharepoint /EPM 2010 •SQL Server 2008 R2 E cadê os resultados? Atingimos um público total de 150 pessoas pa-ra as trilhas de infraestrutura e desenvolvi-mento. Palestrantes de alto nível com reconhecimento de seus trabalhos em todo o Brasil. Infraestrutura O que há de novo no Windows Server 2008 R2 - MVP Rodrigo Immaginario CISSP, MC-SE:Security, MCSA:Security, MCSE (NT, W2K, W2K3), MCSA(W2K, W2K3 Descritivo : Co-

Community Launch em Vitória - ES

Por: Cleyton Santana de Sousa

Page 74: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 74747474 74747474 Abri/ Mai - 2010 |

nheça as novas funcionalidades do Win-dows Server 2008 R2 e exemplos de estu-do de caso real no Brasil. Sharepoint 2010 – Maurício Davino MCIT - PRO Enterprise Project Management With Microsoft Office Project Server 2007, MCTS - Microsoft office project 2007, Managing Projects, MCTS - Microsoft Office Project Server 2007, managing Projects, MCTS - Microsoft Office SharePoint Server 2007, configuration, MCTS - Microsoft Office SharePoint Services 3.0, configuration System Center Essentials 2007 - Janiel Pe-

reira MCSA/MCP Windows Server/XP/

MCDST

Desenvolvimento Gerenciamento do Ciclo de Vida da Apli-cação com o Visual Studio Team System 2010 (ALM com VSTS) - Délio Dessaune

Gerente de Projetos MCSD / MCAD /

MCSD / MCT

Silverlight 3 - Fabriccio Correia Bernardes

Desenvolvedor Silverlight/Sharepoint SQL 2008 R2 - Daniel Barbosa de Olivei-

raMCAD.NET / MCDBA / MCTS - SQL

Server 2005 / MCT / Informatica Certified

Design

Parceria fechada com o Sebrae-Es através da Juliana Berton, a quem devemos nosso especial agradecimento por viabilizar o cofee-break . Ao provedor de hosting capixaba

VOL.net.br – que forneceu um link de internet para a realização da conferência nacional. E a todos os demais que colaboraram com divul-gação ou cessão de profissionais para minis-trar palestras. Seleção de fotos:

Link para todas as fotos: http://cid-cc40655101da0596.skydrive.live.com/selectembed.aspx/Community%20Launch%20MSInfraES%20Vit%c3%b3ria%20ES%2020%2003%202010%20Faesa?ref=1 Tags: #CommunityLaunch #CLES #MICVITORIA #TechNet #MSDN

Credenciamento Abertura

Palestra DEV Equipe MSInfraES / MSDevES

Cleyton Santana de Sousa

COBIT Certified ITIL Foundation Certified Microsoft Certified Professional http://csantanaes.blogspot.com Gestão de TI e Gerenciamento de Projetos http://csantanaes.spaces.live.com Blog Tecnologia

Page 75: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 75757575 75757575 Abri/ Mai - 2010 |

Até agora estamos tentando entender o que aconteceu em Marília dia 10/04. Um boom da comunidade poderia ser um adjetivo a-plicável. Conversando com alguns amigos do exterior que também fazem eventos , para profissio-nais inclusive, todos forma unânimes em di-zer “Nunca vimos isso”. Mais de 800 pesso-as reunidas para se atualizar tecnologica-mente e principalmente conhecer os profis-sionais que fazem essa tecnologia acontecer no Brasil. Isso demonstra o entusiasmo do brasileiro em aprender principalmente a carência de eventos assim em algumas regiões. “Queremos mais”,”Quando vai ter o próxi-mo ?” foram algumas frases que me pergun-taram no final do evento. O Marília Tech Day foi um marco na história dos eventos e eu posso dizer que nós, pales-trantes ,organizadores e parceiros também queremos mais. É incrível a energia, força que nos foi passada, levando-nos a perce-ber, mais ainda, que o que faz o mundo gi-rar, acontecer, é o prazer de compartilhar, de poder passar pra frente os anos de estudo e dedicação. Com um time de palestrantes de primeira linha (alguns dos maiores especialistas do

Brasil em tecnologias Microsoft) como os MVPs Rob Ranches, Evilázaro Alves, Diego Nogare , Nilton Pinheiro, o líder dos MVPs Brasil Rodolfo Roim, renomados membros da comunidade técnica SQL Server Felipe Ferrei-ra , Thiago Zavaschi, Fabiano Amorim e Laerte Junior e o integrante do time do Premier Field Engineer (PFE) em SQL Server da Microsoft Brasil Fabricio Catae, o evento reuniu o im-pressionante número de 830 participantes que durante todo o dia se dividiram em dois audi-tórios do Centro Universitário Eurípedes de Marília (UNIVEM) e assistiram a 12 palestras ministradas por estes feras e uma video-mensagem de 10 minutos do Consultor de Re-des Sociais Luciano Palma.

O evento teve repercursão nacional e internacional, uma vez que contou com a presença de Fernando Guerreiro, CEO da So-lidQ, uma empresa multinacional de consulto-ria em SQL Server, presente em uma série de países. Fernando venho ao Brasil pela primeira vez apenas para prestigir o evento e na pala-vra dele "Ele não acreditou no que viu em Ma-rília”.

Acompanhado pelo Twitter através da hashtag #MTD2010 o evento gerou 31 páginas de Tweets em apenas 2 dias, sendo também destaque nos jornais da região como Diário de Marília (Marília Tech Day põe cidade na rota da tecnologia ) e Jornal da Manhã, no entanto,

Marília TechDay 2010

Por: Laerte Junior

Page 76: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 76767676 76767676 Abri/ Mai - 2010 |

a marca mais impressionante do evento foi mesmo o número de participantes: mais de 830 pessoas, sendo definitivamente considerado o maior

evento já realizado pela Comunidade

Técnica Microsoft! Você pode ver tudo que aconteceu na UNIVEM no dia 10/04, as palestras, fotos no nosso site : www.marilia.techday.net.br. Caso tenha interesse em levar esse grande evento a sua cidade/universidade/região, entre em contato com a gente pelo email [email protected]. Teremos o maior prazer de “TREMER” tudo, como fizemos em Marília. Principais Organizadores do Evento: Arnaldo Martins Hidalgo Junior Elvis Fusco Laerte Poltronieri Júnior Nilton Pinheiro

Palestrantes: Diego Nogare (MVP) SQL Azure Database. Evilázaro Alves (MVP) Introdução ao desenvolvimento de Siste-mas Conectados com WCF 4.0. Fabiano Amorim Entendendo como os Joins funcionam de uma vez por todas!

Fabrício Catae (Microsoft) Inside SQL Server: Como funciona um banco de dados? Armazenamento de dados no SQL Server. Felipe Ferreira O que a plataforma .NET pode fazer por você desenvolvedor? Laerte Poltronieri Junior Automatizando Processos no SQL Server com Powershell e SQL Server Powershell Extensi-ons. Nilton Pinheiro (MVP) Conhecendo o SQL Server 2008 Express - A edição grátis do SQL Server. Rob Ranches (MVP) Exchange 2010 - Cozinhando com o correio. Rodolfo Roim (Microsoft) SharePoint 2010 - O que mudou? Thiago Zavaschi Self-service Business Intelligence com o PowerPivot.

Page 77: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 77777777 77777777 Abri/ Mai - 2010 |

Laerte Junior

Certificado MCDBA com mais de 8 anos de atuação com SQL SERVER, fascinado por códigos e scripts, escreve artigos para MCDBABrasil, Imasters e Simple-Talk aonde possue um blog também. Possui outro blog em português aonde coloca suas experiências com SQL SERVER e Powershell . Moderador do Forum TechNet - The Official Scripting Guys Forum e Developer do Projeto CODEPLEX - SQL Server Powershell Extensions. www.laertejuniordba.spaces.live.com , www.simple-talk.com/author/laerte-junior , www.codeplex.com/sqlpsx , www.twitter.com/laertejuniordba

Page 78: codificando-e-magazine15
Page 79: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 79797979 79797979 Abri/ Mai - 2010 |

A Copa Microsoft também passou por Brasí-lia no dia 06/04 trazendo o Road Show. Como já era esperado o evento aconteceu nos dois períodos manhã e tarde e as turmas foram divididas em duas tracks: Infra e Dev. Dentro de cada track foi apresentado às no-vidades Microsoft implementadas numa empresa fictícia que precisava de melhorias, mas sem muito recurso financeiro. Cada á-rea ficou responsável em solucionar a neces-sidade da empresa mostrando ‘ao vivo’ as funções dos produtos que foram e serão lan-çados em 2010. Após a divisão da turma, na track de [Infra] os palestrantes Fabio Hara, Alvaro Rezende e Marcelo mostraram as novidades: Windows Server 2008 R2

Simplificando o gerenciamento com Power-Shell 2.0, no AD hoje é simples recuperar os objetos excluídos, os objetos podem ser res-taurados da lixeira ‘a quente’. Facilidade, economia e melhorias da virtualização usando Hyper-V. Melhoramento da plataforma de aplicações Web com IIS 7. Analisador de melhores práticas BPA. Windows 7

PSR, ferramenta que auxilia no suporte aos

usuários. DirectAccess para escritório remoto BitLocker To Go Compatibilidade com XP mode. Economia de banda com Branch Cache. Após intervalo para almoço, Álvaro Rezende e Fabio Hara prosseguiram com os temas: Exchange 2010

Controle do fluxo das informações da rede Correio de Voz + E-mails juntos Sharepoint 2010

Edição de documentos sem necessidade de pa-cote Office instalado Co-Autoria no Office Web Application Facili-dade de edição de documentos, dois usuários podem editar o mesmo documento ao mesmo tempo Compatibilidade com Firefox, IE e Opera

SQL Server 2008

Gerenciamento, facilitando a vida do adminis-trador de BD Melhores práticas Alta disponibilidade Na track de [Dev], pela manhã Rogério Cor-deiro, Renato Haddad detonaram com as no-vas features do Visual Studio 2010 (geração de

diagramas UML, recursos do Team System).

Road Show Brasília

Por: Sara Barbosa

Page 80: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 80808080 80808080 Abri/ Mai - 2010 |

No período da tarde foi apresentada a ar-quitetura Team Foundation Server 2010 e Sharepoint 2010 para desenvolvedores, como a integração Sharepoint 2010 + Vi-

sual Studio 2010 vai facilitar e deixar a ferramenta bem mais acessível para reali-zar a customização de novos modelos de sites. Road Show foi uma tempestade de infor-mações e o melhor tudo isso com pratica-mente zero (zero) de PPT? Isso mesmo, tudo na base da ‘demo’. Inclusive a metodologia usada é uma ex-celente idéia e com certeza mais proveito-sa para um evento desse porte, por ser um evento o dia todo não fica cansativo e o público fica mais empolgado vendo tudo funcionando conforme cada nova funcio-nalidade dos produtos apresentada. Chegando ao fim do evento as duas tracks foram unidas novamente, foi mostrado como é do interesse da Microsoft que as áreas de Infra e Dev andem juntas, uma alinhada à outra, assim entra uma 'pequena' peça da família System Center para auxiliar nessa união. Perguntas e respostas aconteceram para finalizar as apresentações, os palestrantes ficaram a disposição para esclarecer as du-vidas do pessoal. Além do conhecimento, muitos saíram com mochilas, CD de treinamento, bonés com o sorteio de brindes.

No fim do dia a comunidade BrasilDotNet participou da mesa redonda juntamente com os palestrantes, discutindo os frutos do evento e a realidade da comunidade em Brasília que hoje está ficando cada dia mais ativa. Road Show de Brasília foi um sucesso, com 120 inscritos e 119 presentes, incluindo Janny que veio de Minas Gerais e eu de Goiânia. Pa-lestrantes da Copa Microsoft estão de para-béns por mais uma realização. Algumas fotos:

Track de Infra Palestrantes de infra

Track de Dev Rogério Cordeiro - Dev

Perguntas e Respostas

Page 81: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 81818181 81818181 Abri/ Mai - 2010 |

Vejas mais fotos do evento: http://www.flickr.com/photos/49101171@N07/

sets/72157623795038448/

Eu recebendo o brinde do Fabio Hara

Público do Road Show

Palestrantes do Road Show

Sara Barbosa

É estudante de Tecnologia em Segurança da Informação. Membro do conselho da Comunidade WININFO, comuni-dade Microsoft de Infra Estrutura do Centro-Oeste. Mais detalhes blog: http://sarajbarbosa.spaces.live.com/ Twitter: @sarabarbosa

Page 82: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 82828282 82828282 Abri/ Mai - 2010 |

Dia 20/03 Goiânia e demais cidades do Brasil participaram da largada para o concurso da Copa Microsoft de talentos. Foi transmitido o General Session direto da Microsoft e de-pois através de excelentes profissionais fo-ram apresentados os lançamentos das novas soluções Microsoft de 2010. Os temas das palestras foram SharePoint, Exchange, Visu-al Studio e Office 2010, Windows Server 2008 R2, Windows 7 e Entity Framework.

Um resumo bacana que descreve o sucesso do Community Launch em Goiânia: 2 grupos envolvidos: DevGoiás.NET e WININFO 5 Empresas patrocinantes 3 Empresas e 1 Organização de apoio 5 palestras + 1 General Session 8 Palestrantes: ♦ 3 MVP: Alvaro Rezende(GO), Nelson

Kolarik (DF), Rodrigo Kono (GO) ♦ 4 MCP e MCT: Alliston Carlos, Ely

Marques, Marcelo Paiva, Weder Lima ♦ 1 MSP: José Lino Neto

1º cidade a começar a divulgação do evento 1º cidade a esgotar as inscrições (em menos de 5 dias) 1 website personalizado para o evento: dev-goias.net/copamicrosoft Evento mais presente nas redes sociais (twitter, facebook, windows live, youtube e flickr) Em 7 dias tivemos: 1.300 visitantes únicos no site do evento 4000 PageViews Após o evento isso já contabilizava em: + de 1700 visitantes únicos + de 6000 pageViews 220 Inscrições 118 pessoas na lista de espera + de 250kg de alimento arrecadado. Muitos brindes, entre eles Windows Server 2008 com + 25 Cals, Windows 7 Ultimate, li-vros e muito mais. (Fonte: www.rodrigokono.net)

Fotos dos melhores momentos:

Community Launch em Goiânia

Por: Sara Barbosa

Público do CLGO

Page 83: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 83838383 83838383 Abri/ Mai - 2010 |

Com todos esses números e provas, o que resta é a certeza que comunidade Goiana está unida para compartilhar conhecimen-to, incentivar e buscar novos talentos. Quem seguiu a #CLGO acompanhou to-dos os detalhes. Comunidades Wininfo e DevGoias.NET juntas na realização e or-ganização desse evento que foi sucesso e que vamos ter muitos mais nesse ano de 2010.

Mais fotos: http://www.flickr.com/groups/copamicrosoft/

Sara Barbosa

É estudante de Tecnologia em Segurança da Informação. Membro do conselho da Comunidade WININFO, comuni-dade Microsoft de Infra Estrutura do Centro-Oeste. Mais detalhes blog: http://sarajbarbosa.spaces.live.com/ Twitter: @sarabarbosa

Page 84: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 84848484 84848484 Abri/ Mai - 2010 |

Sábado, 17/04, tive a honra de participar do Community Launch RJ, organizado pela co-munidade .Net Architects do Rio. O evento foi super bem organizado, uma semana an-tes as vagas estavam todas preenchidas: 100 inscritos ao todo. No dia do evento a presen-ça média foi de 65 pessoas no local. O Community Launch RJ teve início às 09h e a primeira palestra foi com o Alexandre Bis-po, que exibiu novidades do Visual Studio 2010, explicou sobre a nova IDE feita em WPF e mostrou novos recursos. O pessoal logo cedo já começou a ficar animado fazen-do muitas perguntas e mostrando bastante interesse. A segunda palestra foi a minha, onde abor-dei as novidades do Entity Framework 4.0. Foram abordadas as principais novidades como Classes POCO, Lazy Loading, Model First e Code Only, uma feature que ainda só está disponível em CTP. Foi uma palestra bem divertida e diferente. Com slides des-contraídos e uma boa interação com a platéi-a. O público riu do início ao fim. Na sequência tivemos uma palestra sobre ASP.NET 4.0, com o Sidney Lima Filho. Ele é apaixonado por WebForms, e mostrou as novidades nesta nova versão, abordando detalhes bem técnicos.

Após o almoço Alexandre Valente fez uma ex-celente apresentação sobre Asp.Net MVC 2. O Alexandre conhece bastante da ferramenta, é bastante objetivo e direto. Foi uma das pales-tras mais aguardadas pelo público. A palestra do Fernando Bichara foi a que mais "emocionou" o público. Ele apresentou o MEF, Managed Extensibility Framework. Eu quase chorei. Simplesmente uma ferramenta incrível, e apesar de ser um assunto "complexo" ele a-presentou tudo de forma simples, direta, obje-tiva e com conhecimento de causa. A palestra terminou e eu já tinha mil idéias na cabeça, ter-minamos comparando o uso do MEF com ex-tensibilidade via IronRuby e IronPython. Sim-plesmente ótima palestra! Christian Cunha mostrou as novidades do VS2010 relacionadas com as práticas de TDD, além é claro de apresentar a técnica, explican-do suas motivações, práticas, e demonstrando na prática como aplicá-la. Para apresentar o Application Lifecycle Mana-gement com Visual Studio 2010 o Rodrigo Vi-dal deu uma boa explicação sobre a organiza-ção do VS2010para o gerenciamento de ALM e como ele pode auxiliar e automatizar este pro-cesso, atingindo os mais diferenciados papéis envolvidos no desenvolvimento e vida do soft-ware.

Community Launch no Rio de Janeiro

Por: Vinicius Quaiato

Page 85: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 85858585 85858585 Abri/ Mai - 2010 |

Fechando o evento Carlos Eduardo apre-sentou como trabalhar com arquivos Offi-ce utilizando o Open Xml. Foi uma pales-tra incrível. Todos ficaram de queixo caído com a versatilidade e o poder da ferra-menta. Para coroar o evento ao final ocorreu o sorteio de brindes: livros, squeezes, copos, camisetas, licenças de software e outros itens mais. O feedback da comunidade e dos presentes foi simplesmente muito po-sitivo. A cada palestra, a cada momento das palestras, os presentes enviavam men-sagens de elogio e divulgação no twitter utilizando a hashtag do evento. Sem dúvidas a comunidade .NET do Rio de Janeiro ganha muito com a realização deste evento, e isto se reflete na comuni-dade .NET de todo Brasil. Todos esperam ansiosos por mais eventos do grupo .Net Architects na cidade maravilhosa.

Vinicius Quaiato [email protected] – www.viniciusquaiato.com

Trabalha com desenvolvimento de software há cerca de 4 anos, especificamente com tecnologias Micro-soft .NET. Aficcionado por arquitetura e boas práticas. Atualmente trabalha com desenvolvimento e arquitetura de aplicações na Envision Tecnologia. Atua na comunida-de .Net Architects e coordena o grupo de Coding Dojo da mesma. Tem ministrado palestras sobre boas práticas e as novidades do .Net Framework. Escreve artigos em seu blog www.viniciusquaiato.com e na revista .Net Magazine. Está presente no twitter em @vquaiato.

Page 86: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 86868686 86868686 Abri/ Mai - 2010 |

Galera da codificando.net escreverei sobre o DEVBLU - Evento técnico Microsoft Tech Day ( www.mstechday.com ) que aconteceu dia 24/04/2010 na cidade de Blumenau no Teatro Carlos Gomes. O evento teve a presença mais ou menos 116 pessoas muitas delas acompanharam todo o evento, muito bom ver a comunidade Blu-menauense ativa e comparecendo em even-tos presenciais, mostrando que temos sim capacidade de trazer mais eventos para a região. Segundo informações, desde 2002 não teve evento técnico na cidade. O #MSTDBLU veio trazendo uma série de novidades na linha de DEV e INFRA, Share-point 2010 com Fabian ( @fgherk ) , Thiago Zavaschi ( @zavaschi ) com Power Pivot BI, Diego Nogare com SQL Server 2008 R2 ( @DiegoNogare ), Djonatas Tenfen com Sil-verlight 4 ( @DjonatasTenfen ) e na área de INFRA Agostinho com Windows Server 2008 R2 , Exchange 2010, Lucas Romão com Windows 7 ( @LucasRomao ) e XXX com System Center. O Evento foi um sucesso maior do que o es-perado pelos organizadores e já estão pen-sando em um próximo que deve acontecer em breve.

Durante o evento tivemos palestra extra do Diego Nogare falando sobre Comunidades, MSP, MVP e também uma explicação sobre o que era a comunidade Codificando.NET, em seguida Lucas Romão apresentou a comu-nidade Azure services BR ( www.azureservicesbr.ning.com ) e eu apre-sentei a comunidade Silverlight Brasil ( www.silverlightbrasil.ning.com ), por fim tivemos uma participação virtual mas especial do grande Luciano Palma ( @LucianoPalma ) falando sobre o "Começar pelo Porque ?" Mensagem esta aclamada e aplaudida por todos no auditório. E por fim foi sorteado e entregue alguns brin-des ao presentes. Lembrando apenas que o evento teve patrocí-nio das empresa Benner Logística - KeepIt @keepit_brasil - Telerik @telerik.

Blumenau TechDay 2010

Por: Djonatas Tenfen

Page 87: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 87878787 87878787 Abri/ Mai - 2010 |

Djonatas Tenfen

Possui certificado MCP. Desenvolvedor de Softwares há 7 anos, grande parte deles voltado a tecnologia Borland Delphi. Há 2 anos está se especializando em desenvolvi-mento .NET e Silverlight. Trabalha como desenvolvedor C# na empresa Benner Sistemas UNEP Logística, localizada na cidade de Blumenau (SC). É lider da comunidade Silverli-ght Brasil, colaborador e moderador das comunidades Azure Services BR, WCF Brasil e colaborador ativo da Re-vista The Club Megazine escrevendo artigos sobre .Net e Silverlight.

Page 88: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 88888888 88888888 Abri/ Mai - 2010 |

Durante o mês de Abril, o SharpCode www.sharpcode.com.br realizou 3 eventos do Community Lauch, nas cidades de Ma-ringá e Londrina no Paraná, através dos pa-lestrantes André Nobre (www.andrenobre.com.br), Carlos dos San-tos (www.carloscds.net) e Márcio Fábio Al-thmann (www.marcioalthmann.net). Em ambos os eventos André Nobre mostrou as novidades algumas das novidades do Vi-sual Studio 2010 e do .NET 4.0, com desta-que a paralelismo, ClientID do ASP.NET 4.0 e tipos dinâmicos. Carlos dos Santos mostrou as novidades do Entity Framework 4.0, mostrando a evolu-ção do mesmo, as novidades como suporte a POCO, T4 templates, LINQ, geração de s-cript através do modelo. Márcio Fábio Althmann mostrou o que é o Silverlight, histórico da tecnologia, exemplos com SmoothStreaming, GPU Acceleration, depois vieram as novidades do Silverlight 4 como suporte a WebCam e Microfone. O primeiro evento foi realizado no SENAI em Londrina pelo Londrina TechDay www.londrinatechday.com.br , no CESU-MAR em Maringá, foi a primeira edição do Maringá TechDay www.maringatechday.com.br, o segundo

evento foi realizado na PUC em Londrina, e foi mais uma edição do Londrina TechDay www.londrinatechday.com.br. Fotos de Maringá

Community Lauch Londrina e Maringá

Por: Márcio Fábio Althmann

Page 89: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 89898989 89898989 Abri/ Mai - 2010 |

Fotos de Londrina

Márcio Fábio Althmann

É MCP, líder do grupo de usuários SharpCode, trabalha com desenvolvimento .NET desde 2003, é arquiteto de soluções .NET. Um dos autores do livro Desenvolvendo para Web usando o Visual Studio 2008. Vencedor do con-curso WinThe7, da Microsoft, na categoria Desenvolvedo-res. Possui artigos publicados em sites na internet e no seu blog pessoal www.marcioalthmann.net

Page 90: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 90909090 90909090 Abri/ Mai - 2010 |

No dia 20/03/2010 foi dada a largada para a copa de talentos da Microsoft através da rea-lização simultaneamente de eventos em di-versas cidades do Brasil. Em São Paulo, o grupo .NET Architects foi os organizadores do evento. O auditório ficou lotado.

Ficamos sabendo das novida-des demonstradas e aproveitei pa-ra conhecer amigos que sempre mantenho contato pelo twitter, e-mail. Parabenizo todos os palestrantes pelo exce-lente material e preparação do evento. As apresentações foram 100% práticas. Demos e mais demos.

Conteúdo apresentado: ♦ Novidades da IDE Visual Studio 2010 ♦ Novidades do .NET Framework 4.0 ♦ ASP.NET Web Forms 4 ♦ ASP.NET MVC ♦ Entity Framework 4.0 ♦ TDD no Visual Studio 2010 ♦ Diagramas de Arquitetura ♦ Linguagens e programação dinâmica Palestrantes: ♦ Giovanni Bassi ♦ Victor Cavalcante ♦ Leandro Daniel ♦ Fabio Margarito ♦ Vinicius Quaiato ♦ Daniel Fonseca Castro Algumas fotos:

Road Show em São Paulo

Por: Fernanda Sallai

Page 91: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 91919191 91919191 Abri/ Mai - 2010 |

Mais fotos acesse: http://www.flickr.com/photos/vcavalcante/

Perguntas e respostas aconteceram para finalizar as apresentações. Além do conhecimento adquirido, no final tiveram sorteio de brindes.

Fernanda Sallai ([email protected]).

É Bacharel em Sistemas de Informação e atua na área de desenvolvimento. Colaboradora do Portal Linha de Códi-go, editora da revista Codificando.net e escreve periodica-mente em seu blog www.fernandasallai.com e no twit-ter: @fernandasallai.

Page 92: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 92929292 92929292 Abri/ Mai - 2010 |

No sábado, dia 17/04 ocorreu o segundo evento em Piracicaba e desta vez tive a pos-sibilidade de comparecer. A galera de São Paulo compareceu no evento: @FernandoDev, @fefesaraiva, @thaissimonato, @DiegoNogare, @evilazaro e eu (@fernandasallai). O Community Launch em Piracicaba aconte-ceu na Faculdade Salesiana Dom Bosco e foi organizado pelas comunidades Azure Servi-ces BR e Inside Dot Net. Todas as palestras foram bem explicadas e demonstradas através de demos a suas apli-cações. Conteúdo apresentado: ♦ Criando Workflows de negócios com

Workflow Foundation 4.0 ♦ Windows Azure com Visual Studio

2010 ♦ ASP.NET MVC 2 e ADO.NET Entity

Framework 4.0 ♦ Novidades do C# 4.0 ♦ SharePoint como soluçao de negócios

(participação FTE da Microsoft Consul-ting Services)

♦ Introdução ao Windows Communication Foundation (WCF)

♦ Conheça o que te espera na plataforma de Business Intelligence do SQL Server 2008 R2

Parabéns a todos os palestrantes: André Baltie-ri , Lucas Romão, Evilázaro Alves, Felipe Prata Borges, Mayra Martho, Daniel Imamura, Israel Aéce e Thiago Zavaschi pela excelentes pales-tras e demos. Algumas fotos:

Community Launch em Piracicaba

Por: Fernanda Sallai

Palestra do Evilázaro Alves.

Galera reunida.

Page 93: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 93939393 93939393 Abri/ Mai - 2010 |

Palestra do Lucas Romão.

Palestra do Thiago Zavaschi.

Fernanda Sallai ([email protected]).

É Bacharel em Sistemas de Informação e atua na área de desenvolvimento. Colaboradora do Portal Linha de Códi-go, editora da revista Codificando.net e escreve periodica-mente em seu blog www.fernandasallai.com e no twit-ter: @fernandasallai.

Page 94: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 94949494 94949494 Abri/ Mai - 2010 |

Devido à minha falta de familiaridade com a geografia belorizontina, cheguei mais ou menos uma hora adiantado ao local do e-vento, o que não me foi mau porque pude sentar na primeira fileira e pude aproveitar muito bem os primeiros momentos do even-to. A título de informação, Belo Horizonte/MG, foi à décima segunda cidade por onde o e-vento Road Show passou, e, segundo os pa-lestrantes e organizadores, até o dia 29 de abril, data do evento, Belo Horizonte foi à cidade onde teve o maior índice de partici-pação, tendo por volta 400 participantes ins-critos. Na abertura, Rodrigo Dias e Renato Had-dad falaram sobre o cenário de uma empre-sa fictícia e o problema que essa empresa enfrentava relacionado à TI. O Renato, fez algumas abordagens acerca do que nós, com o desenvolvimento, poderíamos fazer para otimizar o negócio do nosso cliente, e, por suas vez, o Rodrigo o fez, falando de Infra Estrutura. Depois desse primeiro momento nos dividi-mos em duas salas, a saber: Infra e Dev. Na parte de Desenvolvimento, onde eu par-ticipei durante todo o tempo das palestras, pudemos contar com um conteúdo de alto

nível, apresentado, inicialmente, pela manhã e início da tarde pelo Renato, que abordou as novidades do ASP.NET4, Entity Framework 4, ASP.NET Dynamic Data, ferramentas ofereci-das no Visual Studio 2010 para facilitar a inte-gração de novos membros em equipe de de-senvolvimento, ferramentas para testers e montagem de UML. Depois, o Alex Schulz, demonstrou muitas novidades do SharePoint 2010, que, inclusive nos auxiliarão muito no desenvolvimento de aplicações nesse modelo, e, em todo o tempo, com o foco voltado à solu-ção do problema da nossa empresa. Na parte de Infra estrutura, foram abordados Windows Server 2008 R2, Windows7, Exchan-ge Server 2008, SharePoint 2010 e SQL Server 2008 R2. Tinha perspectivas de fato muito boas em rela-ção a esse evento, até porque estava me prepa-rando para ele a um mês, tendo em vista que me desloquei da minha cidade Governador Valadares (250 km de BH) para participar do evento, todavia, me surpreendi com a força que a comunidade.NET tem em nossa região, com a vontade das pessoas em participar, com a animação de todos ao verem as demonstra-ções, com as dúvidas, principalmente de cu-nho prático e muito mais: é indescritível! O time de palestrantes se mostrou muito bem preparado com demonstrações muito profun-das de novidades bastante recentes, o que, dia-

Road Show em Belo Horizonte

Por: Ítalo Chesley

Page 95: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 95959595 95959595 Abri/ Mai - 2010 |

Ítalo Chesley

É graduando em Análise e Desenvolvimento de Sistemas, pela Universidade Vale do Rio Doce. Já integrou equipes de suporte de sistemas em Delphi. Atualmente trabalha com Desenvolvimento de Sistemas em ASP.NET, Windows Forms e WPF e compõe a equipe de Desenvolvimento da UNIVALE, como estagiário. Mantém o blog http://italochesleytech.wordpress.com. Participa ativamente de Comunidades de Desenvolvimento.

Page 96: codificando-e-magazine15

www.codificando.net Abril / Maio 2009 | 96969696 96969696 Abri/ Mai - 2010 |

O ASP.NET MVC chegou para ser mais um item no leque de opções de soluções tecnoló-gicas de desenvolvimento oferecido pela pla-taforma .Net, e no final das contas, muitas pessoas encaram ele como um concorrente do ASP.NET Web Forms... Isso não é verdade!

Também é muito comentado o assunto produ-tividade... ouvimos por ai que “x” ou “y” é mais produtivo do que o outro.

O poder das duas tecnologias é muito grande, inclusive uma possibilidade e uma tendência muito grande é que cada vez mais as duas tec-

nologias evoluam em paralelo e claro que uma aproveitando a experiência da outra. O ASP.NET Web Forms herda características que o ASP.NET MVC trazia, como: rotas, con-trole maior de HTML, controle sobre nome de

controles, etc... porém ainda existem ca-racterísticas que diferem totalmente uma da outra, como: controle total do HTML no caso do ASP.NET MVC, ciclo de car-regamento da página gerenciável no ASP.NET Web Forms. Verdade final ☺☺☺☺

Quem for um desenvolvedor web e utiliza o ASP.NET tenha certeza que a plataforma evo-lui e evoluirá cada vez mas... o Core do

ASP.NET é incrivelmente poderoso e cada vez se tornará mais. Os desenvol-vedores ganham muito com essas pos-sibilidades e o ideal é que tenhamos um bom conhecimento das possibilidades para que as escolhas não sejam feitas de forma inadequada. Não escolha uma tecnologia “x” por modismo... justifique, venda para você mesmo a idéia que aquilo será bom ou não para o projeto/cliente e como já dis-

se outras vezes... ASP.NET MVC ou ASP.NET Web Forms? Tanto faz, desde que seja .NET

e-m

agazine

MVC – verdades e mentiras Por: Alexandre Tarifa

Mentira número 1: o ASP .NET MVC não é a evolução do ASP.NET Web Forms! Mentira número 2: o ASP.NET MVC não vai descontinuar de for-ma alguma o ASP.NET Web Forms! Verdade: o ASP.NET MVC é mais uma possibilidade no desen-

volvimento ASP.NET, inclusive o ASP.NET MVC e Web Forms

tem o mesmo core entre eles... o ASP.NET Core.

Mentira número 1: O ASP.NET MVC não é mais produtivo do que o ASP.NET Web Forms Mentira número 2: O ASP.NET Web Forms não é mais produtivo do que o ASP.NET MVC Verdade: as duas tecnologias proporcionam recursos de produtivi-

dade e são desenvolvidas no Visual Studio 2010/2008. O índice de

produtividade vai da experiência da equipe e pessoas... em seis

meses com ASP.NET MVC, uma equipe não vai ser mais produti-

va do que outra com um ano de experiência em ASP.NET Web

Forms e vice-versa.