Você está na página 1de 96

Sumrio

05 :. Eventos: Um Exemplo Prtico


Edio 15 Nmero 15 Ano 04 2010 EDITORES Alexandre Tarifa Diego Nogare Emerson Facunte Sergio Gonalves REVISO Felipe Pocchini Fernanda Sallai EDITORAO E DIAGRAMAO 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 Fbio Luiz Pessoa Campinho Fabrcio Sanches talo Chesley Jensen Clayton Juliano Schimiguel Laerte Junior Marcel Medina Mrcio Fbio Althmann Rodrigo Jos Santi Sara Barbosa Vinicius Quaiato

11:. Introduo a Expression Blend 3

15:. Temperaturas do MVP Summit 2010 com Power Pivot

18:. Aplicaes com N camadas em ASP .Net - Parte IV Final

24:. Criando o seu Prprio ORM

39:. SQL Reporting Service 2005 Parte V

49:. Uso do Microsoft Project descrevendo suas caractersiticas 55:. Novidades em Desenvolvimento no Sharepoint 2010

Fale com Editor


muito importante para a equipe saber a sua opinio sobre a revista, caso tenha alguma critica, sugesto, ou elogio entre em contato. Caso tenha interesse em publicar um artigo na revista envie o ttulo e um resumo do tema em formato Word.
revista@codificando.net

65:. JQuery 1.4 - Novidades

67:. C# 4.0 -Tipos Dinmicos

69:. Copa Microsoft de Talentos


Produzido por:

04:. Editorial
www.codificando.net

96:. .Close ( )

Edio 15 Nmero 15 Ano 04 2010

Editorial
Fala galera, essa edio da revista marca mais um divisor de guas no Codificando .Net! Seguindo o esprito da nossa comunidade de promover os membros ativos e que acreditam que o compartilhamento de conhecimento altrusta algo que engrandece nosso pas e faz a diferena entre ns, profissionais de tecnologia da informao. Digo que esta edio diferenciada, porque marca a transio da Editorao da revista Codificando .Net e-Magazine para a Fernanda Sallai. Ela vem desenvolvendo um trabalho fantstico com a revista, e nada mais justo do que retribuir o trabalho dela junto nossa comunidade colocando-a a frente das atividades que faz. No deixarei completamente a edio da revista, vou me manter no time, mas s auxiliando a Fernanda no que for preciso (no farei praticamente nada). Bom, depois de fazer a comunicao oficial desta mudana na revista, vou comentar sobre outro fator bem interessante desta edio: A Copa Microsoft de Talentos. A Copa foi realizada por mais de 8.000 participantes em todo o territrio nacional, ainda estamos nas quartas-de-final, mas agora s 120 participantes passaram. Essa Copa foi criada para divulgar os novos produtos lanados este ano e as pessoas que forem assistindo as apresentaes e realizando as provas vo acumulando pontos. Aconteceram vrios eventos atravs de Webcast inclusive fui moderador na apresentao de SQL Server 2008 R2 e tambm realizaram 17 eventos presenciais em vrios estados. Esta edio da revista trs 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 outros estados pudessem sentir como foram os eventos. Pra finalizar, no menos importante, os artigos que foram aprovados nesta edio esto com um nvel bastante elevado. Praticamente todos os artigos so de membros da comunidade 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 revista@codificando.net
Diego Nogare revista@codificando.net

e-magazine

Eventos: Um exemplo prtico

Por: Leandro Alves Santos

Nesse artigo, veremos como efetuar a implementao 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 ao executada. Por exemplo, temos o evento Click de um objeto Button que disparado sempre que um usurio 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 eventos, podemos criar nossos prprios eventos e o usurio de nossa classe pode respond-los. Projeto que ser criado Imagine um caso em que o usurio seleciona vrios arquivos de texto e clica em um boto em que os arquivos selecionados sero processados. Dependendo do tamanho de cada arquivo, da quantidade de arquivos selecionados, do computador do usurio, etc., essa tarefa pode demorar. Com a tela do aplicativo parada, o usurio pode imaginar que o aplicativo travou e pode tentar fech-lo ou tentar reiniciar o computador.

Isso pode ser evitado se, durante o processamento dos arquivos, ns informarmos ao usurio o que est ocorrendo internamente atravs do formulrio da aplicao. Ento, vamos criar um aplicativo que simula o processamento de arquivos e indica ao usurio o status desse processamento. Vamos ao exemplo prtico? 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 nome de Arquivos como podemos ver nas Figuras 1 e 2. O escopo dessa classe ser public. Veja a declarao da classe na Listagem 1.

Codificando.net e-magazine

Figura 1 Criando o projeto Arquivos.

www.codificando.net

Abr / Mai - 2010

Eventos: Um exemplo prtico

e-magazine

Listagem 3 Propriedade que retorna a quantidade de arquivos.

Figura 2 Adicionando a classe Arquivos ao nosso projeto.

namespace Arquivos { public class Arquivos { } }


Listagem 1 Declarao da classe Arquivos.

Na Listagem 4, criamos o mtodo que simula o processamento dos arquivos, efetuamos um looping no objeto arquivos, percorrendo cada string e inclumos uma chamada ao mtodo Sleep(), simulando um tempo de processamento em cada arquivo.

Na Listagem 2, vamos declarar um membro da classe do tipo StringCollection 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 simulao.
Listagem 4 Primeira verso do mtodo de processamento.

Codificando.net e-magazine

Antes de escrever o cdigo do nosso evento, vamos criar a classe que conter os dados do nosso evento. Essa classe herda da classe EventArgs. Essa classe conter uma varivel que vamos utilizar para passar o nome do arquivo que ser processado para a classe que vai responder ao nosso evento. Essa varivel ser privada e incluiremos uma propriedade para acess-la. Notem na Listagem 5 que a nossa propriedade contm o mtodo set declarado
Abr / Mai - 2010

Listagem 2 Cdigo criado para gerar a

Tambm teremos nessa classe, uma propriedade que retorna o nmero de arquivos a serem processados. Isso mostrado na Listagem 3.

www.codificando.net

Eventos: Um exemplo prtico

e-magazine

com o escopo internal. Quando declaramos um membro como internal, impedimos que esse membro seja acessado fora do assembly em que a classe foi criada. Fizemos isso para impedir que o mtodo que responde ao nosso evento possa modific-la.

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

Listagem 6 Declarao do delegate e do evento na classe Arquivos.

Listagem 5 Classe que contm os dados do evento.

Agora vamos declarar o delegate e o evento da classe. Veja na Listagem 6 que o delegate contm uma assinatura, seu retorno void, e os parmetros so do tipo object e CarregandoArquivoEventArgs. No parmetro do tipo object, passaremos uma referncia da classe que disparou o evento e no parmetro do tipo CarregandoArquivoEventArgs, passaremos uma referncia a um objeto criado na nossa classe e que conter o nome do arquivo que ser processado. Mas o que um delegate? Para capturarmos um evento e efetuarmos alguma ao com base nesse evento, precisamos de um delegate. Um delegate uma classe que contm uma referncia para um mtodo. Basicamente, um dele-

Estamos quase finalizando a classe arquivo. Agora teremos que revisitar o mtodo CarregarArquivos() para disparar o evento quando um arquivo estiver prestes a ser processado. Veja a nova verso do mtodo na Listagem 7. Primeiro criamos um objeto do tipo CarregandoArquivoEventArgs, e atribumos a string com o nome do arquivo a propriedade NomeArquivo do objeto. Depois verificamos se o evento nulo e caso ele no seja nulo, disparamos o evento passando o objeto que est disparando o evento e o objeto do tipo CarregandoArquivoEventArgs que contm o nome do arquivo. Por que tenho que verificar se um evento nulo? Caso o usurio de sua classe no tenha criado nenhum mtodo que responda ao evento, o evento ser nulo e quando tentarmos dispar-lo, ocorrer uma exceo NullReferenceException.

Codificando.net e-magazine

Listagem 7 Segunda verso do mtodo de processamento.

www.codificando.net

Abr / Mai - 2010

Eventos: Um exemplo prtico

e-magazine

Criando o formulrio que vai capturar o evento Adicione a soluo um projeto Windows Forms Application (figura 3), clique nesse projeto com o boto direito e clique em Set as StartUp Project.

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.

Figura 3 Criando o projeto ProcessadorArquivo.

Para trabalharmos com a classe Arquivos, precisamos adicionar uma referncia ao projeto Arquivos. Podemos fazer isso clicando com o boto direito no nosso projeto do tipo Windows Forms Application -> Add Reference. Aps isso, clique na Aba Projects, selecione o projeto Arquivos e clique em OK (figura 4).

Figura 5 Formulrio do nosso aplicativo.

Figura 4 Referenciando o projeto Arquivos.

Na Listagem 8, adicionamos um mtodo de captura ao evento Click do boto btnProcessarArquivos. Voc pode adicionlo clicando duas vezes no boto. Nesse evento, configuramos a propriedade TopMost para true para que o form fique sempre frente dos outros forms que no estejam configurados da mesma forma. Desabilitamos o boto para que o usurio veja que o mesmo no pode ser pressionado. Criamos uma instncia 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 cdigo:

Codificando.net e-magazine

Inclua os seguintes componentes ao form:

www.codificando.net

Abr / Mai - 2010

Eventos: Um exemplo prtico

e-magazine

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

Com ela indicamos que o mtodo arquivos_CarregandoArquivo responder ao evento quando ele for disparado e o seu cdigo ser executado. Para finalizar, chamamos o mtodo que processa os arquivos e ao final de todo o processamento, resetamos o valor do ProgressBar e da Label, habilitamos o boto e configuramos TopMost para false.

Agora precisamos escrever o cdigo do mtodo que responder ao evento. Podemos ver o cdigo na Listagem 9. Esse mtodo atualiza a label com o nome do arquivo que ser processado e incrementa o valor da barra de progresso. Ao final disso o form atualizado para que possamos visualizar os novos valores dos objetos.

Listagem 9 Mtodo que responde ao evento CarregandoArquivo.

Execute o aplicativo e voc ver o progresso da nossa simulao, tanto na Label que indica qual arquivo est sendo processado, como na barra de progresso.

Codificando.net e-magazine

Figura 6 Progresso do processamento sendo mostrado no formulrio.

Mas o meu form fica travado. E agora? possvel deixar o form livre para que o usurio continue fazendo outras tarefas durante o processamento dos arquivos atravs de threads e com a utilizao do

Listagem 8 Cdigo do evento Click do boto btnProcessar

www.codificando.net

Abr / Mai - 2010

Eventos: Um exemplo prtico

e-magazine

mtodo Invoke para a atualizao dos objetos do formulrio quando um arquivo comea a ser processado, mas isso foge do escopo do artigo. Concluso Com poucas linhas de cdigo podemos criar um evento para o nosso aplicativo enviar respostas durante o processamento para que o usurio no fique com a impresso de que o aplicativo travou e pare o processo forando o seu encerramento. Leandro Alves Santos
Bacharel em Sistemas de Informao. Atua a 4 anos com desenvolvimento e manuteno de sistemas. Tem experincia na Plataforma .NET (VB.NET e C Sharp), Visual Basic 6, Crystal Reports, Sql Server e MySql.

Codificando.net e-magazine
|

www.codificando.net

Abr / Mai - 2010

10

e-magazine

Introduo ao Expression Blend 3

Por: Fbio Luiz Pessoa Campinho

O Silverlight chegou a sua terceira verso, com novos recursos e melhorias, e nesse artigo iremos aprender a utilizar o Expression Blend, ferramenta que usamos para desenvolver nossas aplicaes e animaes. Podemos comprar ou baixar um Trial do Expression Blend 3, no link: http:// www.microsoft.com/expression/products/ Blend_Overview.aspx. A instalao simples e segue o padro Next Next Finish. Se voc seguiu a instalao padro, o blend vai estar no menu Iniciar -> Microsoft Expression -> Expression Blend 3 (figura 1).

Quando iniciamos o Blend pela primeira vez, veremos a tela de boas vindas com as opes para abrir Exemplos (Samples), Help e Projetos (Projects). Iremos clicar em Projets e depois New Project. A tela para criao de projetos aparecer conforme figura abaixo, nela temos as opes de Silverlight e WPF (Windows Presentation Fundation), ambos os projetos trabalham com o padro XAML (Extensible Application Markup Language). O Padro Silverlight para ambiente Web, enquanto o WPF para aplicaes Desktop. Selecionada a opo Silverlight vamos marcar a opo Silverlight 3 Application + Website. Essa uma melhoria em relao a verso 2 que cria alm de criar o projeto do Silverlight, cria outro projeto com um Web Site. Para finalizar selecionaremos a linguagem que iremos trabalhar, no nosso exemplo iremos manter o C#. Aps clicar em OK, os dois projetos sero criados conforme a figura 2.

Codificando.net e-magazine

Figura 1. Tela de inicio do Expression Blend 3.

www.codificando.net

Abr/ Mai - 2010

11

Introduo ao Expression Blend 3

e-magazine

Vamos desenhar um quadrado, que ser utilizado futuramente na nossa animao. Clique na imagem da Caneta e segure por 2 segundos, isso far com que as duas ferramentas fiquem visveis (Figura 4). Iremos trabalhar com a caneta (Pen), clique nela e no espao em branco da tela clique em quatro pontos da tela at formar um retngulo de quatro lados, no ltimo ponto posicione o mouse em cima do primeiro ponto, o mouse ir mudar indicando o fechamento do retngulo.

Figura 2. Criando um novo projeto no Blend.

Agora vamos criar nossa animao, o primeiro passo definir o tipo de Layout que iremos trabalhar. Clique em LayoutRoot com o boto direito (Figura 3), depois em Change Layout Type e selecione a opo Canvas. Essa a opo ideal para trabalharmos com desenhos e animaes.

Figura 4. Construindo um retngulo com a ferramenta Pen.

Agora vamos alterar nosso retngulo para transform-lo em um quadrado. Pressione F11 duas vezes para exibir em modo SPLIT exibindo o cdigo do XAML e o visual e pressione F4 para ampliar a rea de trabalho do Blend (Figura 5). Tudo o que desenhado, escrito ou adicionado no modo visual codificado em XAML. No nosso exemplo duas tags foram criadas: <CANVAS> que a rea onde sero adicionados os nossos desenhos e <PATH> que o nosso retngulo. Iremos modificar a propriedade Data da TAG <PATH> para transformar nosso retngulo em um quadrado. A letra M significa MoveTo e a letra L significa LineTo, a letra z indica o fechamento do Path. A
Abr/ Mai - 2010

Codificando.net e-magazine

Figura 3. Mudando o tipo do LayoutRoot para Canvas.

www.codificando.net

12

Introduo ao Expression Blend 3

e-magazine

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

Figura 6. Criando um novo Storyboard.

Figura 5. Tela em modo Split e Cdigo do Path.

Vamos executar diversos tipos de animaes bsicas que o Blend permite. Vamos pressionar F4 novamente para exibir as guias Objects and Timeline e Properties. Na primeira gerenciamos o tempo das animaes, na segunda estaremos alterando as propriedades a serem alteradas durante a animao. 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 linha de tempo onde definimos todas as animaes, o blend trabalha com tempo em segundos, d o nome de Animacao para o nosso Storyboard e pressione OK.

Clique no 10 segundo, posio 10 da linha de tempo e vamos comear nossas animaes. 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 animao que fizemos ColorAnimationUsingKeyFrames, voc pode verificar a modificao no XAML pressionando F11.

Codificando.net e-magazine

Figura 7. Mudando a cor para vermelho.

www.codificando.net

Abr/ Mai - 2010

13

Introduo ao Expression Blend 3

e-magazine

No sculo XVII Ren Descartes definiu os primeiros estudos sobre geometria cartesiana, estudos que definiam as transformaes bi-dimensionais, que so muito importantes para a computao grfica e que iremos ver na nossa animao. Vamos fazer agora o quadrado se movimentar para a direita 100 pixels. Esse tipo de animao definido como translao, 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 tambm usar a barra de rolagem. Digite 100 no X da propriedade Translate (Figura 8).

seu tamanho em 20%, para isso adicionamos o fator de 1,2 nos eixos x e y conforme figura 9. Finalmente clique no Play para ver a animao executando.

Figura 9. Transformao de Escala.

Pressione a tecla F11 para ver o cdigo XAML e observe a animao que criamos ela do tipo DoubleAnimationUsingKeyFrames e serve para alterar as propriedades do tipo Double e o cdigo que ir executar nossas animaes. Vimos aqui as trs animaes bidimensionais bsicas, explore as abas adicionais para descobrir outras possibilidades de animao. Estaremos explorando nas prximas matrias, outras tcnicas de animao com o StoryBoard e C#.

Fbio Luiz Pessoa Campinho


Figura 8. Transformao de translao.

Codificando.net e-magazine

No prximo passo iremos fazer nosso objeto rotacionar. Clique na setinha da aba de rotao e informe 720 no campo de ngulo que ir fazer o nosso objeto girar no sentido horrio sobre o seu prprio eixo 720 graus. Finalmente iremos reduzir fazer a transformao de escala, que aumenta ou diminui um objeto usando o fator sobre o seu prprio tamanho, ou seja voc informa quanto quer multiplicar o tamanho atual pelo fator, no nosso exemplo iremos aumentar o

fcampinho@hotmail.com Sou MCP, MCAD .NET e MCTS em Sharepoint e Windows 7, atualmente sou professor de Computao Grfica da Faculdade Dom Pedro II em Salvador e desenvolvedor a 15 anos. Desenvolvo para .NET desde 2001. Mantenho meu blog fcampinho.spaces.live.com

www.codificando.net

Abr/ Mai - 2010

14

e-magazine

Temperaturas do MVP Summit 2010 com PowerPivot


Por: Diego Nogare

Com o lanamento do SQL Server 2008 R2 previsto para os prximos meses, nada mais justo do que explorar algumas de suas funcionalidades. Algumas coisas que esto bem interessantes no SQL Server 2008 R2 sua customizao para trabalhar com BI, um ponto que a Microsoft est investindo pesado para o lanamento 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 informao irrelevante das temperaturas dos lugares que visitarei, com um exemplo de criao e utilizao do PowerPivot e Excel 2010. No vou reescrever com as minhas palavras o que o PowerPivot, justamente porque o Zavaschi fez isso muito bem neste artigo e neste outro. Recomendo a leitura! Pra comear, os links que utilizei pra montar isso foram:

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 tambm uma tabela no SQL Server 2008 R2, pra armazenar diretamente (isso significa que a forma mais rpida, e mais burra) de guardar estes dados. Eles sero utilizados s pra isso e no serviro pra mais nada. Mas como o objetivo s mostrar esses dados hoje, ento vou fazer assim mesmo! Fazendo um select simples na tabela, tenho o seguinte RowSet (figura 1):

Codificando.net e-magazine

Figura 1 Exibindo dados da tabela.

Pra encontrar a temperatura:


http://www.dryday.com/miniforecast.asp

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

timo, j tenho a tabela e j tenho os dados das temperaturas. Agora abrir o Excel 2010 e montar meu grfico das temperaturas.

www.codificando.net

Abr / Mai - 2010

15

Temperaturas do MVP Summit 2010 com PowerPivot

e-magazine

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

Figura 4 Adicionando informaes.

Figura 2 Acessando menu.

Agora esperar o ambiente de Workspace do PowerPivot carregar e comear a configurar as coisas. Quando se abre o PowerPivot Windows, essa tela abaixo apresentada, 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.

Depois de preencher as credenciais e avanar pra prxima 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.

Codificando.net e-magazine

Figura 5 Apresentando resultados.

Figura 3 Selecionando a origem dos dados.

Uma tela pra colocar as credenciais do banco, e demais informaes de acesso apresentada (figura 4).

Aps essa validao, s confirmar no boto OK e depois em Finish. O PowerPivot vai analisar a sua query e montar um relatrio em seu Workspace te apresentando o RowSet que retornou do banco com a facilidade de se trabalhar com o Excel 2010. Com os dados apresentados, possvel montar alguns relatrios com poucos cliques do mouse, utilizando todos os benefcios do Excel 2010. No exemplo vou montar

www.codificando.net

Abr / Mai - 2010

16

Temperaturas do MVP Summit 2010 com PowerPivot

e-magazine

um nico grfico, selecionando Single PivotChart, que a segunda opo do item PivotTable.

ras que vou enfrentar em Seattle exibido na figura 8:

Figura 6 Montando grfico.

Figura 8 Exibindo temperaturas.

Neste momento, o PowerPivot pergunta em qual Worksheet quero colocar o grfico que est selecionado, e ento, o grfico (sem nenhum dado ainda) apresentado, e as informaes que vieram do SQL Server 2008 R2 (ou qualquer outra fonte de dados selecionada) mostrado no TaskPanel. Agora que as informaes j esto de volta ao Worksheet do Excel 2010, s trabalhar normalmente. Isso timo pros Gerente / Diretores e Presidentes (no o da republica, mas os de verdade) veja na figura 7.

A informao da temperatura importante pra mim, pra eu me planejar com a quantidade de roupas que vou levar, mas a do PowerPivot bem legal pra quem trabalha com desenvolvimento de relatrios gerenciais. Fica ai a dica! Diego Nogare
Graduado em Cincia da Computao, Ps-Graduado em Engenharia de Computao com nfase em Desenvolvimento Web com .NET. Colaborador do Portal Linha de Cdigo e da revista SQL Magazine, Lder do grupo de usurios Codificando .NET, Lder dos Microsoft Student Partners [MSP] de So Paulo e Microsoft Most Valuable Professional [MVP] em SQL Server, possui certificaes MCP e MCTS em SQL Server 2005, palestrante em eventos da Microsoft, Codificando .NET e INETA BR, mantm o site: www.diegonogare.net.

Codificando.net e-magazine

Figura 7 Selecionando o Worksheet Worksheet.

Pra fechar, o relatrio com as temperatu-

www.codificando.net

Abr / Mai - 2010

17

e-magazine

Aplicaes em N Camadas com ASP .NET - PARTE IV FINAL


Por: Felipe Pocchini

Aplicaes em n camadas so desenvolvidas de forma distribuda, onde cada camada tem sua responsabilidade dentro do contexto. Para um modelo de aplicao Web so comumente usadas 3 camadas: Presentation(Apresentao), Business (Lgica do negcio) e Data(Responsvel pelas transaes com o banco da dados). Para finalizar esta srie de artigos, vamos desenvolver agora a camada de apresentao(Presentation), que ser a aplicao web que vai utilizar os recursos das camadas criadas para fazer o gerenciamento de clientes.

Figura 2: adicionando um novo projeto a soluo (Add > New Project).

Esse novo projeto no ser mais do tipo Class Library, e sim um projeto do tipo ASP.NET Web Application, que ser nossa aplicao. Como o foco desse artigo o entendimento de aplicaes em N camadas, vamos desenvolver a camada de apresentao utilizando um projeto do tipo ASP.NET Web Application, mas a mesma poderia ser desenvolvida utilizando outros tipos de projetos oferecidos pela tecnologia.

Codificando.net e-magazine

Figura 1: Exemplo de aplicao em N Camadas.

Iremos adicionar a camada Presentation em nosso projeto da mesma maneira que aprendemos a adicionar as outras camadas. Para adicionar a camada ao projeto, vamos clicar com o boto direito na soluo e adicionar um novo projeto.
Figura 3: projeto do tipo ASP.NET Web Application.

www.codificando.net

Abr / Mai - 2010

18

Aplicaes em N Camadas com ASP .NET - PARTE IV FINAL

e-magazine

Com o projeto adicionado a soluo, podemos agora trabalhar na camada Presentation.

das Entity e Business na camada Presentation.

Figura 4: projeto criado.

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

Para evitar erros na hora da execuo da aplicao, vamos seta-l como StartUp de nosso projeto.

A camada Presentation no precisa de uma referncia da camada Data, j que a camada Business responsvel pela comunicao entre elas. Listando dados

Codificando.net e-magazine

A primeira coisa a ser feita construirmos uma pgina onde sero listados todos os clientes cadastrados no banco de dados. Essa pgina 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 mtodo listar da classe Clientes pertencente a camada Business.

Figura 5: configurando o projeto como StartUp.

Para a camada Presentation reconhecer uma entidade da camada Entity, assim como os objetos da camada Business, necessrio adicionar as referncias das cama-

www.codificando.net

Abr / Mai - 2010

19

Aplicaes em N Camadas com ASP .NET - PARTE IV FINAL

e-magazine

Para implementar a codificao da pgina tecle F7 com o WebForm Default.aspx aberto, a janela com o Code-Behind ser aberta.

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

Para que as colunas do GridView no sejam criadas automaticamente vamos atribuir na propriedade AutoGenerateColumns o valor "False". Vamos ento, customizar o GridView adicionando um BoundField para o Nome e outro para o Email, vamos adicionar um LinkButton com um link para edio do registro, para isso vamos utilizar o TemplateField. Vamos utilizar tambm no WebForm, um Button para adicionar um novo Cliente a base de dados. Depois disso o cdigo deve ficar assim:

Codificando.net e-magazine

Figura 9: implementao do WebForm Default.aspx.

Figura 8: visualizao do cdigo .aspx do WebForm Default.aspx.

Vamos rodar a aplicao e se deu tudo certo at aqui, a pgina ser exibida:

www.codificando.net

Abr / Mai - 2010

20

Aplicaes em N Camadas com ASP .NET - PARTE IV FINAL

e-magazine

Figura 10: visualizao da pgina Default.aspx.

Visualizao detalhada do dados Para a edio e visualizao dos registros, vamos criar um novo WebForm, onde vamos ter os detalhes de cada Cliente cadastrado no banco.

Codificando.net e-magazine

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

Com o WebForm criado, podemos adicionar os componentes que vamos utilizar na edio dos dados.

Figura 12: visualizao do cdigo .aspx do WebForm Cliente_Edit.aspx.

Para implementar as funcionalidades do WebForm vamos teclar F7.

www.codificando.net

Abr / Mai - 2010

21

Aplicaes em N Camadas com ASP .NET - PARTE IV FINAL

e-magazine

Page_Load

Figura 15: visualizao do formulrio de edio executando uma insero.

Alterar

Figura 16: implementao do mtodo btnAlterar_Click.

Codificando.net e-magazine

Figura 13: implementao do mtodo Page_Load.

Salvar

Figura 17: visualizao do formulrio de edio executando uma alterao.

Figura 14: implementao do mtodo btnSalvar_Click.

www.codificando.net

Abr / Mai - 2010

22

Aplicaes em N Camadas com ASP .NET - PARTE IV FINAL

e-magazine

Excluir

Tratamento de erros, o uso de boas prticas e outras funcionalidades que voc usaria no desenvolvimento de sua aplicao em N camadas. Participe, escreva seu artigo e compartilhe conhecimento.

Aprofunde seus conhecimentos sobre esse tema na comunidade ASP.NET Para saber mais:
Viso geral de aplicativo de dados n camadas
Figura 18: implementao do mtodo btnExcluir_Click.

Confira tambm:
Aplicaes em N Camadas com ASP.NET - PARTE I Aplicaes em N Camadas com ASP.NET - PARTE II Aplicaes em N Camadas com ASP.NET - PARTE III

At a prxima, grande abrao a todos. Felipe Pocchini


Figura 19: visualizao do formulrio de edio executando uma excluso.

Conclumos que ao final de mais uma etapa, teremos todas as camadas implementadas e funcionando de forma independente. Lembrando que o objetivo desse artigo foi demonstrar o funcionamento de aplicaes em N camadas, alguns detalhes como tratamento de erros e outras funcionalidades foram deixadas de lado para no perdermos o foco do entendimento. Fica aqui ento a dica: Como voc implementaria cada camada de seu projeto?

Graduado em Cincia da Computao pela Universidade Jos do Rosrio Vellano (UNIFENAS), em Alfenas MG, trabalha com desenvolvimento de aplicaes Web e Windows Forms utilizando a tecnologia .Net. Moderador da comunidade Desenvolvendo para Web, colaborador da comunidade Codificando.Net e editor da revista eletrnica Codificando .Net e-Magazine.

Codificando.net e-magazine
|

www.codificando.net

Abr / Mai - 2010

23

e-magazine

Criando o seu prprio ORM

Por: Alexandre Marcondes

Introduo

Entendendo ORM Quando usar ORM? Como escolher um ORM? Por que criar seu prprio ORM? Como criar seu prprio ORM O que fazer aps criar seu prprio ORM?

guagem SQL. Outros problemas so incompatibilidade de tipos entre a linguagem e o SQL, diferenas estruturais, manipulativas e no tratamento de transaes. Entenda melhor as diferenas: Encapsulamento Sistemas usando OOP so projetados para encapsular os dados dentro de objetos, escondendo o seu funcionamento interno. Quando estes sistemas utilizam DBMS, os dados ficam expostos de forma que o encapsulamento quebrado, pois o banco de dados exposto publicamente, sem restries de acesso (geralmente s se utiliza proteo por login / senha, tornando todas as tabelas pblicas para usurios autenticados). Diferenas de tipos de dados A maior diferena entre sistemas que desenvolvidos com OOP e o uso de DBMS, est no sistema de tipos. No h suporte por parte dos DBMS para tipos por referncia (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 oculAbr / Mai - 2010

Objetivo Capacitar o leitor a decidir qual ferramenta de ORM deve usar e se necessrio, criar sua prpria ferramenta de ORM Introduo O Mapeamento Objeto-Relacional (ORM Object-relational Mapping ou O/R Mapping) uma tcnica usada para solucionar o problema da impedncia entre sistemas usando programao orientada a objetos (OOP Object Oriented Programming) e gerenciadores de bancos de dados relacionais (DBMS Data Base Management System). A impedncia causada porque sistemas que usam OOP, quando acessam um DBMS, precisam usar de tcnicas procedurais (o que quebra boa parte do conceito de OOP) devido s limitaes da lin-

Codificando.net e-magazine
|

www.codificando.net

24

Criando o seu prprio ORM

e-magazine

tam boa parte dos ponteiros como o .NET e o Delphi, e uma boa parte usa explicitamente ponteiros como o C++). A implementao de tipos bsicos ou escalares (como int, char, long, bool) varia de linguagem para linguagem e, algumas vezes, pode ser complicado traduzir entre tipos na linguagem de OOP e no DBMS. Diferenas estruturais e de integridade Acesso aos dados em OOP geralmente so feitos por meio de interfaces que provem acesso aos dados encapsulados, enquanto os DBMS usam de views para restringir o acesso a dados e manter a integridade. A manuteno de integridade diferente nos dois modelos, em OOP so utilizadas excees com escopos protegidos (geralmente com try ... catch) e eventos, enquanto em DBMS usa de restries (constraints) e chaves estrangeiras (foreign keys) para manter a integridade. Enquanto um sistema usando OOP aplica conceitos de classes, herana e polimorfismo, estas caractersticas no so suportadas por DBMS. H tambm o problema de que em OOP os dados so organizados hierarquicamente e em DBMS so organizados em tuplas com relaes no hierrquicas. Diferenas na manipulao Algumas das maiores diferenas esto na manipulao de dados, pois DBMS tm um conjunto pequeno de operadores para usar em operaes de busca e so otimizados para buscar tuplas de da-

dos. As linguagens de OOP, por sua vez, trabalham os dados em listas, colees e hash-tables utilizando-se de manipulao de baixo-nvel atravs de operaes imperativas e sub-linguagens para busca (como o LinQ). Diferenas nas transaes No aspecto de transaes, temos que as linguagens que suportam OOP, geralmente, no trabalham com transaes no modelo ACID, visto que a maioria das transaes envolve manipulao de dados simples em campos ou propriedades nos objetos. Uma das tcnicas para minimizar estes problemas o uso de ferramentas de Mapeamento Objeto-Relacional que permitam o programador aproveitar os recursos de OOP, mas de forma que no seja preciso preocupar-se com o funcionamento interno do DBMS ou com comandos em SQL. Entendendo ORM

Codificando.net e-magazine

As ferramentas de ORM geralmente se apresentam como bibliotecas que so usadas durante o desenvolvimento e elas usam diversas abordagens para resolver os problemas de impedncia ObjetoRelacional. As principais abordagens so as que seguem:

Gerao de cdigo SQL automatizada via cdigo apenas

A abordagem de gerao de SQL a mais simples de todas. H uma classe ou funo de persistncia que deve ser usada para gerar um SQL a partir de par-

www.codificando.net

Abr / Mai - 2010

25

Criando o seu prprio ORM

e-magazine

metros que sero colocados no template escolhido. Esta abordagem simplesmente esconde o cdigo SQL no sistema, reservando todos os comandos de banco de dados a alguns arquivos de configurao, mas no h mapeamento entre os objetos e os templates.
Mapeamento definido pelo usurio via arquivo de configurao

nas nos objetos. uma abordagem no invasiva pois permite que os objetos tenham sua prpria linha de herana, no interferindo no modelo do sistema.

Herana

Trabalhando um pouco mais no cdigo de gerao de SQL, e incluindo arquivos de configurao para o mapeamento, temos a possibilidade de no precisar escolher qual template usar quando chamamos as funes ou classes de persistncia. Esta abordagem facilita a codificao, pois partir do prprio objeto a biblioteca pode inferir quais so os parmetros.
Mapeamento definido pelo usurio em cdigo via atributos ou anotaes

Esta abordagem rpida e simples de implementar, mas por obrigar os objetos que sero persistidos a herdarem suas caractersticas de um objeto comum, muito do modelo do sistema OOP perdido. Em compensao, se ganha em facilidade ao codificar, pois as funes de persistncia tambm so herdadas e desta forma no h a necessidade de chamar funes ou classes especficas para persistir os dados.

Reflexo em POCOs (Plain Old C# Objects) ou POJOs (Plain Old Java Objects)

Alguns programadores evitam usar arquivos de configurao, especialmente em XML e, com o surgimento de funcionalidades como atributos em .NET e anotaes em Java, surgiu a necessidade de mapeamento de objetos sem arquivos de configurao. Estas bibliotecas usam recursos de reflexo para identificar o mapeamento de objetos e podem usar trs abordagens para isto:

Classe ou funo de persistncia

Utilizando-se dos recursos da linguagem no seu limite, algumas abordagens conseguem fazer com que tenhamos POCOs ou POJOs, sendo persistidos sem muitas vezes nem precisar dos atributos ou anotaes. Estas bibliotecas mostram-se as mais flexveis em relao a modelagem usada em OOP, pois h a possibilidade de unir o mapeamento seguindo padres, sem precisar herdar de uma classe comum e ainda chamar a funo de persistncia diretamente do prprio objeto.
Mapeamento seguindo um padro prdefinido

Codificando.net e-magazine

Nesta abordagem a funo ou classe de persistncia fazem uso de reflexo procurando por atributos especficos que identificam quais so as tabelas e colu-

Algumas bibliotecas preferem definir um padro de nomenclatura para as classes e campos de forma que fique simples mapear para tabelas e colunas. Caso haja excees, necessrio definir o

www.codificando.net

Abr / Mai - 2010

26

Criando o seu prprio ORM

e-magazine

mapeamento de forma manual via arquivo ou anotaes e propriedades. Nota do autor Os POCOs e POJOs so objetos simples, que no herdam de nenhuma classe da biblioteca em questo nem implementam nenhuma interface especfica para a persistncia. Quando usar ORM?

Pessoalmente, sempre que fao uma aplicao que usa banco de dados, eu fao questo de usar uma ferramenta de ORM. Eu gosto de manter a estrutura do modelo usando OOP nas aplicaes em que trabalho. Mas, opinies pessoais parte, ferramentas ORM devem ser usadas apenas quando h a necessidade de manter ou criar uma hierarquia de classes em OOP mais complexa, e ainda assim 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 quantidade de processamento a mais, em cada ao que tomar no banco de dados. Como escolher um ORM?

Alguns recursos podem ser essenciais para sua aplicao, assim, essencial uma boa escolha antes de comear a usar uma ferramenta de ORM. Alguns recursos so importantes de serem avaliados no processo de escolha da ferramenta certa para cada projeto. importante perguntar-se:

A ferramenta suporta polimorfismo e herana? Quaisquer tipos de relao podem ser mapeados (1-1, 1-n, m-n ou nn)? H como usar transaes? Funes agregadoras como SUM, AVG, MIN, MAX e COUNT tm seus equivalentes na ferramenta de ORM? Agrupamento e ordenamento so passveis de ser controlados? Quais DBMS so suportados? H como enviar diretamente comandos SQL se for necessrio (pode-se precisar de queries mais complexas ou usar funes especficas do DBMS)? Store Procedures e views so mapeadas? A ferramenta usa uma linguagem prpria de buscas de objetos (OQL, OPath ou LinQ)? A ferramenta suporta Databinding? JOINS e WHERE so suportados? Como a ferramenta trata a concorrncia no acesso aos dados? H alguma espcie de cache de dados em memria? Como o suporte para tipos de dados especficos do DBMS (como identity, sequences, generators, GUIDs, auto-incrementos)? H como mapear mltiplos objetos a partir de uma mesma tabela? A ferramenta implementa lazy loading? Tem como enviar mais de um comando para o DBMS (algumas ferramentas implementam o sistema de commits e rollbacks em memria ou bulk updates para otimizar o envio de comandos ao DBMS)?
Abr / Mai - 2010

Codificando.net e-magazine
|

www.codificando.net

27

Criando o seu prprio ORM

e-magazine

Como o desempenho da ferramenta? Como a ferramenta trata referncias circulares? A ferramenta suporta objetos serializveis?

estes recursos em C#, fiquei curioso e me senti desafiado a desenvolver minha prpria ferramenta de ORM. Desta forma criei o C# Data Objects ( CsDO http://www.codeplex.com/CsDO ). Como criar seu prprio ORM

Por que criar seu prprio ORM? Levando em considerao as opes de ORM mais difundidas em .NET, logo aps o lanamento do Framework .NET 2.0, surgiu uma necessidade e uma curiosidade, qual a dificuldade produzir minha prpria biblioteca de ORM de acordo com o que eu considerava mais produtivo em OOP. Levei em considerao os seguintes recursos que no encontrei nas ferramentas ORM da poca (pelo menos no todos na mesma ferramenta):

O primeiro passo para criar seu prprio ORM decidir qual abordagem ir seguir. Para criar o C# Data Objects (CsDO), eu e a equipe que me auxiliou no desenvolvimento decidimos por usar a abordagem de Herana com reflexo para termos configuraes 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).

Configurao da conexo de banco de dados por meio do web.config ou app.config Mapeamento automtico dos nomes das classes para tabelas Mapeamento automtico dos nomes de propriedades pblicas para colunas Possibilidade especificar propriedades que no devem ser mapeadas propriedades Configurao de mapeamento de por meio de atributos do .NET Possibilidade de executar no .NET 1.x / 2.0 e no Mono Mapeamento transparente de Foreign Keys Otimizao de buscas por meio da Primary Key

Codificando.net e-magazine

Figura 1.1. Conexo com o Banco de Dados

Como no foi possvel, na poca, encontrar uma biblioteca de ORM com todos

Figura 1.2. Atributos de configurao

www.codificando.net

Abr / Mai - 2010

28

Criando o seu prprio ORM

e-magazine

DO optamos por criar um classe usando o padro Singleton ( http:// pt.wikipedia.org/wiki/Singleton ). Agora toda a base est pronta, e devidamente testada o CsDO usou a metodologia TDD ( http://en.wikipedia.org/ wiki/Test-driven_development ) no desenvolvimento e teve muitos testes unitrios para garantir a integridade das aplicaes que o usam. Chegou o momento de criar o mapeamento propriamente dito. Como a escolha no CsDO foi de usar a herana para definir que classes devem ser mapeadas, a implementao resumiu-se em codificar um gerador de comandos SQL partir das propriedades do objeto por meio de reflexo ( http:// pt.wikipedia.org/wiki/Reflexo_ (programao) ).

Figura 1.3. Classe de acesso ao Banco de Dados.

Figura 1.4. Classe base para objetos de persistncia.

Assim, definimos uma Interface para o acesso ao DBMS ( IDataBase ) onde possvel manter a conexo ( 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, necessrio definir como as configuraes do mapeamento seriam inseridas no sistema, a escolha no CsDO foi de usar atributos em classes para mapear tabelas e em propriedades para mapear colunas e chaves primrias. Para evitar uma quantidade muito grande de configuraes desnecessrias, foi adotado o padro de que classes que descendem de DataObject automaticamente tm mapeado seu nome para o nome da tabela e o nome de suas propriedades pblicas para o nome das colunas, qualquer exceo deve ser configurada usando atributos. O prximo passo criar uma forma de acessar diretamente o DBMS para fazer queries mais complexas, caso haja necessidade (usadas geralmente em relatrios, grficos ou em anlise de dados). No Cs-

Codificando.net e-magazine
|

Figura 2. Comparao de performance entre concatenao de Strings (linha azul), StringBuilder com construtor padro (linha vermelha) e StringBuilder alocando memria no tamanho correto (linha verde).

Para gerar os comandos SQL muitas strings precisam ser concatenadas, assim, a escolha natural usar StringBuilder (Ver Figura 2) para minimizar o consumo de memria e aumentar a performance da biblioteca. As Listagens 1.1 a 1.5 mostram uma verso simplificada do
Abr / Mai - 2010

www.codificando.net

29

Criando o seu prprio ORM

e-magazine

cdigo necessrio para gerar o SQL de cada comando DML ( http:// pt.wikipedia.org/wiki/ Linguagem_de_manipulao_de_dados ). Os comandos devem ser usados da seguinte forma:

O delete e o update devem ter sempre a chave primria com contedo no zerado, caso contrrio ser feito um WHERE com todos os campos, para garantir que apenas aquele objeto ser atualizado; O insert deve ter pelo menos a chave primria com contedo no zerado; Para encontrar um objeto deve-se preencher um objeto novo com os campos a serem buscados e chamar o mtodo find, se retornar verdadeiro h registros vlidos para esta busca, em seguida deve-se chamar fetch enquanto ele retornar verdadeiro (como num DataReader) para preencher o objeto em questo com o valor de cada registro da busca.

1. 2. 3. 4. 5.

Para finalizar, algumas funes de suporte precisam ser desenvolvidas: getColumnProperties, formatValue, assertField e loadFields . Estas funes servem respectivamente para carregar as configuraes de uma coluna, formatar os dados para colocar na string SQL, validar os dados de uma coluna e carregar os dados das queries nos objetos e podem ser vistas nas Listagens 2.1 a 2.4 . Alguns desafios devero ser superados para a primeira verso de seu prprio ORM, seguem os desafios com as solues implementadas no CsDO:

Mapear objetos nulos para o banco de dados A Listagem 2.2 mostra como o CsDO resolve o problema, identificando Nullable Types e mapeando para NULL no DBMS; Mapear nulos do banco de dados para tipos que no aceitam nulos Tipos como int, long, float, double, char, string, DateTime e bool no aceitam nulos como padro e as solues foram as seguintes: int, long, float e double : mapear para 0; char : mapear para o caractere 0x0; string : mapear para String.Empty; bool : mapear para false; DateTime : mapear para 01-01-01 00:00:00; Mapear datas mapear usando ToString("yyyyMMdd HH:mm:ss"); Otimizar as queries identificamos campos ativos (no-nulos) e apenas estes formam as queries, desta forma dmininuimos o processamento no DBMS e no ORM; Identificar objetos alterados Atualemente apenas identifica campos nulos e preenchidos; Mapear chaves estrangeiras As chaves estrangeiras, no CsDO, so mapeadas automaticamente para as classes, desde que o tipo da propriedade seja o tipo da classe da tabela em questo. Ao gravar, o CsDO grava a chave primria da tabela secundria no campo de chave estrangeira e ao ler, carrega o objeto em questo com o registro da tabela secundria; Evitar redundncia, principalmente quando a tabela faz auto-referncia O CsDO tem uma propriedade

Codificando.net e-magazine
|

www.codificando.net

Abr / Mai - 2010

30

Criando o seu prprio ORM

e-magazine

pblica no persistida chamada Depth que tem como valor padro 3, a cada leitura de chave estrangeira ele debita 1 do nvel de profundidade, o que limita em 4 nveis de reentrncia (isto pode ser configurado objeto a objeto se necessrio); Comparao entre objetos mapeados Optou-se por comparar apenas as chaves primrias, por isto, foi feita a sobrecarga dos operadores de comparao e as funes ToString, Copy e GetHashCode;

&& !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.1 Cdigo 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'")

Listagem 1.2 Cdigo do Update


StringBuilder sql = new StringBuilder ("UPDATE "); StringBuilder clausule = new StringBuilder (); string search = ""; string operador = ""; StringBuilder values = new StringBuilder(); bool hasWhere = false;

Codificando.net e-magazine

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)

www.codificando.net

Abr / Mai - 2010

31

Criando o seu prprio ORM

e-magazine

name = propriedade.Name; } operador = " = ";

sql.Append(clausule);

bool result = false; 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 "); if (hasWhere) { int i = DataBase.New().Exec(sql.ToString()); Persisted = (i >= 1); result = (i >= 1); } else result = false; return result;

Listagem 1.3 Cdigo 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 = " = ";

Codificando.net e-magazine
|

www.codificando.net

Abr / Mai - 2010

32

Criando o seu prprio ORM

e-magazine

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;

Listagem 1.4 Cdigo 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 = " = ";

Codificando.net e-magazine

if (hasWhere) { int i = DataBase.New().Exec(sql.ToString()); result = (i == 1); } else result = false; return result;

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

www.codificando.net

Abr / Mai - 2010

33

Criando o seu prprio ORM

e-magazine

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

if (result) result = loadFields(dt[dt.Cursor], this); return result; } return false;

Listagem 2.1 Cdigo 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;

Codificando.net e-magazine

Listagem 2.2 Cdigo do formatValue


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

Listagem 1.5 Cdigo do Fetch


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

www.codificando.net

Abr / Mai - 2010

34

Criando o seu prprio ORM

e-magazine

{ valueObj = (property.GetValue(this, null) != null) ? property.GetValue(this, null) : "NULL"; } if (valueObj != null) { CultureInfo culture = new CultureInfo("enUS"); 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); 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 Cdigo do loadFields

Codificando.net e-magazine

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

www.codificando.net

Abr / Mai - 2010

35

Criando o seu prprio ORM

e-magazine
} else { val = assertField(null,

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;

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)

Codificando.net e-magazine
|

www.codificando.net

Abr / Mai - 2010

36

Criando o seu prprio ORM

e-magazine

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;

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 aps criar seu prprio ORM?

Codificando.net e-magazine

Listagem 2.4 Cdigo do assertField


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

Atualmente o projeto do CsDO (que tem o cdigo aberto) est estvel e tem tido poucas atualizaes mas aps a construo do ORM, e alguns projetos reais usando a biblioteca que voc construir, algumas necessidades surgiro. Este o momento que voc deve reavaliar o seu projeto tendo em vista as tecnologias que esto surgindo. No caso do CsDO, aps algum tempo, surgiram algumas tecnologias como LinQ, a cache de objetos Velocity, Nulable Types, Extension Methods e o Entity Framework. Reavaliando o projeto, h

www.codificando.net

Abr / Mai - 2010

37

Criando o seu prprio ORM

e-magazine

novos recursos / tecnologias que gostaria de implementar:

Alexandre Rocha Lima e Marcondes


dotnetarquitechts@alexandremarcondes.com.br Coach de executivos e profissionais de sucesso com 18 anos de experincia na rea de Tecnologia da Informao. Mais de 10.000 horas de vivncia como desenvolvedor de software e mais de 1000 pessoas treinadas na rea. Sua vasta experincia com grupos de trabalho remoto em diversas configuraes proporcionou o envolvimento em projetos com participantes em quatro continentes e mais de 35 pases. Reconhecido pela qualidade de seus produtos e treinamentos. Formao Profissional em Coaching com Eliana Dutra e Cursos de Formao Internacional em Coaching pelo Integrated Coaching Institute (ICI) Rhandy Di Stfano. Facilitador Licenciado pela Corporate Coach U International (CCUI). Consultor em Tecnologia da Informao com Graduao em Tecnologia em Processamento de Dados.

Desobrigar a herana, para possibilitar o uso de POCOs; Usar o modelo de deteco de alteraes similar ao do Entity Framework; Dar suporte ao LinQ e LINQ to SQL; Dar suporte completo a Nullable Types (atualmente h suporte parcial); Dar suporte cache de objetos Velocity (atualmente h uma cache implementada no prprio projeto); Dar suporte a DataSources, DataSets e Transfer Objects; Permitir o uso de transaes; Permitir o envio de vrios comandos em Batch ao DBMS;

Concluso Apesar de termos inmeras opes para fazer Mapeamento Objeto-Relacional, algumas vezes, preciso criar sua prpria soluo. O grande desafio saber quando optar por construir uma ferramenta ao invs de usar uma pronta e compreender como tomar as decises crticas para o projeto ter sucesso. Neste artigo tentei passar um pouco do conhecimento neste domnio de aplicao para que outros possam, eventualmente, criar suas ferramentas de ORM proprietrias ou novos projetos de cdigo aberto. Quaisquer dvidas ou sugestes, sinta-se livre para comentar e / ou entrar em contato.

Codificando.net e-magazine
|

www.codificando.net

Abr / Mai - 2010

38

e-magazine

Explorando microsot sql reporting services 2005 - Parte V


Por: Caio Azevedo

Ol pessoal, como prometido hoje apresentaremos, como consumir os relatrios, bem como apresentaremos outros exemplos com funcionalidades incrveis, imperdvel. Lembrando que todos os cdigos aqui implementados esto disponveis no site da nossa comunidade, http:// comunidade.codificando.net/ e no meu blog http://caiodotnet.blogspot.com/, bom divertimento. Parte V remote mode consumindo relatrios Consumindo o relatrio Relatrios hospedados no RS podem ser consumidos sob demanda, ou entregues via servio um de delivery. No cenrio mais comum, consumo sob demanda, o RS disponibiliza via Report Manager (URL, http://<servidor>/Reports, onde <servidor> corresponde ao nome ou endereo IP, da estao no qual o reporting services se encontra, se for na sua estao de trabalho localhost, tambm funciona.) os relatrios para visualizao, outra maneira de visualizao dos relatrios atravs do nosso j conhecido controle ReportViewer. Para o servio de entrega dos relatrios, o RS dispe de um servio de assinatura que vere-

mos mais adiante. Controle reportviewer Para interao dos relatrios com os clientes, temos o controle ReportViewer, disponvel no visual Studio, em duas verses uma para web e outra para Windows forms. Com ele possvel disponibilizar para as aplicaes um conjunto de funcionalidades tais como:

Exportao dos dados nos formatos Excel, PDF, CSV, TIFF, XML Suporte a impresso e visualizao de impresso do relatrio Rica Interatividade com navegao, document map, bookmarks e ordenao Pesquisa de texto no corpo do relatrio Zoom Permite validaes de parmetros customizados

Codificando.net e-magazine

Exemplos de relatrios A seguir implementaremos alguns relatrios para exemplificar o que j vimos at ento, bem como alguns recursos que veremos com os relatrios que criareAbr/ Mai - 2010

www.codificando.net

39

Explorando microsot sql reporting services 2005 - Parte V

e-magazine

mos. Nossos exemplos so baseados no modelo de dados apresentado na figura 2.3 que relaciona pedidos, itens de pedido, produtos e vendedores. Tentaremos aqui construir alguns exemplos de modo a complementar os exemplos criados nos relatrio Local Mode, com algumas funcionalidades especificas tais como parmetros multivalorados com datasets, bem como funcionalidades no exploradas tais como relatrios Matrix e uso de parmetros na formatao dos relatrios. Relatrio tabular - com uso de parmetros para formatao Nesse exemplo criaremos um relatrio que nos permite visualizar a relao de produtos, seu total em estoque e valor unitrio. A grande novidade aqui fazer uso de parmetros para formatao do relatrio, onde o usurio, de duas formas distintas, especifica quais colunas gostaria de visualizar. O relatrio tambm faz uso de formatao condicional atravs de uma funo do relatrio (tab Code, das propriedades do relatrio) para selecionar que imagem exibir conforme o valor da quantidade em estoque do produto. Criando o Relatrio Esse relatrio exibe as colunas com o nome, total em estoque (com uma imagem) e valor unitrio de cada produto. Primeiro Passo: Construo do DataSet. Para criao do DataSet, acessamos a tab Data do nosso ambiente de desenvolvimento e criamos um novo DataSet com as seguintes propriedades:

Nome: Command Type: Query string:

EstoqueProdutos Text select * from tb_produto order by ds_produto

Segundo Passo: Criao e modelagem do Relatrio. Incluiremos um novo relatrio em nosso projeto chamado TBEstoqueProdutos, Usando um objeto Table da toolbox dos relatrios criaremos a estrutura do relatrio formatado conforme a figura 3.15 (destaque para o objeto Image):

Figura 3.15 Formatao.

Nas propriedades do relatrio, tab Code,criaremos uma funo que ser utilizada para formatao da nossa imagem, essa funo tem o seguinte codificao (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
Listagem 1 - Funo de formatao da imagem.

Codificando.net e-magazine
|

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

www.codificando.net

40

Explorando microsot sql reporting services 2005 - Parte V

e-magazine

Value igual seguinte expression : =Code.GetImage(Fields! QT_ESTOQUE.Value) Terceiro Passo: Criar os parmetros Nosso relatrio disponibiliza para os usurios a possibilidade de exibir/ocultar suas colunas, para tal criamos os parmetros ExibePreco e coluna com as propriedades descritas na tabela a seguir:
Nome: Data Type: Prompt Nome: Data Type: Prompt Atributo: Available values ExibePreco Boolean Exibe Valor Unitrio ? Coluna String Exibir Colunas Multi-value Non-queried: Produto (1) Estoque(2)

Figura 3.16 - Relatrio em ao.

Nesse exemplo criaremos um relatrio 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 poderosos dos relatrios que o componente Matrix da caixa de ferramentas, utilizado para agrupamentos e totalizaes das informaes. Primeiro Passo: Construo do DataSet. Para criao DataSet, acessamos a tab Data do nosso ambiente de desenvolvimento e criamos um novo DataSet com as seguintes propriedades:
Nome: Comm and Type: Query string: Vendas Text

Quarto Passo: Configurar Colunas Finalmente, configuramos as colunas do nosso relatrio para serem exibidas conforme os parmetros anteriormente criados. Para tal especificamos as propriedades Visibility Hidden das colunas de Produto e Estoque respectivamente com as seguintes instrues em nosso editor de expressions:
=InStr(Join(Parameters!coluna.Value,", "),"1") = 0 e =InStr(Join(Parameters!coluna.Value,", "),"2") = 0

Codificando.net e-magazine

E na coluna de valor unitrio a seguinte instruo:


=Not Parameters!exibePreco.Value

Finalmente, eis nosso relatrio em ao (figura 3.16): Relatrio matrix

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 Abr/ Mai - 2010

www.codificando.net

41

Explorando microsot sql reporting services 2005 - Parte V

e-magazine

Segundo Passo: Criao e modelagem do Relatrio. Incluiremos um novo relatrio em nosso projeto chamado MxVenda.Usando um objeto Matrix da toolbox (que o chamaremos de mtx), criaremos a estrutura do relatrio formatado conforme a figura 3.17.

Figura 3.17 Formatao.

maticamente 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 descrio do produto, nomeados de mtx_no_vendedor e mtx_ds_produto (Para criar um segundo grupo, basta clicar com o boto direito sobre um dos grupos e selecionar a opo 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 sesso Data da matrix, com os campos em_estoque e valor_venda (observe que o RS utiliza a funo de agregao SUM, automaticamente para os campos da sesso Data), nossa matrix ter a aparncia parecida figura 3.19.

Iniciaremos a formatao desse relatrio, apresentando alguns conceitos do componente matrix. Uma matriz composta por linhas e colunas (Rows e Columns, vide figura 3.18) e como j dissemos, por um ou mais grupos associados s linhas e colunas que podemos criar e/ou editar nas propriedades da matriz (tab Groups).

Figura 3.19 Matrix com seus respectivos dados.

Codificando.net e-magazine

Figura 3.18 Matrix suas linhas e colunas.

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

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 posio da coluna, o que gerar auto-

www.codificando.net

Abr/ Mai - 2010

42

Explorando microsot sql reporting services 2005 - Parte V

e-magazine

Figura 3.21 Matrix em ao. Figura 3.20 Matrix visibilidade dos grupos.

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 boto direito sobre a caixa de texto no_vendedor, selecionar a opo Subtotal). E finalmente, para preenchermos com o 0 (zero) os campos sem valor, usamos as seguinte instrues 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))

Nesse exemplo criaremos um relatrio que nos permite visualizar a relao de produtos, suas respectivas categorias, total em estoque e valor unitrio. At ai nada diferente do que j fizemos em outros relatrios, no entanto faremos uso de um recurso at ento no utilizado, que so os parmetros multivalorados para o filtro dos produtos a serem exibidos. Nosso relatrio disponibilizar uma coleo de categorias para os usurios, e uma vez selecionadas essas categorias, sero disponibilizados os produtos dessas categorias, sendo que o prprio relatrio selecionar por padro os produtos das categorias anteriormente selecionadas que tenha sido parte integrante de algum pedido. Os parmetros multivalorados no so interpretados por stored procedures somente por instrues T-SQL do tipo text, uma vez que eles so repassados com a seguinte formatao: param1,param2,param2,...,paramN utilizadas na clausula IN do SQL, no entanto quando utilizadas em stored procedures o SQL no interpreta corretamente esses valores, sendo necessrio criar artifcios para remediar a situao como veremos

Codificando.net e-magazine

Formatando as caixas de texto para valores moeda e numrico, temos nosso relatrio com a seguinte forma figura 3.21.

www.codificando.net

Abr/ Mai - 2010

43

Explorando microsot sql reporting services 2005 - Parte V

e-magazine

em nossos exemplos. Primeiro Passo: Construo dos DataSets. Criaremos um conjunto de DataSets que sero usados, tanto para parametrizar os dados do relatrio como para criar um conjunto de valores possveis para os campos multivalorados. Nosso primeiro DataSet o primeiro de nossos parmetros que a relao de categorias, esse DataSet tem as seguintes caractersticas:
Nome: Command Type: Query string: dsCategorias Text SELECT * FROM TB_CATEGORIA

Uma matriz composta por linhas e colunas (Rows e Columns, vide figura 3.18) e como j dissemos, por um ou mais grupos associados s linhas e colunas que podemos criar e/ou editar nas propriedades da matriz (tab Groups).

Figura 3.18 Matrix suas linhas e colunas.

Segundo Passo: Criao e modelagem do Relatrio. Incluiremos um novo relatrio em nosso projeto chamado MxVenda.Usando um objeto Matrix da toolbox (que o chamaremos de mtx), criaremos a estrutura do relatrio formatado conforme a figura 3.17.

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 posio da coluna, o que gerar automaticamente 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 descrio do produto, nomeados de mtx_no_vendedor e mtx_ds_produto (Para criar um segundo grupo, basta clicar com o boto direito sobre um dos grupos e selecionar a opo 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 sesso Data da matrix, com os campos em_estoque e valor_venda (observe que o RS utiliza a funo de agregao SUM, automaticamente para os campos da sesso Data), nossa matrix ter a aparncia parecida figura 3.19.

Codificando.net e-magazine

Figura 3.17 - Formatao.

Iniciaremos a formatao desse relatrio, apresentando alguns conceitos do componente matrix.

Figura 3.19 matrix com seus respectivos dados.

www.codificando.net

Abr/ Mai - 2010

44

Explorando microsot sql reporting services 2005 - Parte V

e-magazine

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

relatrio com a seguinte forma figura 33.21.

Figura 3.21 Matrix em ao.

Relatrio tabular - com uso de parmetros multivalorados Nesse exemplo criaremos um relatrio que nos permite visualizar a relao de produtos, suas respectivas categorias, total em estoque e valor unitrio. At ai nada diferente do que j fizemos em outros relatrios, no entanto faremos uso de um recurso at ento no utilizado, que so os parmetros multivalorados para o filtro dos produtos a serem exibidos. Nosso relatrio disponibilizar uma coleo de categorias para os usurios, e uma vez selecionadas essas categorias, sero disponibilizados os produtos dessas categorias, sendo que o prprio relatrio selecionar por padro os produtos das categorias anteriormente selecionadas que tenha sido parte integrante de algum pedido. Os parmetros multivalorados no so interpretados por stored procedures somente por instrues T-SQL do tipo text, uma vez que eles so repassados com a seguinte formatao: param1,param2,param2,...,paramN utilizadas na clausula IN do SQL, no entanto quando utilizadas em stored procedures o SQL no interpreta corretamente esses valores, sendo necessrio criar artifcios

Figura 3.20 Matrix visibilidade dos grupos.

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 boto direito sobre a caixa de texto no_vendedor, selecionar a opo Subtotal). E finalmente, para preenchermos com o 0 (zero) os campos sem valor, usamos as seguinte instrues 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))

Codificando.net e-magazine

Formatando as caixas de texto para valores moeda e numrico, temos nosso

www.codificando.net

Abr/ Mai - 2010

45

Explorando microsot sql reporting services 2005 - Parte V

e-magazine

para remediar a situao como veremos em nossos exemplos. Primeiro Passo: Construo dos DataSets. Criaremos um conjunto de DataSets que sero usados, tanto para parametrizar os dados do relatrio como para criar um conjunto de valores possveis para os campos multivalorados. Nosso primeiro DataSet o primeiro de nossos parmetros que a relao de categorias, esse DataSet tem as seguintes caractersticas:
Nome: Command Type: Query string: dsCategorias Text SELECT * FROM TB_CATEGORIA

das que j constarem em pelo menos um pedido. Para resolvermos a limitao do RS com parmetros multivalorados em stored procedures, criamos a funo Split. Esse dataSet tem as seguintes caractersticas:
Nome: Command Type: Query string: dsProdutosDefaultValue StoredProcedure getProdutosinItensPedido, cujas instrues T-SQL so: 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

O prximo DataSet retorna um conjunto de todos os produtos, provenientes da tabela de produtos, dado as categorias anteriormente selecionadas. Esse DataSet tem as seguintes caractersticas:
Nome: Command Type: Query string: dsProdutosinCategorias Text SELECT * FROM tb_Produto prod INNER JOIN TB_CATEGORIA cate ON [prod].ID_CATEGORIA = [cate].ID_CATEGORIA WHERE [prod].ID_CATEGORIA in (@idCategorias )

Finalmente criaremos o DataSet para preenchimento do relatrio em uma consulta simples tendo como parmetro as identificaes dos produtos. Novamente utilizaremos a funo Split. Esse DataSet tem as seguintes caractersticas:
Nome: Command Type: Query string: dsDetalhesdoProduto StoredProcedure getProdutosporCategoria, cujas instrues T-SQL so: 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 Abr/ Mai - 2010

Codificando.net e-magazine

Agora o DataSet que carrega os valores default para os produtos na lista de produtos. Nosso critrio sero os produtos das categorias anteriormente seleciona-

www.codificando.net

46

Explorando microsot sql reporting services 2005 - Parte V

e-magazine

Segundo Passo: Criao e modelagem do Relatrio. Incluiremos um novo relatrio em nosso projeto chamado TBProdutosporCategoria, Usando um objeto Table da toolbox dos relatrios, criaremos a estrutura do relatrio formatado conforme a figura 3.22:

O prximo parmetro a relao de produtos com valores default, todos com dados provenientes de DataSets, e que configurado conforme a figura 3.24.

Figura 3.24 parmetro multivalorado com Figura 3.22 Formatao. valores default.

Terceiro Passo: Criar os parmetros Como j dissemos nosso relatrio permite que os usurios selecionem um ou mais produtos a partir de um filtro prvio das categorias. Ambos os parmetros so exibidos em dropdowns, cujos valores so provenientes dos datasets previamente criados. O primeiro parmetro a relao de categorias, que configurado conforme a figura 3.23.

Finalmente, eis nosso relatrio em ao figura 3.25:

Codificando.net e-magazine

Figura 3.25 Parmetros multivalorados em ao.

Deploy dos relatrios Uma vez criados faremos o deploy dos nossos relatrios. Para tal, basta selecionar no Visual Studio o menu Build Deploy <<nome do projeto>>. Uma vez que o projeto esteja configurado (ver sesso Configuraes das Propriedades do Projeto, figura 3.8), nossos relatrios estaro disponveis na url: http://<servidor>/ Reports, onde <servidor> corresponde ao nome ou endereo IP, da estao no qual o reporting services se encontra, se for na

Figura 3.23 Parmetro multivalorado.

www.codificando.net

Abr/ Mai - 2010

47

Explorando microsot sql reporting services 2005 - Parte V

e-magazine

sua estao de trabalho localhost, tambm funciona, que corresponde ao aplicativo Report Manager (figura 3.26).

funcionalidades adicionais do reporting services muito teis tais como servios de delivery, cache e os importantssimos aspectos de segurana, grande abrao e at l. Caio Azevedo
Graduado em Cincia da Computao, Engenharia Civil e louco por cincias exatas em especial fsica e matemtica. Coordenador da Clula Microsoft da Magna Sistema e Arquiteto Microsoft, palestrante, tecnocolunista e instrutor da treinando .net. MCP, MCAD, MCSD, MCTS e MCPD. E fantico pela srie star wars may the force be with you. Blog: http://caiodotnet.blogspot.com/

Figura 3.26 Report Manager.

Nossos relatrios esto disponveis na pasta Treinando. Limitaes Os relatrios Remote-mode suprem com grande eficincia uma demanda muito comum e pouco explorada que so os relatrios, especialmente em ambientes web, no entanto temos algumas limitaes que esperamos serem sanadas em prximas verses. Abaixo relacionamos alguns dos itens que apontamos como limitaes desse modelo de relatrios.

Codificando.net e-magazine

Dependncia do IIS Requer uma infra-estrutura mais sofisticada A API OLEDB, de acesso a dados possui algumas restries funcionais Interface padro com restries no Firefox

Por hoje s pessoal, na prxima edio nosso ultimo artigo, apresentaremos

www.codificando.net

Abr/ Mai - 2010

48

e-magazine

Uso do Microsoft Project: Descrevendo suas Caractersticas


Por: Rodrigo Jos Santi e Dr. Juliano Schimiguel

1. Introduo Microsoft Project um software de gesto de projetos (ou gerncia de projetos) produzido pela Microsoft.Criado pela Microsoft em 1985 (primeira verso). Nos anos posteriores sofreu profundas mudanas, de layout at funcionais, aumentando a oferta de servios e recursos relacionados gesto de projetos. So vrios os focos do Ms Project: tempo (datas, durao do projeto, calendrio de trabalho), Grfico de Gantt, modelo probabilstico (para clculos relacionados planejamento), Diagrama da Rede, Custos (fixos, no fixos, outros) e uma gama de relatrios. A ltima verso, Microsoft Project Professional 2007 ainda possui mais recursos. Um timo software para gestores, administradores e coordenadores. A interface padronizada da Microsoft (similar a outros produtos da empresa) facilita para os iniciantes a familiarizao com o produto. Ainda carece de maior conhecimento dos profissionais envolvidos com gesto de negcios.Com o decorrer dos anos, o Microsoft Office Project tornou-se numa das principais ferramentas de gesto de projetos para usurios que desejam fazer a diferena no seu trabalho mediante o planejamento, gesto e comunicao eficazes das informaes dos projetos.O Microsoft Office Project fornece ferramentas de gesto de projetos robustas em conjunto com a combinao ideal de usabilidade, capaci-

dade e flexibilidade, para que possa gerir os projetos diretamente a partir do seu computador. O objetivo do Microsoft Project desenvolver a capacidade de planejar e gerenciar projetos de qualquer natureza utilizando o MS Project, uma das ferramentas mais adequadas e exigidas para Gerentes, Engenheiros, ou Lderes de projetos.O Microsoft Project possui vrios recursos que podem ser utilizados pelo Gerente de Projeto, no entanto, so poucos os profissionais que realmente sabem utilizar a maioria destes recursos. O Microsoft Project lembra bastante uma planilha em Excel basicamente os menus e botes Microsoft Project segue o padro do Microsoft Office apesar de parecer uma ferramenta de simples manuseio como um Excel ou Word, o Microsoft Project uma ferramenta complexa e seu manuseio no to simples assim. Seguem-se as principais razes para utilizar o Microsoft Project: 2. Caractersticas do Microsoft Project
2.1 Estimativa e Agendamento Realistas

Codificando.net e-magazine
|

A definio de expectativas realistas junto das equipes de projeto, gerncia e clientes depende, muitas vezes, de uma es-

www.codificando.net

Abr / Mai - 2010

49

Uso do Microsoft Project: Descrevendo suas Caractersticas

e-magazine

timativa hbil de agendas, necessidades de recursos e oramentos. O Project no s ajuda a gerir o processo de criao de agendas cronolgicas e de estimativas dos custos, como ainda ajuda a compreender o impacto que as alteraes ou atrasos aplicados a tarefas especficas podero exercer sobre o projeto como um todo (figura 1).

um dos relatrios personalizados, prontos para utilizar, listados. A criao de relatrios claros e simples permite-lhe informar a sua equipa e a gerncia do estado do projeto de forma eficaz, e, ao mesmo tempo, controlar o andamento do projeto atravs de clculos do valor estimado, do caminho crtico e de vrios clculos base. Exemplos de relatrios existentes no Project na figura 3:

Figura 3: Exemplos de relatrios no Project. Figura 1: Estimativa e agendamento realistas.

Os crculos se referem ao numero dado aquela etapa do projeto, lembrando que PRODECESSORAS significa que para se fazer uma etapa necessrio que a etapa prodecessora esteja finalizada.

Exemplo de Relatrio de custos oramento conforme figura 4:

Codificando.net e-magazine

Figura 4: Exemplos de relatrio de custos. Figura 2: Planejamento e gesto orientados.

2.4 Melhorando a Atribuio de Recursos 2.3 Criando Relatrios e Controlando Projetos em Tempo

possvel melhorar a exatido e oportunidade da criao de relatrios escolhendo

Com o Project, podemos atribuir recursos a tarefas com facilidade e ajustar o respectivo mtodo de atribuio para resolver conflitos e sobre atribuies. Desta forma, teremos

www.codificando.net

Abr / Mai - 2010

50

Uso do Microsoft Project: Descrevendo suas Caractersticas

e-magazine

um maior controle e flexibilidade sobre a gesto dos recursos, agendas de projetos e custos.

2.6 Integrao de Dados

O Project pode ser facilmente integrado em outros programas do Microsoft Office System. Com algumas combinaes de teclas, poder converter listas de tarefas existentes em planos de projeto do Microsoft Office Excel e Microsoft Office Outlook. Tambm possvel adicionar recursos a projetos a partir do servio de diretrio Microsoft Active Directory ou do livro de endereos do Microsoft Exchange Server.
2.7 Usabilidade

Figura 5: Atribuio de recursos.

2.5 Apresentao Eficiente de Informaes do Projeto

Os gestores de projetos podero apresentar as informaes, rpida e facilmente, num vasto leque de formatos. Atravs de um novo assistente, poder formatar e imprimir agendas numa nica pgina com facilidade. Tambm poder exportar facilmente os dados do projeto para o Microsoft Word, para obter documentos formais, para o Microsoft Excel, para obter grficos ou folhas de clculo personalizadas, para o Microsoft PowerPoint, para obter apresentaes inovadoras, ou para o Microsoft Visio, para obter diagramas na figura 5.

Uma interface melhorada, consistente com as Edies do Microsoft Office, facilita a aprendizagem do Project e o acesso s ferramentas e funcionalidades de que necessita. As barras de ferramentas e menus intuitivos, assim como outras funcionalidades, permitem-lhe dominar rapidamente os conceitos fundamentais da gesto de projetos, mesmo que nunca tenha utilizado o Project antes (figura 6).

Codificando.net e-magazine

Figura 6: Usabilidade melhorada.

Figura 5: Apresentao eficiente de informaes do projeto.

2.8 Ajuda

O Project fornece um variado leque de ferramentas de ajuda, tanto para usurios

www.codificando.net

Abr / Mai - 2010

51

Uso do Microsoft Project: Descrevendo suas Caractersticas

e-magazine

principiantes como para experientes. O Project inclui um mecanismo de busca de ajuda robusto, etiquetas inteligentes e assistentes, integrando ainda o acesso online, caso tenhamos uma conexo com a Internet, a cursos de formao, modelos, artigos, entre outros (figura 7).

Figura 7: Ajuda imediata.

tomatizar seu processo de relacionamento com cerca de 65 distribuidores exclusivos que atuam em todo o Brasil, comercializando implementos para transporte rodovirio, vages ferrovirios e silos, entre outros itens. A empresa buscava maior sinergia com sua rede para potencializar as vendas, o que implicava em obter uma viso completa do processo de negcio, desde a fase de prospeco. Tais ganhos s foram conquistados aps a implementao do Microsoft Dynamics CRM. Agora, alm de acompanhar melhor o trabalho, a Randon Implementos est mais segura de ter fortalecido sua parceria com os revendedores.
3.2 Dimebel

2.9 Personalizao Simples

Um conjunto de vrias funcionalidades personalizveis permite adaptar o Project de modo a refletir as necessidades especficas do projeto. Escolha um dos campos de apresentao personalizados listados que passam a fazer parte da agenda do projeto. Tambm pode modificar barras de ferramentas, frmulas, indicadores grficos e relatrios. Para ter acesso a uma flexibilidade acrescida, o formato de arquivo XML (Extensible Markup Language), o Microsoft Visual Basic for Applications (VBA) e os suplementos COM (Component Object Model) facilitam a partilha de dados e a criao de solues personalizadas. 3. Exemplos de Empresas que utilizam o Microsoft Project
3.1 Randon Implementos

Empresa de distribuio de produtos farmacuticos, a Dimebel tinha o desafio comum a vrias empresas: lidar com um ambiente de tecnologia heterogneo, o que dificulta o gerenciamento e gera problemas de segurana. Para mudar esse cenrio, a Dimebel decidiu renovar seu ambiente de TI para extrair mais de cada software. Atualizou suas estaes com o Windows Vista e assim garantiu mais estabilidade s suas aplicaes de negcios. Com o Microsoft Windows Server 2008, a Dimebel ganhou vrios recursos que facilitam processos gerenciais rotineiros. E instalando o Microsoft Forefront em suas estaes de trabalho, assegurou maior proteo s suas
3.3 Empro

Codificando.net e-magazine

Prestes a comemorar seis dcadas de atuao, a Randon Implementos precisava au-

A Empro ganhou produtividade e controle com Office 2007 e Microsoft Project. A heterogeneidade do ambiente e a falta de ferramentas que permitissem maior controle so-

www.codificando.net

Abr / Mai - 2010

52

Uso do Microsoft Project: Descrevendo suas Caractersticas

e-magazine

bre os projetos levaram a Empresa de Processamento de Dados da Prefeitura de So Jos do Rio Preto a promover mudanas na sua estrutura tecnolgica. A companhia implementou o Microsoft Office system 2007 e o Microsoft Project. Alm da reduo dos chamados de help desk, graas ao fim das falhas por incompatibilidade, a Empro observou aumento de produtividade. A gesto dos projetos tambm foi aprimorada e possvel acompanhar as iniciativas de TI em tempo real e realizar ajustes ao longo do processo de desenvolvimento. 4. Concluso Considerando o risco de fracasso de um projeto, adotar uma ferramenta que facilite o planejamento e o acompanhamento imprescindvel. O MS Project uma ferramenta da Microsoft que possui diversos recursos que podem ser usados para aumentar s chances de sucesso de um projeto, controlando os gastos, o uso de matria-prima, a mo-de-obra utilizada em cada tarefa, o tempo previsto para concluso, o tempo real de concluso e vrias outras informaes importantes para o desenvolvimento. O Microsoft Project uma aplicao informtica que gere uma base de dados onde so Introduzidas todas as informaes correspondentes a um projeto. Estas informaes Referem-se principalmente a tarefas e suas duraes e relaes, recursos, custos, horrios de trabalho e atribuies de recursos a tarefas. Todas estas informaes so submetidas a um programa de clculo baseado em agendas, o que permite dar ao utilizador elementos exato e refe-

renciados no tempo, das variveis caractersticas do projeto. Tendo em conta a interdependncia entre tempo, custo e trabalho, o Project permite aos gestores de projetos tantas simulaes quantas necessrias para decidir quais as condies mais favorveis para a execuo desses projetos. Paralelamente tambm possvel produzir documentao que permite aos decisores de topo, mesmo que no tenham conhecimentos especficos sobre a utilizao deste software, avaliar quais as condies de planejamento impostas ao desenvolvimento dos trabalhos e, a Posteriores avaliar o desempenho dos intervenientes mo desenrolar do projeto. Usando o Microsoft Office Project, podemos estimar e controlar informaes de custo (custo: o custo agendado total de uma tarefa, de um recurso, de uma atribuio ou de um projeto inteiro. s vezes chamado de custo atual. No Project, os custos da linha de base so geralmente denominados "oramento".) bsicas para seu projeto. Podemos usar uma variedade de tipos de custos, e o Project calcula esses custos para o usurio medida que o projeto avana. O uso do Ms Project d uma notvel contribuio para a produo da documentao e os seus recursos so suficientemente vastos para que ele possa constituir uma espinha dorsal de todo o sistema de informao do Projeto. Na base de dados do Project est contida toda a informao referente a trabalho, datas, tempos, recursos humanos, recursos materiais e custos envolvidos no projeto.

www.codificando.net

Abr / Mai - 2010

Codificando.net e-magazine
53

Uso do Microsoft Project: Descrevendo suas Caractersticas

e-magazine

REFERNCIAS: Project 2003 verso 7, Dados obtidos: ltimo acesso: 08/12/2009. Site: Microsoft, http://office.microsoft.com/pt-br/project/ HA101672711046.aspx Rodrigo Jos Santi
Aluno de Tecnologia em Anlise e Desenvolvimento de Sistemas FATEPA Faculdade de Tecnologia Unianchieta Centro Universitrio Anchieta Jundia, SP

Prof. Dr. Juliano Schimiguel


Professor do Curso de Tecnologia em Anlise e Desenvolvimento de Sistemas FATEPA Faculdade de Tecnologia Unianchieta Centro Universitrio Anchieta Jundia, SP

www.codificando.net

Abr / Mai - 2010

Codificando.net e-magazine
54

e-magazine

Novidades em Desenvolvimento no Sharepoint 2010


Por: Marcel Medina

Neste artigo mostrarei um overview das novidades em desenvolvimento para o Sharepoint 2010 no que diz respeito a novas ferramentas que podemos utilizar para o desenvolvimento de solues em Sharepoint. O objetivo principal do time de Sharepoint da Microsoft foi de criar uma nova plataforma atrativa para desenvolvimento, de maneira que possamos identificar o Sharepoint 2010 como um ambiente para criao de aplicaes. Dessa forma ao escolher uma plataforma para criao de aplicaes, arquitetos e desenvolvedores decidam por criar uma soluo no Sharepoint, pois este apresenta um cenrio favorvel ao desenvolvimento. Para tornar o Sharepoint atrativo a desenvolvedores, a Microsoft investiu em 3 reas conforme figura 1:

Veremos a seguir o que cada uma dessas reas traz de novidades para o desenvolvimento no Sharepoint 2010. Para facilitar o entendimento, as explicaes esto ilustradas com imagens pertinentes ao assunto. Produtividade O Sharepoint 2007 uma plataforma poderosa para criao de aplicaes, porm para que um desenvolvedor se inicie no desenvolvimento de solues Sharepoint, o tempo despendido no aprendizado de certa forma penoso. Se voc j desenvolve para o Sharepoint, quantos macetes voc j teve que aprender para agilizar o desenvolvimento? A utilizao de ferramentas disponibilizadas 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 mudanas para aumentar a produtividade, comeando pela aparncia da ferramenta

Codificando.net e-magazine

Figura 1 - Sharepoint 2010 para desenvolvedores.

www.codificando.net

Abr / Mai - 2010

55

Novidades em Desenvolvimento no Sharepoint 2010

e-magazine

que, assim como outros produtos da linha 2010, possui uma barra de ferramentas (Ribbon) mais intuitiva. Agora no mais somente uma ferramenta que possibilita customizaes de pginas e criao de workflows, trata-se uma ferramenta nova que possibilita a customizao/criao de artefatos no Sharepoint. Em outras palavras, dos objetos do Sharepoint. Para quem j estava acostumado com o Sharepoint Designer 2007, a nova verso diferente e traz novos recursos para desenvolver solues rapidamente:

de contedo. Visual Studio 2010 Quando precisamos obter um resultado diferente do que o Sharepoint Designer 2010 pode nos oferecer, atravs da codificao o Visual Studio 2010 traz novas ferramentas para facilitar o desenvolvimento para o Sharepoint 2010.

Web Part, BCS e Workflow designers

Business Connectivity Services (BCS) oferece suporte a conexes e definies de outros databases.

List Schema - suporte criao de


listas e libraries.

O Visual Studio 2010 nos oferece suporte a ferramentas Out-Of-The-Box (OOTB), que nos permitem a criao de web parts utilizando o Web Part Designer, a criao de custom Entities para conexo a datasources externos, a construo de workflows utilizando cdigo para a adio de actions e activities, permitindo a criao de uma soluo completa para nossas necessidades.

Custom Actions - suporte criao de custom actions para serem incorporados ao Ribbon do Sharepoint.

Empacote e faa o deploy de projetos Sharepoint

Task/Approval

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

Designer

Agora quando criarmos um projeto no Visual Studio 2010 para o Sharepoint 2010, automaticamente teremos a criao de Features e pacotes WSP para deploy.

Codificando.net e-magazine

Alguns recursos j existentes no Sharepoint 2007 foram melhorados:

Crie pacotes WSP para deploy em Produo

Workflow Designer - suporte


extenso e reutilizao de workflows.

Podemos controlar o deploy das Features e customizar o contedo dos pacotes WSP, utilizando novos editores que o Visual Studio 2010 nos oferece.

Page Editor - oferece uma nova user interface (UI) para customizao

www.codificando.net

Abr / Mai - 2010

56

Novidades em Desenvolvimento no Sharepoint 2010

e-magazine

Visualizao de um site do Sharepoint pelo Server Explorer

mente com 4 GB de RAM para instalao do SharePoint Foundation, e de 6 a 8 GB de RAM para o SharePoint Server. Para mais detalhes de como realizar a criao de seu ambiente de desenvolvimento, acesse o link: http://msdn.microsoft.com/enus/library/ee554869(office.14).aspx.
Como exemplo da utilizao das novas ferramentas acima, disponibilizei um vdeo ilustrativo no link: http:// www.youtube.com/watch? v=nmxCAYbngp8 O mesmo vdeo tambm est disponvel com mais qualidade no link: http://www.screencast.com/t/ YWZjOGY5MWUt OBS: O cdigo criado no vdeo e o prprio videocast esto disponveis para download no link: http://sharepoint4developers.spaces.live.com/blog/cns! 419BF2880E221BB9!478.entry

Agora temos suporte conexo de sites do Sharepoint pelo Server Explorer, o que nos d maior agilidade na identificao dos objetos do site durante o desenvolvimento.

Integrao com o Team Foundation Server

Inerente ao Visual Studio 2010 tambm temos a integrao com o Team Foundation Server (TFS), que permite o gerenciamento do ciclo de desenvolvimento das aplicaes. Podemos inclusive importarmos do Sharepoint Designer 2010 pacotes WSP para Visual Studio 2010, o que nos d maior flexibilidade ao trabalharmos com as duas ferramentas juntas. Ambiente de Desenvolvimento Como desenvolvedores temos agora 2 opes para criao do ambiente de desenvolvimento:

Nova Plataforma de Servios

Codificando.net e-magazine

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-

Figura 2 Diagrama de blocos.

www.codificando.net

Abr / Mai - 2010

57

Novidades em Desenvolvimento no Sharepoint 2010

e-magazine

Novos blocos e componentes para a criao de solues foram disponibilizados. De acordo com a Figura 2, os blocos em laranja e vermelho trazem novidades, as quais estarei comentando nesse artigo.

clusas numa hierarquia de Sites, e estes em Site Collections. Para saber mais detalhes sobre Listas e Libraries, 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:

Figura 3 Legenda de cores.

Na camada de UI, as pginas ASP.NET foram estendidas para suportar Silverlight e XSLT views. Na camada inferior, as APIs foram estendidas para permitirem que o desenvolvimento no SharePoint seja mais padronizado. As APIs que executam no servidor incluram algumas melhorias no modelo de objetos e o suporte ao LINQ foi adicionado. Agora as APIs que executam no lado cliente suportam REST, e o modelo de objetos cliente facilita o trabalho com dados no SharePoint. Na camada mais abaixo o application model, que incluem os Sites e Listas no sofreram muitas mudanas, os mesmos conceitos utilizados no SharePoint 2007 continuam sendo vlidos no SharePoint 2010.

Relashionships

As Listas e Libraries possibilitam a construo de relacionamentos e estruturas de dados mais sofisticados. Os relacionamentos entre listas podem ser criados para reforar uma Integridade dos dados.

Lookup to multiple columns

Novo recurso de JOIN entre as Listas e Libraries. possvel criarmos no mesmo lookup referncias a mltiplas colunas da mesma lista ou library.

Codificando.net e-magazine

Validation

Data Model Lists


Listas e Libraries

Validaes com frmulas em colunas foram adicionadas. Utilizando frmulas do Excel podemos adicionar validaes a colunas e exibirmos mensagens aos usurios.

O modelo de dados do SharePoint composto por Listas e Libraries, que esto in-

www.codificando.net

Abr / Mai - 2010

58

Novidades em Desenvolvimento no Sharepoint 2010

e-magazine

Escalabilidade, performance e estrangulamento (throttling)

Server APIs
SPLinq

Como desenvolvedores, precisamos estar cientes dos problemas que podem ocorrer ao lidarmos com um processamento que pode exigir bastante do servidor. Agora tais importantes questes podem ser melhor gerenciadas pelos administradores no lado administrativo do SharePoint. External Data Lists Com o objetivo de integrao de mltiplos datasources ou mesmo da utilizao da UI para navegao no SharePoint 2010, estruturas de dados externas como databases legados ou outros databases no SQL Server, dados que retornam de web services ou de cdigo .Net podem ser adicionados ao SharePoint como External Data Lists. No ponto de vista dos usurios como se trabalhar com listas, utilizando views e forms. Podendo ser estendido para trabalhar com o SharePoint Workspace 2010 no lado cliente.
Como exemplo de utilizao dos objetos acima, disponibilizei um vdeo ilustrativo no link: http://www.youtube.com/watch? v=y1sBMazMAwY

Com o modelo de objetos podemos manipular os dados, porm via SPLinq temos uma outra alternativa. Esse um novo recurso do Sharepoint 2010, que traz um Linq provider para manipulao dos dados. Tais manipulaes so realizadas no lado do servidor. Quais os benefcios da utilizao do SPLinq?

Programao (Entities)

com

Entidades

Ao invs de trabalharmos diretamente com itens e listas, podemos trabalhar com os objetos que representam tais itens e listas, como: Produtos (Products) e Fornecedores (Vendors) por exemplo. Isso bem mais prtico, rpido e fcil na criao de queries, pois podemos utilizar o intellisense do Visual Studio. Exemplo de query feita com o SPLinq:

Codificando.net e-magazine

from p in adc.Products where p.Vendors.CountryRegion == "Brasil" select p;

O mesmo vdeo tambm est disponvel com mais qualidade no link: http:// www.screencast.com/t/NDlmODQxZGY

Joins entre listas

OBS: O videocast est disponvel para download no link: http://sharepoint4developers.spaces.live.com/blog/ cns!419BF2880E221BB9!480.entry

Por trs dos panos a query acima traduzida 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 tambm podemos realizar joins entre listas e

www.codificando.net

Abr / Mai - 2010

59

Novidades em Desenvolvimento no Sharepoint 2010

e-magazine

recuperarmos seus dados.


Events

Maior controle da interface dos usurios

O suporte a eventos de Lista e Itens foram estendidos no SharePoint 2010. Geralmente tais eventos so criados para validar dados. Novos eventos foram adicionados, vejam as novidades:

Podemos controlar como a interface do usurio retornar quando os eventos de cancelamento ou validao de dados ocorrerem, podendo redirecionar para pginas de erro ao invs de retornar mensagens simples do tipo String. Connected Client APIs
Client Object Model

After synchronous event

No SharePoint 2007 os eventos ocorriam antes que os dados sofressem modificaes e aps um tempo que os dados j haviam sido persistidos. Esse novo evento foi disponibilizado para interceptar o que ocorre entre os dois eventos, justamente no meio da operao, para que o desenvolvedor garanta que seu cdigo seja executado antes que o Form que contm a Lista/Item seja retornado ao usurio.

Um novo recurso para manipulao de dados atravs do novo modelo de objetos cliente, que uma verso cliente de um subset do modelo de objetos de servidor, tais como: Webs, Lists, ListItems, etc. Podendo ser utilizado diretamente no Silverlight, .Net (aplicaes console, winform) ou Javascript, pois se trata do mesmo modelo de objetos. Esse novo modelo de objetos foi criado para o batch de comandos e eficincia das operaes. 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 operao a ser realizada precisamos criar um web service para obtermos os dados, porm com esse novo modelo as chamadas so diretas e com uma nica query podemos obter o que precisamos. Alm disso podemos usufruir do tratamento assncrono dos dados e de um tratamento de escopo de excees e de lgica condicional.

Site-scoped events - diz respeito ao


eventos do Site Collection (SPSite).

Codificando.net e-magazine

Web creation events List creation events

- diz respeito aos eventos de criao de Sites (SPWeb).

- diz respeito aos eventos de criao de Listas (SPList).

Workflow events - Podemos customizar como os workflows podem ser executados. Temos os eventos Starting, Started, Postponed e Completed para manipularmos suas execues.

www.codificando.net

Abr / Mai - 2010

60

Novidades em Desenvolvimento no Sharepoint 2010

e-magazine

REST Uma nova maneira de trabalharmos com dados de listas e Excel no Sharepoint atravs de integraes utilizando protocolos REST e ATOM. Utilizando o ADO.NET Data Services com o Visual Studio 2010, podemos integrar facilmente nossas aplicaes. Tambm podemos utilizar novas tecnologias como o ASP.NET AJAX e o PowerPivot - projeto Gemini (utilizado para anlise de dados no Excel) para integrar nossas aplicaes.
Como exemplo da utilizao das novas APIs acima, disponibilizei um vdeo ilustrativo no link: http://www.screencast.com/t/OGQ0MGJm OBS: Os cdigos criado no vdeo e o prprio videocast esto disponveis para download no link: http://sharepoint4developers.spaces.live.com/blog/ cns!419BF2880E221BB9!481.entry

Site-scoped workflows

Workflows so 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 Collection.

Visualizao no browser

Com o SharePoint Server 2010, entre todas as aplicaes do pacote Office, o Visio 2010 traz a possibilidade de criarmos workflows no servidor a partir de diagramas. Um dos benefcios para os usurios a possibilidade de que os mesmos visualizem o progresso dos workflows, com todas as aes e pontos de deciso, uma vez que os diagramas estaro vinculados aos workflows.

Workflows OOTB customizveis

Content Management
Workflow

Vejamos as novidades relacionadas aos workflows:

Os workflows OOTB sofreram mudanas em seu design para serem melhor reutilizados atravs de "building boxes", que permitem que estes sejam estendidos mais facilmente. Pages and User Interface
Ribbon e Dialogs

Codificando.net e-magazine

Performance e Escalabilidade

Agora os profissionais de Infra podem definir servidores dedicados para a execuo de workflows. Isso possibilita que workflows sejam executados mais rapidamente e que os mais crticos possam ser executados em servidores exclusivos.

O Ribbon representa a nova barra de tarefas no Sharepoint 2010. Proveniente do Office 2007, ele veio para ficar. Sua customizao possvel atravs da criao de Custom Actions pelo Sharepoint Designer 2010 ou pelo Visual Studio 2010.

www.codificando.net

Abr / Mai - 2010

61

Novidades em Desenvolvimento no Sharepoint 2010

e-magazine

O Status Bar ou Barra de Status nos traz informaes do contexto em que estamos. Utilizado para exibir informaes persistentes, tais como: status da pgina ou verso. Enquanto que a Notification Area ou rea de Notificao nos traz informaes transitrias de durao de 5 segundos e depois desaparecem.

Padronizao e Compatibilidade

As pginas do Sharepoint 2010 esto mais amigveis para os desenvolvedores. As masterpages foram criadas no padro XHTML 1.1, deixando as pginas mais limpas e padronizadas. Os browsers Mozilla e Safari so suportados sem restries, ou seja, todas as funcionalidades executam em tais browsers. Da perspectiva de acessibilidade, o padro WCAG 2.0 nvel AA foi implementado. Para mais informaes, acesse o link: http:// www.w3.org/TR/WCAG/ A linguagem XSLT foi largamente utilizada para a customizao de views, devido a seu padro na transformao de dados XML. Mais uma novidade de que a UI agora oferece suporte multilngue, ou seja, a Lngua das pginas podem ser trocadas. No ponto de vista de desenvolvimento, durante a construo de solues, dependendo dos requisitos, devemos pensar na possibilidade do usurio mudar a UI para suportar Ingls ou Portugus por exemplo.

Figura 5 Novas funcionalidades da UI do SharePoint 2010.

Os Dialogs so representados por modal pop-ups, que congelam a edio dos campos do plano de fundo e s permitem a edio dos campos em evidncia. Bastante conhecido por desenvolvedores Web.

Codificando.net e-magazine

Silverlight

O Silverlight possibilita ricas visualizaes de contedo e o Sharepoint 2010 traz consigo templates de Silverlight webparts. Isso possibilita uma maneira mais simples de realizarmos o upload de arquivos xaps (aplicaes Silverlight) e utiliz-los no SharePoint. Vale lembrar que o Client Object Model oferece total suporte ao desenvolvimento de aplicaes Silverlight.

Figura 6 Modal popups.

www.codificando.net

Abr / Mai - 2010

62

Novidades em Desenvolvimento no Sharepoint 2010

e-magazine

Flexibilidade no Deploy Para efetivamente gerenciarmos o ciclo de desenvolvimento de aplicaes necessitamos de ferramentas que nos auxiliem. O Visual Studio 2010 se integra inteiramente com o Team Foundation Server, que fornece uma soluo completa para o gerenciamento do ciclo de desenvolvimento e automatizao do processo de entrega de aplicaes. Apenas dessa maneira que temos um deploy com 100% de sucesso. Uma vez finalizada uma soluo, basta realizarmos o deploy dela! assim que funciona em seu ambiente de trabalho? Na grande maioria dos casos acredito que no, primeiramente necessrio verificar o impacto que sua soluo pode trazer ao ambiente de produo. Para isso necessria a realizao de testes (funcionais e no-funcionais) em ambientes de prproduo. Testes de performance so extremamente necessrios para se evitar dores de cabea indesejadas. por isso que somente aps o aval da equipe de Infra que as solues so disponibilizadas em produo. Geralmente isso leva tempo e traz custos indesejados aos projetos. Para facilitar esse meio-de-campo, Sandboxed Solutions foram disponibilizadas no Sharepoint 2010.
Sandboxed Solutions

um subset de APIs e dentro do mesmo Site Collection. Estas solues so monitoradas e caso alguma delas traga alguma instabilidade so automaticamente finalizadas, o que traz mais segurana estabilidade do farm. O objetivo principal da utilizao de Sandboxed Solutions de agilizar os negcios, permitindo que as solues sejam criadas e disponibilizadas rapidamente, sem que haja a relutncia do deploy por Administradores do Farm uma vez que so solues mais seguras.
Tipos de soluo

Vrios tipos de solues podem ser criados, desde que a soluo esteja dentro do escopo do Site Collection em que se encontra. O subset de APIs do Sharepoint inclui a maioria das classes, incluindo SPSite, SPWeb, SPList e SPListItem. A lista completa de classes disponveis no subset de APIs do Sharepoint est disponvel 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

Codificando.net e-magazine

Sandboxed Solutions so solues seguras que so executadas em um processo separado do servidor. Tais solues so restringidas a serem executadas somente com

Atravs da criao de pacotes WSPs as solues foram unificadas. Dessa forma os prprios Administradores do Site Collection

www.codificando.net

Abr / Mai - 2010

63

Novidades em Desenvolvimento no Sharepoint 2010


podem realizar o deploy das solues facilmente, selecionando os pacotes e realizando o upload.
Arquitetura

e-magazine

Alguns componentes se fazem necessrios para que as Sandbox Solutions sejam executadas. A Figura 7 mostra os componentes essenciais e o fluxo de execuo das Sandboxed Solutions.

Sandbox Solutions limitada a um subset das APIs do Sharepoint (4). Caso o cdigo desenvolvido se enquadre no subset do modelo de objetos ento o proxy chamado. O Sandbox Worker Process Proxy (SPUCWorkerProcessProxy.exe) chamado (5) para permitir a execuo do cdigo da Sandbox Solution contra o modelo completo de APIs do Sharepoint.

O usurio solicita uma pgina, ou

Concluso Atravs da unio das 3 partes: Produtividade com a utilizao de novas ferramentas, nova plataforma de servios e nova forma de deploy, as solues em SharePoint sofreram um grande upgrade, pela integrao entre plataforma e as ferramentas. Isso possibilitar a ingresso de novos desenvolvedores no mercado mundial para suprir as demandas existentes, que tendem a crescer pelos benefcios que a plataforma oferece e pelas facilidades na customizao desse novo ambiente, citados nesse artigo. Marcel Medina
Especialista em desenvolvimento .Net/Sharepoint, atua como Consultor Microsoft nas tecnologias .Net/ Sharepoint. Tambm Microsoft Trainer nas tecnologias citadas. Atualmente vive em Auckland, New Zealand e gosta de esportes radicais, msica e jogos. Como desenvolvedor Snior coordenou e participou de vrios projetos grandes de desenvolvimento, incluindo os jogos Pan-americanos Rio 2007 nas plataformas web, windows e mobile. Possui 10 anos de experincia no mercado de TI e as seguintes certificaes: MCP, MCDBA, MCAD, MCSD, MCTS, MCPD e MCT. contato: marcel_medina@hotmail.com blog tcnico portugus: http://sharepoint4developers.spaces.live.com blog tcnico ingls: http://sharepoint4developersnz.spaces.live.com

Figura 7 Arquitetura e Fluxo de Execuo das Sandboxed Solutions.

outro objeto que contenha uma Sandbox Solution no Front End. Internamente o IIS identifica a solicitao (1) e atravs do Application Pool (2) a solicitao enviada ao Back End. O User Code Service (SPUCHostService.exe) precisa estar ativo para que a execuo de Sandbox Solutions seja garantida (3). Este servio pode existir em vrios servidores que desejam dividir a execuo de Sandbox Solutions. O Sandbox Worker Process (SPUCWorkerProcess.exe) o processo real em que Sandboxed Solutions so executadas. A execuo de

Codificando.net e-magazine
|

www.codificando.net

Abr / Mai - 2010

64

e-magazine

JQuery 1.4 - Novidades


Por: Fabiano Belmonte

Ol pessoal, hoje vou escrever sobre a nova verso do JQuery verso 1.4. Vejamos o que melhorou nesta verso. Uma coisa que podemos notar que depois que a Microsoft comeou a apoiar, a FrameWork vem crescendo bastante e ns que ganhamos com isso!!! No incio do ms eu j dei uma Twitada sobre a nova verso, que foi lanada no dia 14 de janeiro, achei bem legal o que foi feito, pois no dia do aniversrio do JQuery, para celebrar eles lanaram um site http:// jquery14.com/. Nota Oficial do Site: Ns estamos empolgados em trazer por 14 dias consecutivos novas liberaes para celebrar a verso 1.4 do jQuery. Voc observar que ns estamos empolgados com o nmero 14 desde que a verso 1.4 do jQuery foi liberada no aniversrio do jQuery (14 de janeiro). Por isso no deixe de voltar a cada dia porque outro anncio feito e um novo contedo liberado. Tem coisas bem legais nesse site, pretendo explorar mais artigos falando dessas mudanas. Uma das principais mudanas foi a melhoria de performance dos principais mtodos do FrameWork, se voc j achava rpido, imagine agora...

Nota Oficial do Site: Muitos dos principais mtodos do jQuery sofreram alteraes significantes na nova verso. Quando analisamos o cdigo descobrimos que estvamos aptos fazer alguns significantes ganhos de performance comparados com a verso anterior. Vendo quantas chamadas para funes internas estavam sendo feitas e o trabalho para reduzir a complexidade do cdigo. (* 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 verso 1.4 corrigimos cerca de 207 bugs (comparados com 97 na verso 1.3). (* Ref 03). Adicionalmente ns melhoramos nossa cobertura de testes de 1504 testes no jQuery 1.3.2 para 3060 testes na verso 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 reescrita de toda a documentao oficial (* Ref 04 ) do jQuery 1.4 e a liberao de
Abr / Mai - 2010

Codificando.net e-magazine
|

www.codificando.net

65

JQuery1.4 - Novidades

e-magazine

um novo frum de discusso. (*Ref 05) Nota Oficial do Site: Ns utilizamos listas de discusses, e posteriormente Grupos do Google, ao longo dos 4 anos para gerenciar as discusses e comunidades em volta do jQuery. Essa soluo em particular no tem sido capaz de escalar nossas discusses tanto em termos de participao e no gerenciamento de spam. (*Ref 06) Voc j pode baixar a nova verso acessando qualquer um dos links a seguir: Jquery: http://code.jquery.com/jquery1.4.js Google: http://code.google.com/apis/ ajaxlibs/documentation/index.html Microsoft: http://ajax.microsoft.com/ajax/ jQuery/jquery-1.4.min.js Referncias: Ref 01 : http://ejohn.org/blog/function-callprofiling/

Ref 08 : http://code.google.com/intl/ptBR/apis/ajaxlibs/documentation/ index.html Ref 09 : http://ajax.microsoft.com/ajax/ jQuery/jquery-1.4.min.js Bons Cdigos... Fabiano Belmonte
Lder de Projetos da Compugraf foi senior Architect da InfoMoney.com, especialista em aplicaes eBusiness com larga experincia em B2B (Submarino.Com e Saraiva.Com). Trabalha h 5 anos com a tecnologia .Net, aplicando conhecimentos nas diversas reas: instituies financeiras (sistema SPB), e-Commerce, gerenciamento logstico entre outras. Trabalhando com Visual Studio desde suas primeiras verses, responsvel pela implementao 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 ferramentas como TFS (Team Foundation Server). Foi palestrante em eventos como Codificando. NET 2008 e outros eventos sobre Tecnologia .NET.

Codificando.net e-magazine

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/googlegroups-is-dead/ Ref 07 : http://code.jquery.com/jquery1.4.js

www.codificando.net

Abr / Mai - 2010

66

e-magazine

C# 4.0 - Tipos Dinmicos


Por: Fabiano Belmonte

Ol Pessoal, h algum tempo comecei a escrever sobre C# 4.0, acho que j passou da hora de voltar a escrever sobre o assunto. Hoje vou escrever sobre uma funcionalidade bem legal, na minha opinio ajudar bastante nosso dia a dia, que Dynamic Typed Objects. Uma feature bem legal do C# 4.0 e o suporte programao dinmica, isso feito atravs da criao de tipos dinmicos de objetos, o que acontece que esses tipos so resolvidos em tempo de execuo e no em tempo de compilao. O que muda? Na declarao da varivel utilizamos a palavra "dynamic". A palavrachave informa o compilador que o objeto foi declarado de forma dinmica, deve ser tipado em tempo de execuo usando o Dynamic Language Runtime (DLR). Mais no confunda o "dynamic" com o "var", pois eles no so a mesma coisa. O "var" tipado em tempo de compilao diferente do "dynamic", que tipado em tempo de execuo.

Vamos fazer alguns exemplos: Veja um cenrio onde voc precisa definir propriedades de um objeto, uma dll, e voc vai fazer isso utilizando 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= TesteObjType.GetProperty("Nome"); pInfo.SetValue(Classobj, "Fabiano", null);

Codificando.net e-magazine

Cdigo que faz o load de uma dll via reflection e atribui um valor para a propriedade nome do objeto Agora vou fazer a mesma coisa utilizando "dynamic" basta mudar a terceira e a ltima linha para:
dynamic dynamicTesteObj = Activator.CreateInstance(Classobj); dynamicTesteObj.Name = "Fabiano";

cdigo que faz o acesso a propriedade

www.codificando.net

Abr/ Mai - 2010

67

C# 4.0 - Tipos Dinmicos

e-magazine

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

Fabiano Belmonte
Lder de Projetos da Compugraf foi senior Architect da InfoMoney.com, especialista em aplicaes eBusiness com larga experincia em B2B (Submarino.Com e Saraiva.Com). Trabalha h 5 anos com a tecnologia .Net, aplicando conhecimentos nas diversas reas: instituies financeiras (sistema SPB), e-Commerce, gerenciamento logstico entre outras. Trabalhando com Visual Studio desde suas primeiras verses, responsvel pela implementao 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 ferramentas como TFS (Team Foundation Server). Foi palestrante em eventos como Codificando. NET 2008 e outros eventos sobre Tecnologia .NET. Twitter.com/fabianobelmonte

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

Como podemos ver na figura acima, voc pode chamar o mtodo (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.

Codificando.net e-magazine

Quero explorar mais o C# 4.0, pretendo fazer isso separando por features. Espero que gostem! Bons Cdigos...

www.codificando.net

Abr/ Mai - 2010

68

Road Show em Ribeiro Preto


Por: Fabrcio Sanches
A Microsoft seguindo sua filosofia de oferecer contedo (em grande quantidade e qualidade) para os participantes da comunidade, realiza diversos tipos de eventos por todo o Brasil. A mais nova iniciativa da Microsoft Brasil a Copa de Talentos Microsoft, que est movimentando desenvolvedores e profissionais de infra-estrutura em todo o territrio nacional. Dentre os muitos eventos que a Copa Microsoft est promovendo, destaca-se o Road Show. O Road Show um encontro entre desenvolvedores, profissionais de infraestrutura, funcionrios e colaboradores (MVP's) da Microsoft onde so ministradas palestras, mesas de discusses, dentre outras atividades e realizado nas principais cidades do pas.
Alex Schulz apresentando Renato Haddad apresentando sua palestra sua palestra sobre sobre Visual Studio 2010. SharePoint 2010. e .NET Framework 4.0.

No ltimo dia 15/04 foi a vez de Ribeiro Preto, cidade localizada no interior de So Paulo, a aproximadamente 300 kilmetros da capital receber o evento. O evento foi realizado nas dependncias do Stream Hotel bem no centro da cidade e contou com as participaes dos MVP's Renato Haddad (http:// weblogs.asp.net/renatohaddad/), Fbio Hara (http://fabiohara.spaces.live.com/), Alex Schulz (http://blogs.msdn.com/alexschulz/), dentre outros. O evento teve incio as 9h00 no auditrio central do hotel com desenvolvedores e pessoal de infra juntos. Nesta primeira fase, Fbio Hara apresentou a agenda do dia e o cenrio no qual as palestras (todas com 100% de prtica) seriam baseadas. As 10h00 o grupo foi dividido em dois sendo que, os desenvolvedo-

Pessoal acertando os ltimos detalhes antes da palestra.

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

69

(dirigidos por Renato Haddad e Alex Schulz) e o pessoal de infra continuou no auditrio central (comandados por Fbio Hara e demais colaboradores). Em ambas as salas assuntos tcnicos foram apresentados e, como j mencionado, palestras 100% prticas com solues apresentadas em tempo real. Aps a pausa para o almoo (que ocorreu das 12h30 s 13h30), cada grupo voltou para suas respectivas salas para a continuao do evento. Os grupos voltaram a reunir-se no auditrio central as 16h00 quando alguns assuntos de interesse geral (como o Windows 7, por exemplo) foram apresentados e alguns sorteios tambm foram realizados. O evento contou com a participao de aproximadamente oitenta pessoas e todos, sem exceo, apreciaram o evento. Abaixo o parecer de Fbio Hara, um dos palestrantes no evento em seu blog. "[...] O feedback foi excelente: todos gostaram do modelo que apresentamos: nada de PPT apenas demos focadas em problemas e como resolv-los. Tenho percebido que muitas pessoas fazem palestras de produtos preocupadas em mostrar recursos (features). Este tipo de modelo de palestra agrada o publico que j conhece uma ferramenta e deseja saber exatamente cada funcionalidade. Porm se voc quer mostrar o que um produto pode fazer por voc ento 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 prximas etapas do Road Show esto relacionadas abaixo. Se voc est prximo a uma destas cidades, no perca a oportunidade de participar de um evento de alto nvel com os principais colaboradores da Microsoft em cada rea. 08/05/2010 So Paulo 11/05/2010 Campinas 13/05/2010 Cuiab Fabrcio Sanches
Possui graduao em Cincia da Computao pela UNORP Centro Universitrio do Norte Paulista (2005). Obteve ttulo de mestre junto a USP (Universidade de So Paulo) no Programa Interunidades Bioengenharia campus So Carlos. Atualmente aluno de doutorado e pesquisador na mesma instituio e departamento. membro regular do SpeechLab (Laboratrio de Processamento de udio e Voz) localizado no Instituto de Fsica de So Carlos. Atua na rea de processamento digital de udio e voz, especialmente baseado em wavelets aplicadas insero e extrao de watermarks em sinais de udio e fala, anlise cepstral de sinais de fala e desenvolvimento de ferramentas computacionais aplicadas ao processamento digital de sinais. Atua como desenvolvedor web na Unio Central Brasileira da IASD com C# e ASP.NET desde 2007.

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

70

Road Show em Fortaleza


Por: Jensen Clayton
No dia 23/04/2010 aconteceu um grande evento em Fortaleza, a 10 etapa da Copa Microsoft de Talentos. Time de palestrantes: Rodrigo Dias (IT Pro Evangelist) Rogrio Cordeiro (Developer Evangelist) Renato Haddad (MVP) lvaro Rezende (MVP) Herleson Pontes (MVP)

Vimos um cenrio da Empresa AdventureWorks com os diversos problemas que uma empresa enfrenta quando para de investir em TI e depois enxerga que precisa correr para recuperar mercado, mas no tem capital para investimentos pesados em TI. Solues nativas apresentadas dentro dos produtos, onde alguns so gratuitos (Hyper-V Server, SharePoint 2010 TF, etc...)

Acompanhados do: Rodrigo Munhoz (Customer and Partner Satisfaction 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 pessoas para prestigiar o Road show. Ponto pra Fortaleza, das 10 primeiras etapas ns fomos o maior publico e mais interativo (palavras dos palestrantes). Ao final do evento, um intenso "Perguntas & Respostas" muito produtivo e empolgante, onde por questes de tempo no foi mais adiante.

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

71

Final de evento e uma foto pra registrar o dia (Rodrigo Munhoz, Herleson Pontes, lvaro Rezende, Renato Haddad, Jensen Clayton, Rogerio Cordeiro e Rodrigo Dias). No acabou por aqui! Aps o evento, os influenciadores da comunidade conversavam com o time da Copa Microsoft. Feedback pra l e pra c e todos ganharam os parabns pelos excelentes trabalhos 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 Virtualizao. 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

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

72

Community Launch em Vitria - ES


Por: Cleyton Santana de Sousa
Apresentarei alguns resultados do evento Community Launch: MSInfraES Vitria ES que foi realizado em 20/03/2010. Esta ao foi concebida e realizada pelos grupos de usurios MSInfraES www.msinfraes.com.br e MSDev-ES http:// br.groups.yahoo.com/group/msdev-es/ em parceria com o Centro de Inovao Microsoft - Vitria e vrias empresas e organizaes do estado do Esprito Santo. O Community Launch (CL) uma ao realizada pela Microsoft Brasil atravs do projeto Copa de Talentos. Para a realizao desta onda foi elencado o TechNet, MSDN e Comunidade em Ao (CEA) para alavancar as atividades dos grupos de usurios e um Road Show em vrias localidades do Brasil. O preparatrio do Community Launch foram reunies 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 - Vitria, atendemos o chamado TechNet/MSDN e aceitamos o desafios de realizar o CL. Foram vrios desafios vencidos como entregar contedo de qualidade, reunir um time de especialistas nos produtos da campanha a fechar todos os enlaces de articulao para a realizao deste ousado projeto. A Copa de Talentos est focada em produtos que foram lanados recentemente e nos que sero lanados nos prximos meses. Ela consiste num jogo disputado pela comunidade tcnica em que voc colocar seus conhecimentos em prtica sobre as seguintes solues: 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 pblico total de 150 pessoas para as trilhas de infraestrutura e desenvolvimento. Palestrantes de alto nvel com reconhecimento de seus trabalhos em todo o Brasil. Infraestrutura O que h de novo no Windows Server 2008 R2 - MVP Rodrigo Immaginario CISSP, MCSE:Security, MCSA:Security, MCSE (NT, W2K, W2K3), MCSA(W2K, W2K3 Descritivo : CoAbril / Maio- 2009 Abri/ Mai 2010

www.codificando.net

73

nhea as novas funcionalidades do Windows Server 2008 R2 e exemplos de estudo de caso real no Brasil. Sharepoint 2010 Maurcio 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 Pereira MCSA/MCP Windows Server/XP/ MCDST Desenvolvimento Gerenciamento do Ciclo de Vida da Aplicao com o Visual Studio Team System 2010 (ALM com VSTS) - Dlio Dessaune Gerente de Projetos MCSD / MCAD / MCSD / MCT Silverlight 3 - Fabriccio Correia Bernardes Desenvolvedor Silverlight/Sharepoint SQL 2008 R2 - Daniel Barbosa de OliveiraMCAD.NET / MCDBA / MCTS - SQL Server 2005 / MCT / Informatica Certified Design Parceria fechada com o Sebrae-Es atravs 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 realizao da conferncia nacional. E a todos os demais que colaboraram com divulgao ou cesso de profissionais para ministrar palestras. Seleo de fotos:

Credenciamento

Abertura

Palestra DEV

Equipe MSInfraES / MSDevES

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 Cleyton Santana de Sousa


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

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

74

Marlia TechDay 2010


Por: Laerte Junior
At agora estamos tentando entender o que aconteceu em Marlia dia 10/04. Um boom da comunidade poderia ser um adjetivo aplicvel. Conversando com alguns amigos do exterior que tambm fazem eventos , para profissionais inclusive, todos forma unnimes em dizer Nunca vimos isso. Mais de 800 pessoas reunidas para se atualizar tecnologicamente e principalmente conhecer os profissionais que fazem essa tecnologia acontecer no Brasil. Isso demonstra o entusiasmo do brasileiro em aprender principalmente a carncia de eventos assim em algumas regies. Queremos mais,Quando vai ter o prximo ? foram algumas frases que me perguntaram no final do evento. O Marlia Tech Day foi um marco na histria dos eventos e eu posso dizer que ns, palestrantes ,organizadores e parceiros tambm queremos mais. incrvel a energia, fora que nos foi passada, levando-nos a perceber, mais ainda, que o que faz o mundo girar, acontecer, o prazer de compartilhar, de poder passar pra frente os anos de estudo e dedicao. Com um time de palestrantes de primeira linha (alguns dos maiores especialistas do Brasil em tecnologias Microsoft) como os MVPs Rob Ranches, Evilzaro Alves, Diego Nogare , Nilton Pinheiro, o lder dos MVPs Brasil Rodolfo Roim, renomados membros da comunidade tcnica SQL Server Felipe Ferreira , 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 impressionante nmero de 830 participantes que durante todo o dia se dividiram em dois auditrios do Centro Universitrio Eurpedes de Marlia (UNIVEM) e assistiram a 12 palestras ministradas por estes feras e uma videomensagem de 10 minutos do Consultor de Redes Sociais Luciano Palma. O evento teve repercurso nacional e internacional, uma vez que contou com a presena de Fernando Guerreiro, CEO da SolidQ, uma empresa multinacional de consultoria em SQL Server, presente em uma srie de pases. Fernando venho ao Brasil pela primeira vez apenas para prestigir o evento e na palavra dele "Ele no acreditou no que viu em Marlia. Acompanhado pelo Twitter atravs da hashtag #MTD2010 o evento gerou 31 pginas de Tweets em apenas 2 dias, sendo tambm destaque nos jornais da regio como Dirio de Marlia (Marlia Tech Day pe cidade na rota da tecnologia ) e Jornal da Manh, no entanto,

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

75

a marca mais impressionante do evento foi mesmo o nmero de participantes: mais de 830 pessoas, sendo definitivamente considerado o maior evento j realizado pela Comunidade Tcnica 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/regio, entre em contato com a gente pelo email contato@techday.net.br. Teremos o maior prazer de TREMER tudo, como fizemos em Marlia. Principais Organizadores do Evento: Arnaldo Martins Hidalgo Junior Elvis Fusco Laerte Poltronieri Jnior Nilton Pinheiro Palestrantes: Diego Nogare (MVP) SQL Azure Database. Evilzaro Alves (MVP) Introduo ao desenvolvimento de Sistemas Conectados com WCF 4.0. Fabiano Amorim Entendendo como os Joins funcionam de uma vez por todas!

Fabrcio 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 Extensions. Nilton Pinheiro (MVP) Conhecendo o SQL Server 2008 Express - A edio grtis 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 PowerPivot.

Intelligence

com

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

76

Laerte Junior
Certificado MCDBA com mais de 8 anos de atuao com SQL SERVER, fascinado por cdigos e scripts, escreve artigos para MCDBABrasil, Imasters e Simple-Talk aonde possue um blog tambm. Possui outro blog em portugus aonde coloca suas experincias 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

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

77

Road Show Braslia


Por: Sara Barbosa
A Copa Microsoft tambm passou por Braslia no dia 06/04 trazendo o Road Show. Como j era esperado o evento aconteceu nos dois perodos manh e tarde e as turmas foram divididas em duas tracks: Infra e Dev. Dentro de cada track foi apresentado s novidades Microsoft implementadas numa empresa fictcia que precisava de melhorias, mas sem muito recurso financeiro. Cada rea ficou responsvel em solucionar a necessidade da empresa mostrando ao vivo as funes dos produtos que foram e sero lanados em 2010. Aps a diviso 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 PowerShell 2.0, no AD hoje simples recuperar os objetos excludos, os objetos podem ser restaurados da lixeira a quente. Facilidade, economia e melhorias da virtualizao usando Hyper-V. Melhoramento da plataforma de aplicaes Web com IIS 7. Analisador de melhores prticas BPA. Windows 7 PSR, ferramenta que auxilia no suporte aos usurios. DirectAccess para escritrio remoto BitLocker To Go Compatibilidade com XP mode. Economia de banda com Branch Cache. Aps intervalo para almoo, lvaro Rezende e Fabio Hara prosseguiram com os temas: Exchange 2010 Controle do fluxo das informaes da rede Correio de Voz + E-mails juntos Sharepoint 2010 Edio de documentos sem necessidade de pacote Office instalado Co-Autoria no Office Web Application Facilidade de edio de documentos, dois usurios podem editar o mesmo documento ao mesmo tempo Compatibilidade com Firefox, IE e Opera SQL Server 2008 Gerenciamento, facilitando a vida do administrador de BD Melhores prticas Alta disponibilidade Na track de [Dev], pela manh Rogrio Cordeiro, Renato Haddad detonaram com as novas features do Visual Studio 2010 (gerao de diagramas UML, recursos do Team System).

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

79

No perodo da tarde foi apresentada a arquitetura Team Foundation Server 2010 e Sharepoint 2010 para desenvolvedores, como a integrao Sharepoint 2010 + Visual Studio 2010 vai facilitar e deixar a ferramenta bem mais acessvel para realizar a customizao de novos modelos de sites. Road Show foi uma tempestade de informaes e o melhor tudo isso com praticamente zero (zero) de PPT? Isso mesmo, tudo na base da demo. Inclusive a metodologia usada uma excelente idia e com certeza mais proveitosa para um evento desse porte, por ser um evento o dia todo no fica cansativo e o pblico fica mais empolgado vendo tudo funcionando conforme cada nova funcionalidade 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' pea da famlia System Center para auxiliar nessa unio. Perguntas e respostas aconteceram para finalizar as apresentaes, os palestrantes ficaram a disposio para esclarecer as duvidas do pessoal. Alm do conhecimento, muitos saram com mochilas, CD de treinamento, bons 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 Braslia que hoje est ficando cada dia mais ativa. Road Show de Braslia foi um sucesso, com 120 inscritos e 119 presentes, incluindo Janny que veio de Minas Gerais e eu de Goinia. Palestrantes da Copa Microsoft esto de parabns por mais uma realizao. Algumas fotos:

Track de Infra

Palestrantes de infra

Track de Dev

Rogrio Cordeiro

Dev

Perguntas e Respostas

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

80

Eu recebendo o brinde do Fabio Hara

Pblico do Road Show

Palestrantes do Road Show

Vejas mais fotos do evento:


http://www.flickr.com/photos/49101171@N07/ sets/72157623795038448/

Sara Barbosa
estudante de Tecnologia em Segurana da Informao. Membro do conselho da Comunidade WININFO, comunidade Microsoft de Infra Estrutura do Centro-Oeste. Mais detalhes blog: http://sarajbarbosa.spaces.live.com/ Twitter: @sarabarbosa

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

81

Community Launch em Goinia


Por: Sara Barbosa
Dia 20/03 Goinia 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 depois atravs de excelentes profissionais foram apresentados os lanamentos das novas solues Microsoft de 2010. Os temas das palestras foram SharePoint, Exchange, Visual Studio e Office 2010, Windows Server 2008 R2, Windows 7 e Entity Framework. 1 cidade a comear a divulgao do evento 1 cidade a esgotar as inscries (em menos de 5 dias) 1 website personalizado para o evento: devgoias.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 Aps o evento isso j contabilizava em: + de 1700 visitantes nicos + de 6000 pageViews 220 Inscries 118 pessoas na lista de espera + de 250kg de alimento arrecadado. Muitos brindes, entre eles Windows Server 2008 com + 25 Cals, Windows 7 Ultimate, livros e muito mais. (Fonte: www.rodrigokono.net) Fotos dos melhores momentos:

Pblico do CLGO

Um resumo bacana que descreve o sucesso do Community Launch em Goinia: 2 grupos envolvidos: DevGois.NET e WININFO 5 Empresas patrocinantes 3 Empresas e 1 Organizao 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

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

82

Com todos esses nmeros e provas, o que resta a certeza que comunidade Goiana est unida para compartilhar conhecimento, incentivar e buscar novos talentos. Quem seguiu a #CLGO acompanhou todos os detalhes. Comunidades Wininfo e DevGoias.NET juntas na realizao e organizao 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 Segurana da Informao. Membro do conselho da Comunidade WININFO, comunidade Microsoft de Infra Estrutura do Centro-Oeste. Mais detalhes blog: http://sarajbarbosa.spaces.live.com/ Twitter: @sarabarbosa

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

83

Community Launch no Rio de Janeiro


Por: Vinicius Quaiato
Sbado, 17/04, tive a honra de participar do Community Launch RJ, organizado pela comunidade .Net Architects do Rio. O evento foi super bem organizado, uma semana antes as vagas estavam todas preenchidas: 100 inscritos ao todo. No dia do evento a presena mdia foi de 65 pessoas no local. O Community Launch RJ teve incio s 09h e a primeira palestra foi com o Alexandre Bispo, que exibiu novidades do Visual Studio 2010, explicou sobre a nova IDE feita em WPF e mostrou novos recursos. O pessoal logo cedo j comeou a ficar animado fazendo muitas perguntas e mostrando bastante interesse. A segunda palestra foi a minha, onde abordei 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 disponvel em CTP. Foi uma palestra bem divertida e diferente. Com slides descontrados e uma boa interao com a platia. O pblico riu do incio ao fim. Na sequncia tivemos uma palestra sobre ASP.NET 4.0, com o Sidney Lima Filho. Ele apaixonado por WebForms, e mostrou as novidades nesta nova verso, abordando detalhes bem tcnicos. Aps o almoo Alexandre Valente fez uma excelente apresentao sobre Asp.Net MVC 2. O Alexandre conhece bastante da ferramenta, bastante objetivo e direto. Foi uma das palestras mais aguardadas pelo pblico. A palestra do Fernando Bichara foi a que mais "emocionou" o pblico. Ele apresentou o MEF, Managed Extensibility Framework. Eu quase chorei. Simplesmente uma ferramenta incrvel, e apesar de ser um assunto "complexo" ele apresentou tudo de forma simples, direta, objetiva e com conhecimento de causa. A palestra terminou e eu j tinha mil idias na cabea, terminamos comparando o uso do MEF com extensibilidade via IronRuby e IronPython. Simplesmente tima palestra! Christian Cunha mostrou as novidades do VS2010 relacionadas com as prticas de TDD, alm claro de apresentar a tcnica, explicando suas motivaes, prticas, e demonstrando na prtica como aplic-la. Para apresentar o Application Lifecycle Management com Visual Studio 2010 o Rodrigo Vidal deu uma boa explicao sobre a organizao do VS2010para o gerenciamento de ALM e como ele pode auxiliar e automatizar este processo, atingindo os mais diferenciados papis envolvidos no desenvolvimento e vida do software.

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

84

Fechando o evento Carlos Eduardo apresentou como trabalhar com arquivos Office utilizando o Open Xml. Foi uma palestra incrvel. Todos ficaram de queixo cado com a versatilidade e o poder da ferramenta. Para coroar o evento ao final ocorreu o sorteio de brindes: livros, squeezes, copos, camisetas, licenas de software e outros itens mais. O feedback da comunidade e dos presentes foi simplesmente muito positivo. A cada palestra, a cada momento das palestras, os presentes enviavam mensagens de elogio e divulgao no twitter utilizando a hashtag do evento. Sem dvidas a comunidade .NET do Rio de Janeiro ganha muito com a realizao deste evento, e isto se reflete na comunidade .NET de todo Brasil. Todos esperam ansiosos por mais eventos do grupo .Net Architects na cidade maravilhosa.

Vinicius Quaiato
vinicius.quaiato@gmail.com www.viniciusquaiato.com Trabalha com desenvolvimento de software h cerca de 4 anos, especificamente com tecnologias Microsoft .NET. Aficcionado por arquitetura e boas prticas. Atualmente trabalha com desenvolvimento e arquitetura de aplicaes na Envision Tecnologia. Atua na comunidade .Net Architects e coordena o grupo de Coding Dojo da mesma. Tem ministrado palestras sobre boas prticas 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.

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

85

Blumenau TechDay 2010


Por: Djonatas Tenfen
Galera da codificando.net escreverei sobre o DEVBLU - Evento tcnico Microsoft Tech Day ( www.mstechday.com ) que aconteceu dia 24/04/2010 na cidade de Blumenau no Teatro Carlos Gomes. O evento teve a presena mais ou menos 116 pessoas muitas delas acompanharam todo o evento, muito bom ver a comunidade Blumenauense ativa e comparecendo em eventos presenciais, mostrando que temos sim capacidade de trazer mais eventos para a regio. Segundo informaes, desde 2002 no teve evento tcnico na cidade. O #MSTDBLU veio trazendo uma srie de novidades na linha de DEV e INFRA, Sharepoint 2010 com Fabian ( @fgherk ) , Thiago Zavaschi ( @zavaschi ) com Power Pivot BI, Diego Nogare com SQL Server 2008 R2 ( @DiegoNogare ), Djonatas Tenfen com Silverlight 4 ( @DjonatasTenfen ) e na rea de INFRA Agostinho com Windows Server 2008 R2 , Exchange 2010, Lucas Romo com Windows 7 ( @LucasRomao ) e XXX com System Center. O Evento foi um sucesso maior do que o esperado pelos organizadores e j esto pensando em um prximo que deve acontecer em breve. www.codificando.net
Abril / Maio- 2009 Abri/ Mai 2010

Durante o evento tivemos palestra extra do Diego Nogare falando sobre Comunidades, MSP, MVP e tambm uma explicao sobre o que era a comunidade Codificando.NET, em seguida Lucas Romo apresentou a comunidade Azure services BR ( www.azureservicesbr.ning.com ) e eu apresentei a comunidade Silverlight Brasil ( www.silverlightbrasil.ning.com ), por fim tivemos uma participao virtual mas especial do grande Luciano Palma ( @LucianoPalma ) falando sobre o "Comear pelo Porque ?" Mensagem esta aclamada e aplaudida por todos no auditrio. E por fim foi sorteado e entregue alguns brindes ao presentes. Lembrando apenas que o evento teve patrocnio das empresa Benner Logstica - KeepIt @keepit_brasil - Telerik @telerik.

86

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 desenvolvimento .NET e Silverlight. Trabalha como desenvolvedor C# na empresa Benner Sistemas UNEP Logstica, localizada na cidade de Blumenau (SC). lider da comunidade Silverlight Brasil, colaborador e moderador das comunidades Azure Services BR, WCF Brasil e colaborador ativo da Revista The Club Megazine escrevendo artigos sobre .Net e Silverlight.

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

87

Community Lauch Londrina e Maring


Por: Mrcio Fbio Althmann
Durante o ms de Abril, o SharpCode www.sharpcode.com.br realizou 3 eventos do Community Lauch, nas cidades de Maring e Londrina no Paran, atravs dos palestrantes Andr Nobre (www.andrenobre.com.br), Carlos dos Santos (www.carloscds.net) e Mrcio Fbio Althmann (www.marcioalthmann.net). Em ambos os eventos Andr Nobre mostrou as novidades algumas das novidades do Visual Studio 2010 e do .NET 4.0, com destaque a paralelismo, ClientID do ASP.NET 4.0 e tipos dinmicos. Carlos dos Santos mostrou as novidades do Entity Framework 4.0, mostrando a evoluo do mesmo, as novidades como suporte a POCO, T4 templates, LINQ, gerao de script atravs do modelo. Mrcio Fbio Althmann mostrou o que o Silverlight, histrico 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 CESUMAR em Maring, foi a primeira edio do Maring TechDay www.maringatechday.com.br, o segundo www.codificando.net
Abril / Maio- 2009 Abri/ Mai 2010

evento foi realizado na PUC em Londrina, e foi mais uma edio do Londrina TechDay www.londrinatechday.com.br. Fotos de Maring

88

Mrcio Fbio Althmann


MCP, lder do grupo de usurios SharpCode, trabalha com desenvolvimento .NET desde 2003, arquiteto de solues .NET. Um dos autores do livro Desenvolvendo para Web usando o Visual Studio 2008. Vencedor do concurso WinThe7, da Microsoft, na categoria Desenvolvedores. Possui artigos publicados em sites na internet e no seu blog pessoal www.marcioalthmann.net

Fotos de Londrina

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

89

Road Show em So Paulo


Por: Fernanda Sallai
No dia 20/03/2010 foi dada a largada para a copa de talentos da Microsoft atravs da realizao simultaneamente de eventos em diversas cidades do Brasil. Em So Paulo, o grupo .NET Architects foi os organizadores do evento. O auditrio ficou lotado. Contedo 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 programao dinmica

Palestrantes:

Giovanni Bassi Victor Cavalcante Leandro Daniel Fabio Margarito Vinicius Quaiato Daniel Fonseca Castro

Algumas fotos: Ficamos sabendo das novidades demonstradas e aproveitei para conhecer amigos que sempre mantenho contato pelo twitter, e-mail. Parabenizo todos os palestrantes pelo excelente material e preparao do evento. As apresentaes foram 100% prticas. Demos e mais demos.

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

90

Mais fotos acesse:


http://www.flickr.com/photos/vcavalcante/

Perguntas e respostas aconteceram para finalizar as apresentaes. Alm do conhecimento adquirido, no final tiveram sorteio de brindes. Fernanda Sallai
(

fernanda.sallai@codificando.net).

Bacharel em Sistemas de Informao e atua na rea de desenvolvimento. Colaboradora do Portal Linha de Cdigo, editora da revista Codificando.net e escreve periodicamente em seu blog www.fernandasallai.com e no twitter: @fernandasallai.

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

91

Community Launch em Piracicaba


Por: Fernanda Sallai
No sbado, dia 17/04 ocorreu o segundo evento em Piracicaba e desta vez tive a possibilidade de comparecer. A galera de So Paulo compareceu no evento: @FernandoDev, @fefesaraiva, @thaissimonato, @DiegoNogare, @evilazaro e eu (@fernandasallai). O Community Launch em Piracicaba aconteceu na Faculdade Salesiana Dom Bosco e foi organizado pelas comunidades Azure Services BR e Inside Dot Net. Todas as palestras foram bem explicadas e demonstradas atravs de demos a suas aplicaes.

Conhea o que te espera na plataforma de Business Intelligence do SQL Server 2008 R2

Parabns a todos os palestrantes: Andr Baltieri , Lucas Romo, Evilzaro Alves, Felipe Prata Borges, Mayra Martho, Daniel Imamura, Israel Ace e Thiago Zavaschi pela excelentes palestras e demos. Algumas fotos:

Contedo apresentado:

Criando Workflows de negcios 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 soluao de negcios (participao FTE da Microsoft Consulting Services) Introduo ao Windows Communication Foundation (WCF)

Palestra do Evilzaro Alves.

Galera reunida.

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

92

Palestra do Lucas Romo.

Palestra do Thiago Zavaschi.

Fernanda Sallai
(

fernanda.sallai@codificando.net).

Bacharel em Sistemas de Informao e atua na rea de desenvolvimento. Colaboradora do Portal Linha de Cdigo, editora da revista Codificando.net e escreve periodicamente em seu blog www.fernandasallai.com e no twitter: @fernandasallai.

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

93

Road Show em Belo Horizonte


Por: talo Chesley
Devido minha falta de familiaridade com a geografia belorizontina, cheguei mais ou menos uma hora adiantado ao local do evento, o que no me foi mau porque pude sentar na primeira fileira e pude aproveitar muito bem os primeiros momentos do evento. A ttulo de informao, Belo Horizonte/MG, foi dcima segunda cidade por onde o evento Road Show passou, e, segundo os palestrantes e organizadores, at o dia 29 de abril, data do evento, Belo Horizonte foi cidade onde teve o maior ndice de participao, tendo por volta 400 participantes inscritos. Na abertura, Rodrigo Dias e Renato Haddad falaram sobre o cenrio de uma empresa fictcia e o problema que essa empresa enfrentava relacionado TI. O Renato, fez algumas abordagens acerca do que ns, com o desenvolvimento, poderamos fazer para otimizar o negcio do nosso cliente, e, por suas vez, o Rodrigo o fez, falando de Infra Estrutura. Depois desse primeiro momento nos dividimos em duas salas, a saber: Infra e Dev. Na parte de Desenvolvimento, onde eu participei durante todo o tempo das palestras, pudemos contar com um contedo de alto nvel, apresentado, inicialmente, pela manh e incio da tarde pelo Renato, que abordou as novidades do ASP.NET4, Entity Framework 4, ASP.NET Dynamic Data, ferramentas oferecidas no Visual Studio 2010 para facilitar a integrao de novos membros em equipe de desenvolvimento, ferramentas para testers e montagem de UML. Depois, o Alex Schulz, demonstrou muitas novidades do SharePoint 2010, que, inclusive nos auxiliaro muito no desenvolvimento de aplicaes nesse modelo, e, em todo o tempo, com o foco voltado soluo do problema da nossa empresa. Na parte de Infra estrutura, foram abordados Windows Server 2008 R2, Windows7, Exchange Server 2008, SharePoint 2010 e SQL Server 2008 R2. Tinha perspectivas de fato muito boas em relao a esse evento, at porque estava me preparando para ele a um ms, tendo em vista que me desloquei da minha cidade Governador Valadares (250 km de BH) para participar do evento, todavia, me surpreendi com a fora que a comunidade.NET tem em nossa regio, com a vontade das pessoas em participar, com a animao de todos ao verem as demonstraes, com as dvidas, principalmente de cunho prtico e muito mais: indescritvel! O time de palestrantes se mostrou muito bem preparado com demonstraes muito profundas de novidades bastante recentes, o que, diaAbril / Maio- 2009 Abri/ Mai 2010

www.codificando.net

94

talo Chesley
graduando em Anlise 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 compe a equipe de Desenvolvimento da UNIVALE, como estagirio. Mantm o blog http://italochesleytech.wordpress.com. Participa ativamente de Comunidades de Desenvolvimento.

www.codificando.net

Abril / Maio- 2009 Abri/ Mai 2010

95

e-magazine

MVC verdades e mentiras


Por: Alexandre Tarifa
O ASP.NET MVC chegou para ser mais um item no leque de opes de solues tecnolgicas de desenvolvimento oferecido pela plataforma .Net, e no final das contas, muitas pessoas encaram ele como um concorrente do ASP.NET Web Forms... Isso no verdade! nologias evoluam em paralelo e claro que uma aproveitando a experincia da outra.

O ASP.NET Web Forms herda caractersticas que o ASP.NET MVC trazia, como: rotas, controle maior de HTML, controle sobre nome de controles, etc... porm ainda existem caMentira nmero 1: o ASP .NET MVC no a evoluo do ractersticas que diferem totalmente uma ASP.NET Web Forms! da outra, como: controle total do HTML Mentira nmero 2: o ASP.NET MVC no vai descontinuar de for- no caso do ASP.NET MVC, ciclo de carma alguma o ASP.NET Web Forms! regamento da pgina gerencivel no ASP.NET Web Forms.
Verdade: o ASP.NET MVC mais uma possibilidade no desenvolvimento ASP.NET, inclusive o ASP.NET MVC e Web Forms Verdade final tem o mesmo core entre eles... o ASP.NET Core.

Quem for um desenvolvedor web e utiliza o ASP.NET tenha certeza que a plataforma evolui e evoluir cada vez mas... o Core do ASP.NET incrivelmente poderoso e Mentira nmero 1: O ASP.NET MVC no mais produtivo do que cada vez se tornar mais. Os desenvolvedores ganham muito com essas poso ASP.NET Web Forms Mentira nmero 2: O ASP.NET Web Forms no mais produtivo sibilidades e o ideal que tenhamos um do que o ASP.NET MVC bom conhecimento das possibilidades para que as escolhas no sejam feitas de Verdade: as duas tecnologias proporcionam recursos de produtivi- forma inadequada. Tambm muito comentado o assunto produtividade... ouvimos por ai que x ou y mais produtivo do que o outro.

dade e so desenvolvidas no Visual Studio 2010/2008. O ndice de produtividade vai da experincia da equipe e pessoas... em seis No escolha uma tecnologia x por meses com ASP.NET MVC, uma equipe no vai ser mais produtimodismo... justifique, venda para voc va do que outra com um ano de experincia em ASP.NET Web mesmo a idia que aquilo ser bom ou Forms e vice-versa.

O poder das duas tecnologias muito grande, inclusive uma possibilidade e uma tendncia muito grande que cada vez mais as duas tecwww.codificando.net

no para o projeto/cliente e como j disse outras vezes... ASP.NET MVC ou ASP.NET Web Forms? Tanto faz, desde que seja .NET

Abril / Maio- 2009 Abri/ Mai 2010

96