Você está na página 1de 96

Sumário

05 :. Eventos: Um Exemplo Prático


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

EDITORES
Alexandre Tarifa
Diego Nogare
11:. Introdução a Expression Blend 3
Emerson Facunte
Sergio Gonçalves

REVISÃO
Felipe Pocchini 15:. Temperaturas do MVP Summit
Fernanda Sallai 2010 com Power Pivot
EDITORAÇÃO E DIAGRAMAÇÃO
Adriano Almeida
Fernanda Sallai
18:. Aplicações com “N” camadas
COLABORADORES em ASP.Net - Parte IV Final
Alexandre Marcondes
Caio Azevedo
Cleyton Santana de Sousa
Diego Nogare
Djonatas Tenfen 24:. Criando o seu Próprio ORM
Felipe Pocchini
Fernanda Sallai
Leandro Alves Santos
Fabiano Belmonte
Fábio Luiz Pessoa Campinho 39:. SQL Reporting Service 2005
Fabrício Sanches
Ítalo Chesley Parte V
Jensen Clayton
Juliano Schimiguel
Laerte Junior
Marcel Medina 49:. Uso do Microsoft Project des-
Márcio Fábio Althmann
Rodrigo José Santi crevendo suas caracterísiticas
Sara Barbosa
Vinicius Quaiato

55:. Novidades em Desenvolvimen-


to no Sharepoint 2010
Fale com Editor

É muito importante para a equipe


saber a sua opinião sobre a revis- 65:. JQuery 1.4 - Novidades
ta, caso tenha alguma critica, su-
gestão, ou elogio entre em conta-
to.

Caso tenha interesse em publicar


um artigo na revista envie o título 67:. C# 4.0 -Tipos Dinâmicos
e um resumo do tema em formato
Word.

revista@codificando.net

69:. Copa Microsoft de Talentos

Produzido por:

04:. Editorial 96:. .Close ( )


www.codificando.net
Edição 15 Número 15 Ano 04 2010

Editorial
Fala galera, essa edição da revista marca mais um divisor de águas no Codificando .Net!
Seguindo o espírito da nossa comunidade de promover os membros ativos e que acredi-
tam que o compartilhamento de conhecimento altruísta é algo que engrandece nosso
país e faz a diferença entre nós, profissionais de tecnologia da informação.

Digo que esta edição é diferenciada, porque marca a transição da Editoração da revista
Codificando .Net e-Magazine para a Fernanda Sallai. Ela vem desenvolvendo um traba-
lho fantástico com a revista, e nada mais justo do que retribuir o trabalho dela junto à
nossa comunidade colocando-a a frente das atividades que faz.
Não deixarei completamente a edição da revista, vou me manter no time, mas só auxili-
ando a Fernanda no que for preciso (não farei praticamente nada).

Bom, depois de fazer a comunicação oficial desta mudança na revista, vou comentar so-
bre outro fator bem interessante desta edição: A Copa Microsoft de Talentos.

A Copa foi realizada por mais de 8.000 participantes em todo o território nacional, ain-
da estamos nas quartas-de-final, mas agora só 120 participantes passaram. Essa Copa
foi criada para divulgar os novos produtos lançados este ano e as pessoas que forem as-
sistindo as apresentações e realizando as provas vão acumulando pontos. Aconteceram
vários eventos através de Webcast – inclusive fui moderador na apresentação de SQL Server
2008 R2 – e também realizaram 17 eventos presenciais em vários estados. Esta edição da
revista trás fotos e relatos de como foram esses eventos presenciais nos estados, feitos
por membros da comunidade que acompanharam de perto o evento. Quero deixar um
agradecimento especial a todos eles, que colaboraram para permitir que pessoal de ou-
tros estados pudessem sentir como foram os eventos.

Pra finalizar, não menos importante, os artigos que foram aprovados nesta edição estão
com um nível bastante elevado. Praticamente todos os artigos são de membros da co-
munidade que nos procuraram para publicar os materiais. Se você tiver algum artigo e
quiser publicar com a revista, pode nos enviar um e-mail para revista@codificando.net

Diego Nogare
revista@codificando.net
e-magazine

Eventos: Um exemplo prático

Por: Leandro Alves Santos

Nesse artigo, veremos como efetuar a im- Isso pode ser evitado se, durante o pro-
plementação de um evento que indique o cessamento dos arquivos, nós informar-
progresso de um processamento efetuado mos ao usuário o que está ocorrendo in-
dentro de uma classe. ternamente através do formulário da a-
plicação.
O que é um evento?
Então, vamos criar um aplicativo que
Um evento é uma mensagem disparada
simula o processamento de arquivos e
por um objeto indicando alguma ação exe-
indica ao usuário o status desse proces-
cutada. Por exemplo, temos o evento Click samento.
de um objeto Button que é disparado sem-
pre que um usuário pressiona e solta esse Vamos ao exemplo prático?
objeto, ou o evento Shown de um objeto
Form, que indica que o Form está sendo Escrevendo a classe que dispara
mostrado pela primeira vez. Da mesma o evento
forma que podemos responder a esses e-
ventos, podemos criar nossos próprios e- Crie um projeto no Visual Studio do tipo
ventos e o usuário de nossa classe pode Class Library com o nome de Arquivos e Codificando.net e-magazine
respondê-los. adicione uma classe ao projeto com o no-
me de Arquivos como podemos ver nas
Projeto que será criado Figuras 1 e 2. O escopo dessa classe será
public. Veja a declaração da classe na
Imagine um caso em que o usuário selecio- Listagem 1.
na vários arquivos de texto e clica em um
botão em que os arquivos selecionados se-
rão processados. Dependendo do tamanho
de cada arquivo, da quantidade de arqui-
vos selecionados, do computador do usuá-
rio, etc., essa tarefa pode demorar. Com a
tela do aplicativo parada, o usuário pode
imaginar que o aplicativo travou e pode
tentar fechá-lo ou tentar reiniciar o compu-
tador. Figura 1 – Criando o projeto Arquivos.

www.codificando.net Abr / Mai - 2010 | 5


Eventos: Um exemplo prático e-magazine

Listagem 3 – Propriedade que retorna a


quantidade de arquivos.

Figura 2 – Adicionando a classe Arquivos ao


Na Listagem 4, criamos o método que
nosso projeto. simula o processamento dos arquivos,
efetuamos um looping no objeto arqui-
namespace Arquivos vos, percorrendo cada string e incluímos
{ uma chamada ao método Sleep(), simu-
public class Arquivos
{ lando um tempo de processamento em
} cada arquivo.
}
Listagem 1 – Declaração da classe Arquivos.

Na Listagem 2, vamos declarar um


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

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


processamento.

Codificando.net e-magazine
Antes de escrever o código do nosso e-
vento, vamos criar a classe que conterá
os dados do nosso evento. Essa classe
herda da classe EventArgs.

Essa classe conterá uma variável que va-


mos utilizar para passar o nome do ar-
Listagem 2 – Código criado para gerar a
quivo que será processado para a classe
que vai responder ao nosso evento. Essa
Também teremos nessa classe, uma pro- variável será privada e incluiremos uma
priedade que retorna o número de arqui- propriedade para acessá-la.
vos a serem processados. Isso é mostra-
do na Listagem 3. Notem na Listagem 5 que a nossa pro-
priedade contém o método set declarado

www.codificando.net Abr / Mai - 2010 | 6


Eventos: Um exemplo prático e-magazine

com o escopo internal. Quando declara- gate nesse caso, é utilizado como uma
mos um membro como internal, impedi- ponte entre o objeto que disparou o e-
mos que esse membro seja acessado fora vento e o objeto que tratará esse evento.
do assembly em que a classe foi criada.
Fizemos isso para impedir que o método
que responde ao nosso evento possa mo-
dificá-la.

Listagem 6 – Declaração do delegate e do


evento na classe Arquivos.

Estamos quase finalizando a classe ar-


quivo. Agora teremos que revisitar o mé-
todo CarregarArquivos() para disparar o
evento quando um arquivo estiver pres-
tes a ser processado. Veja a nova versão
do método na Listagem 7. Primeiro cria-
mos um objeto do tipo CarregandoAr-
quivoEventArgs, e atribuímos a string
com o nome do arquivo a propriedade
Listagem 5 – Classe que contém os dados do NomeArquivo do objeto. Depois verifi-
evento.
camos se o evento é nulo e caso ele não
seja nulo, disparamos o evento passando
Agora vamos declarar o delegate e o e- o objeto que está disparando o evento e
vento da classe. Veja na Listagem 6 que o objeto do tipo CarregandoArquivoE-
o delegate contém uma assinatura, seu ventArgs que contém o nome do arqui-
retorno é void, e os parâmetros são do vo.
tipo object e CarregandoArquivoEven- Por que tenho que verificar se
tArgs. No parâmetro do tipo object, pas- um evento é nulo? Codificando.net e-magazine
saremos uma referência da classe que
Caso o usuário de sua classe não tenha
disparou o evento e no parâmetro do ti-
criado nenhum método que responda ao
po CarregandoArquivoEventArgs, pas-
evento, o evento será nulo e quando ten-
saremos uma referência a um objeto cria-
tarmos dispará-lo, ocorrerá uma exceção
do na nossa classe e que conterá o nome
NullReferenceException.
do arquivo que será processado.

Mas o que é um delegate?

Para capturarmos um evento e efetuar-


mos alguma ação com base nesse evento,
precisamos de um delegate. Um delegate
é uma classe que contém uma referência
para um método. Basicamente, um dele- Listagem 7 – Segunda versão do método de
processamento.

www.codificando.net Abr / Mai - 2010 | 7


Eventos: Um exemplo prático e-magazine

Criando o formulário que vai Tipo: Button


capturar o evento Propriedades:
Name – btnProcessarArquivos
Adicione a solução um projeto Windows
Text – Processar
Forms Application (figura 3), clique nes-
se projeto com o botão direito e clique
Tipo: Label
em Set as StartUp Project.
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 Arqui-


vos, precisamos adicionar uma referên-
cia ao projeto Arquivos. Podemos fazer
isso clicando com o botão direito no nos-
so projeto do tipo Windows Forms Ap- Figura 5 – Formulário do nosso aplicativo.
plication -> Add Reference. Após isso,
clique na Aba Projects, selecione o proje- Na Listagem 8, adicionamos um método
to Arquivos e clique em OK (figura 4). de captura ao evento Click do botão btn-
ProcessarArquivos. Você pode adicioná-
lo clicando duas vezes no botão. Nesse Codificando.net e-magazine
evento, configuramos a propriedade
TopMost para true para que o form fique
sempre à frente dos outros forms que
não estejam configurados da mesma for-
ma. Desabilitamos o botão para que o
usuário veja que o mesmo não pode ser
pressionado. Criamos uma instância da
nossa classe Arquivos e configuramos a
propriedade Maximum do nosso objeto
do tipo ProgressBar com a quantidade
Figura 4 – Referenciando o projeto Arquivos.
de arquivos que temos para processar.

Inclua os seguintes componentes ao Veja a seguinte linha de código:


form:

www.codificando.net Abr / Mai - 2010 | 8


Eventos: Um exemplo prático e-magazine

arquivos.CarregandoArquivo += new Agora precisamos escrever o código do


Arqui- método que responderá ao evento. Pode-
vos.Arquivos.CarregandoArquivoHandler mos ver o código na Listagem 9. Esse
(arquivos_CarregandoArquivo); método atualiza a label com o nome do
arquivo que será processado e incremen-
Com ela indicamos que o método arqui-
ta o valor da barra de progresso. Ao final
vos_CarregandoArquivo responderá ao
disso o form é atualizado para que pos-
evento quando ele for disparado e o seu
samos visualizar os novos valores dos
código será executado.
objetos.
Para finalizar, chamamos o método que
processa os arquivos e ao final de todo o
processamento, resetamos o valor do
ProgressBar e da Label, habilitamos o
botão e configuramos TopMost para fal-
se.

Listagem 9 – Método que responde ao evento


CarregandoArquivo.

Execute o aplicativo e você verá o pro-


gresso da nossa simulação, tanto na La-
bel que indica qual arquivo está sendo
processado, como na barra de progresso.

Codificando.net e-magazine

Figura 6 – Progresso do processamento sendo


mostrado no formulário.

Mas o meu form fica travado. E


agora?

É possível deixar o form livre para que o


usuário continue fazendo outras tarefas
durante o processamento dos arquivos
Listagem 8 – Código do evento Click do botão
btnProcessar através de threads e com a utilização do

www.codificando.net Abr / Mai - 2010 | 9


Eventos: Um exemplo prático e-magazine

método Invoke para a atualização dos


objetos do formulário quando um arqui-
vo começa a ser processado, mas isso fo-
ge do escopo do artigo.

Conclusão

Com poucas linhas de código podemos


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

Leandro Alves Santos


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

Codificando.net e-magazine

www.codificando.net Abr / Mai - 2010 | 10


e-magazine

Introdução ao Expression Blend 3

Por: Fábio Luiz Pessoa Campinho

O Silverlight chegou a sua terceira versão, Quando iniciamos o Blend pela primeira
com novos recursos e melhorias, e nesse vez, veremos a tela de boas vindas com
artigo iremos aprender a utilizar o Expres- as opções para abrir Exemplos
sion Blend, ferramenta que usamos para (Samples), Help e Projetos (Projects).
desenvolver nossas aplicações e anima- Iremos clicar em Projets e depois New
ções. Project. A tela para criação de projetos
aparecerá conforme figura abaixo, nela
Podemos comprar ou baixar um Trial do temos as opções de “Silverlight” e “WPF
Expression Blend 3, no link: http:// (Windows Presentation Fundation)”,
www.microsoft.com/expression/products/ ambos os projetos trabalham com o pa-
Blend_Overview.aspx. drão XAML (Extensible Application
Markup Language). O Padrão Silverlight
A instalação é simples e segue o padrão é para ambiente Web, enquanto o WPF é
“Next – Next – Finish”. Se você seguiu a para aplicações Desktop. Selecionada a
instalação padrão, o blend vai estar no me- opção Silverlight vamos marcar a opção
nu Iniciar -> Microsoft Expression -> Ex- “Silverlight 3 Application + Website”. Codificando.net e-magazine
pression Blend 3 (figura 1). Essa é uma melhoria em relação a versão
2 que cria além de criar o projeto do Sil-
verlight, cria outro projeto com um Web
Site. Para finalizar selecionaremos a lin-
guagem que iremos trabalhar, no nosso
exemplo iremos manter o C#. Após clicar
em OK, os dois projetos serão criados
conforme a figura 2.

Figura 1. Tela de inicio do Expression Blend 3.

www.codificando.net Abr/ Mai - 2010 | 11


Introdução ao Expression Blend 3 e-magazine

Vamos desenhar um quadrado, que será


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

Figura 2. Criando um novo projeto no Blend.

Agora vamos criar nossa animação, o


primeiro passo é definir o tipo de Layout
que iremos trabalhar. Clique em
“LayoutRoot” com o botão direito Figura 4. Construindo um retângulo com a
ferramenta Pen.
(Figura 3), depois em “Change Layout
Type” e selecione a opção “Canvas”. Es-
sa é a opção ideal para trabalharmos Agora vamos alterar nosso retângulo para
com desenhos e animações. transformá-lo em um quadrado. Pressio-

Codificando.net e-magazine
ne F11 duas vezes para exibir em modo
SPLIT exibindo o código do XAML e o
visual e pressione F4 para ampliar a área
de trabalho do Blend (Figura 5).

Tudo o que é desenhado, escrito ou adi-


cionado no modo visual é codificado em
XAML. No nosso exemplo duas tags fo-
ram criadas: <CANVAS> que é a área on-
de serão adicionados os nossos desenhos
e <PATH> que é o nosso retângulo. Ire-
mos modificar a propriedade Data da
TAG <PATH> para transformar nosso re-
tângulo em um quadrado. A letra M sig-
Figura 3. Mudando o tipo do LayoutRoot para
Canvas.
nifica MoveTo e a letra L significa LineTo,
a letra z indica o fechamento do Path. A

www.codificando.net Abr/ Mai - 2010 | 12


Introdução ao Expression Blend 3 e-magazine

referência completa para a sintaxe do


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

Figura 6. Criando um novo Storyboard.

Clique no 10º segundo, posição 10 da li-


nha de tempo e vamos começar nossas
animações. A primeira é mudar a cor para
Vermelho. Na aba de Propriedades, no
grupo Brushes digite 0 no B (Blue) e 255
no R (Red) (Figura 7). Essa animação que
Figura 5. Tela em modo Split e Código do Path.
fizemos é
“ColorAnimationUsingKeyFrames”, você
Vamos executar diversos tipos de anima- pode verificar a modificação no XAML
ções básicas que o Blend permite. Vamos pressionando F11.
pressionar F4 novamente para exibir as

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

Figura 7. Mudando a cor para vermelho.

www.codificando.net Abr/ Mai - 2010 | 13


Introdução ao Expression Blend 3 e-magazine

No século XVII René Descartes definiu seu tamanho em 20%, para isso adiciona-
os primeiros estudos sobre geometria mos o fator de 1,2 nos eixos x e y confor-
cartesiana, estudos que definiam as me figura 9. Finalmente clique no Play
transformações bi-dimensionais, que são para ver a animação executando.
muito importantes para a computação
gráfica e que iremos ver na nossa anima-
ção. Vamos fazer agora o quadrado se
movimentar para a direita 100 pixels.
Esse tipo de animação é definido como
translação, que é o deslocamento de um Figura 9. Transformação de Escala.
objeto no eixo x e/ou y a partir do seu
ponto original. Vamos para o grupo
Pressione a tecla F11 para ver o código
“transform”, clique nas setas ao lado dos
XAML e observe a animação que criamos
nomes dos grupos para fazê-los encolher
ela é do tipo DoubleAnimationUsingKey-
ou expandir, o grupo “transform” fica lá
Frames e serve para alterar as proprieda-
em baixo, você pode também usar a bar-
des do tipo Double e é o código que irá
ra de rolagem. Digite 100 no X da pro-
executar nossas animações.
priedade Translate (Figura 8).

Vimos aqui as três animações bi-


dimensionais básicas, explore as abas adi-
cionais para descobrir outras possibilida-
des de animação. Estaremos explorando
nas próximas matérias, outras técnicas de
animação com o StoryBoard e C#.

Fábio Luiz Pessoa Campinho

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


fcampinho@hotmail.com Codificando.net e-magazine
Sou MCP, MCAD .NET e MCTS em Sharepoint e Win-
dows 7, atualmente sou professor de Computação Grá-
No próximo passo iremos fazer nosso fica da Faculdade Dom Pedro II em Salvador e desen-
objeto rotacionar. Clique na setinha da volvedor a 15 anos. Desenvolvo para .NET desde 2001.
Mantenho meu blog fcampinho.spaces.live.com
aba de rotação e informe 720 no campo
de ângulo que irá fazer o nosso objeto
girar no sentido horário sobre o seu pró-
prio eixo 720 graus. Finalmente iremos
reduzir fazer a transformação de escala,
que aumenta ou diminui um objeto u-
sando o fator sobre o seu próprio tama-
nho, ou seja você informa quanto quer
multiplicar o tamanho atual pelo fator,
no nosso exemplo iremos aumentar o

www.codificando.net Abr/ Mai - 2010 | 14


e-magazine

Temperaturas do MVP Summit 2010


com PowerPivot

Por: Diego Nogare

Com o lançamento do SQL Server 2008 R2 32) / 1,8 pra chegar em Celsius.
previsto para os próximos meses, nada
mais justo do que explorar algumas de ♦ Para baixar o add-on pro Office
suas funcionalidades. Algumas coisas que 2010:
estão bem interessantes no SQL Server http://powerpivot.com/download.aspx

2008 R2 é sua customização para traba-


lhar com BI, um ponto que a Microsoft ♦ Pra baixar o Office 2010 Beta:
está investindo pesado para o lançamento http://www.microsoft.com/
da plataforma do SQL Server 2008 R2. office/2010/en/default.aspx
Vendo esse investimento em Self-Service
BI, pensei em escrever um artigo sobre o Montei também uma tabela no SQL Ser-
PowerPivot utilizando como dados as ver 2008 R2, pra armazenar diretamente
temperaturas que enfrentarei no MVP (isso significa que é a forma mais rápida,
Global Summit 2010, na Microsoft em e mais burra) de guardar estes dados.
Redmond. Vou juntar a informação ir- Eles serão utilizados só pra isso e não
servirão pra mais nada. Mas como o ob-
relevante das temperaturas dos luga-
jetivo é só mostrar esses dados hoje, en-
res que visitarei, com um exemplo de
tão vou fazer assim mesmo!
criação e utilização do PowerPivot e
Excel 2010. Fazendo um select simples na tabela, te-
nho o seguinte RowSet (figura 1):
Não vou reescrever com as minhas pala- Codificando.net e-magazine
vras o que é o PowerPivot, justamente
porque o Zavaschi fez isso muito bem
neste artigo e neste outro. Recomendo a
leitura!

Pra começar, os links que utilizei pra


Figura 1– Exibindo dados da tabela.
montar isso foram:

♦ Pra encontrar a temperatura: Ótimo, já tenho a tabela e já tenho os da-


http://www.dryday.com/miniforecast.asp
dos das temperaturas. Agora é abrir o
Excel 2010 e montar meu gráfico das
Hah, como no site a temperatura está em
temperaturas.
Farenheight, utilizei a formula Cº = (Fº –

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 opção PowerPivot [1] no menu
superior. Ao acessar esse menu, procurar
o item PowerPivot window [2].

Figura 4 – Adicionando informações.

Depois de preencher as credenciais e avan-


Figura 2 – Acessando menu.
çar pra próxima tela, existe a possibilidade
de escrever uma query e testar, pra ver o
Agora é esperar o ambiente de Workspace retorno dela. Fazendo isso corretamente,
do PowerPivot carregar e começar a confi- um resultado como esse é apresentado na
gurar as coisas. Quando se abre o Power- figura 5.
Pivot Windows, essa tela abaixo é apre-
sentada, e é onde se monta a brincadeira.
Selecionamos a origem dos dados vindo
do SQL Server, que é o primeiro item do
menu que aparece na figura 3.

Figura 5 – Apresentando resultados.


Codificando.net e-magazine
Após essa validação, é só confirmar no bo-
Figura 3 – Selecionando a origem dos dados. tão OK e depois em Finish. O PowerPivot
vai analisar a sua query e montar um relató-
Uma tela pra colocar as credenciais do rio em seu Workspace te apresentando o
banco, e demais informações de acesso é RowSet que retornou do banco com a facili-
apresentada (figura 4). dade de se trabalhar com o Excel 2010.

Com os dados apresentados, é possível


montar alguns relatórios com poucos cli-
ques do mouse, utilizando todos os benefí-
cios do Excel 2010. No exemplo vou montar

www.codificando.net Abr / Mai - 2010 | 16


Temperaturas do MVP Summit 2010 com PowerPivot e-magazine

um único gráfico, selecionando Single Pi- ras que vou enfrentar em Seattle é exibido
votChart, que é a segunda opção do item na figura 8:
PivotTable.

Figura 6 – Montando gráfico. Figura 8 – Exibindo temperaturas.

Neste momento, o PowerPivot pergunta A informação da temperatura é importante


em qual Worksheet quero colocar o gráfi- pra mim, pra eu me planejar com a quanti-
co que está selecionado, e então, o gráfico dade de roupas que vou levar, mas a do Po-
(sem nenhum dado ainda) é apresentado, e werPivot é bem legal pra quem trabalha
as informações que vieram do SQL Server com desenvolvimento de relatórios gerenci-
2008 R2 (ou qualquer outra fonte de dados se- ais. Fica ai a dica!
lecionada) é mostrado no TaskPanel.
Diego Nogare
Agora que as informações já estão de volta Graduado em Ciência da Computação, Pós-Graduado em
Engenharia de Computação com ênfase em Desenvolvi-
ao Worksheet do Excel 2010, é só trabalhar mento Web com .NET. Colaborador do Portal Linha de
normalmente. Isso é ótimo pros Gerente / Código e da revista SQL Magazine, Líder do grupo de
Diretores e Presidentes (não o da republica, usuários Codificando .NET, Líder dos Microsoft Student
Partners [MSP] de São Paulo e Microsoft Most Valuable
mas os de verdade) veja na figura 7. Professional [MVP] em SQL Server, possui certificações

Codificando.net e-magazine
MCP e MCTS em SQL Server 2005, é palestrante em e-
ventos da Microsoft, Codificando .NET e INETA BR, man-
tém o site: www.diegonogare.net.

Figura 7 – Selecionando o Worksheet.


Worksheet

Pra fechar, o relatório com as temperatu-

www.codificando.net Abr / Mai - 2010 | 17


e-magazine

Aplicações em N Camadas com


ASP.NET - PARTE IV FINAL

Por: Felipe Pocchini

Aplicações em n camadas são desenvolvi-


das de forma distribuída, onde cada ca-
mada tem sua responsabilidade dentro do
contexto. Para um modelo de aplicação
Web são comumente usadas 3 camadas:
Presentation(Apresentação), Business
(Lógica do negócio) e Data(Responsável
pelas transações com o banco da dados).
Para finalizar esta série de artigos, vamos
desenvolver agora a camada de apresen-
tação(Presentation), que será a aplicação
Figura 2: adicionando um novo projeto a
web que vai utilizar os recursos das ca- solução (Add > New Project).
madas criadas para fazer o gerenciamento
de clientes. Esse novo projeto não será mais do tipo
Class Library, e sim um projeto do tipo
ASP.NET Web Application, que será
nossa aplicação. Como o foco desse arti-
go é o entendimento de aplicações em N
camadas, vamos desenvolver a camada
de apresentação utilizando um projeto

Codificando.net e-magazine
do tipo ASP.NET Web Application, mas
a mesma poderia ser desenvolvida utili-
zando outros tipos de projetos ofereci-
dos pela tecnologia.
Figura 1: Exemplo de aplicação em N Camadas.

Iremos adicionar a camada Presentation


em nosso projeto da mesma maneira que
aprendemos a adicionar as outras cama-
das. Para adicionar a camada ao projeto,
vamos clicar com o botão direito na solu-
ção e adicionar um novo projeto.
Figura 3: projeto do tipo ASP.NET Web
Application.

www.codificando.net Abr / Mai - 2010 | 18


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

Com o projeto adicionado a solução, po- das Entity e Business na camada Presentati-
demos agora trabalhar na camada Presen- on.
tation.

Figura 4: projeto criado. Figura 6: adicionando referências das camadas


Entity e Business na camada Presentation(Add
Reference > Projects > OK).

Para evitar erros na hora da execução da


aplicação, vamos seta-lá como StartUp de A camada Presentation não precisa de uma
nosso projeto. referência da camada Data, já que a camada
Business é responsável pela comunicação
entre elas.

Listando dados

Codificando.net e-magazine
A primeira coisa a ser feita é construirmos
uma página onde serão listados todos os
clientes cadastrados no banco de dados.

Essa página será o WebForm Default.aspx


que foi criado junto com o projeto, nesse
WebForm vamos adicionar um componente
GridView que irá receber como DataSource
Figura 5: configurando o projeto como StartUp.
o método listar da classe Clientes perten-
cente a camada Business.
Para a camada Presentation reconhecer
uma entidade da camada Entity, assim co-
mo os objetos da camada Business, é ne-
cessário adicionar as referências das cama-

www.codificando.net Abr / Mai - 2010 | 19


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

Para implementar a codificação da página


tecle F7 com o WebForm Default.aspx aber-
to, a janela com o Code-Behind será aberta.

Figura 7: adicionando o componente GridView ao


WebForm Default.aspx (Tollbox > Data >
GridView).

Para que as colunas do GridView não se-


jam criadas automaticamente vamos atri-
buir na propriedade AutoGenerateCo-
lumns o valor "False". Vamos então, custo-
mizar o GridView adicionando um
BoundField para o Nome e outro para o
Email, vamos adicionar um LinkButton
com um link para edição do registro, para
isso vamos utilizar o TemplateField. Va-
mos utilizar também no WebForm, um
Button para adicionar um novo Cliente a
base de dados.

Depois disso o código deve ficar assim:

Codificando.net e-magazine

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

Vamos rodar a aplicação e se deu tudo certo


Figura 8: visualização do código .aspx do até aqui, a página será exibida:
WebForm Default.aspx.

www.codificando.net Abr / Mai - 2010 | 20


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

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

Visualização detalhada do dados

Para a edição e visualização dos registros,


vamos criar um novo WebForm, onde va-
mos ter os detalhes de cada Cliente cadas-
trado no banco.

Codificando.net e-magazine

Figura 11: Adicionando um novo WebForm ao


projeto (Add > New Item > Web Form).

Com o WebForm criado, podemos adicio-


nar os componentes que vamos utilizar na Figura 12: visualização do código .aspx do
edição dos dados. WebForm Cliente_Edit.aspx.

Para implementar as funcionalidades do


WebForm vamos teclar F7.

www.codificando.net Abr / Mai - 2010 | 21


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

Page_Load

Figura 15: visualização do formulário de edição


executando uma inserção.

Alterar

Figura 16: implementação do método


btnAlterar_Click.

Figura 13: implementação do método Page_Load. Codificando.net e-magazine


Salvar

Figura 17: visualização do formulário de edição


executando uma alteração.

Figura 14: implementação do método


btnSalvar_Click.

www.codificando.net Abr / Mai - 2010 | 22


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

Excluir Tratamento de erros, o uso de boas práticas


e outras funcionalidades que você usaria no
desenvolvimento de sua aplicação em N ca-
madas. Participe, escreva seu artigo e com-
partilhe conhecimento.

Aprofunde seus conhecimentos sobre esse


tema na comunidade ASP.NET

Para saber mais:

Visão geral de aplicativo de dados n camadas


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

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


TE I
Aplicações em N Camadas com ASP.NET - PAR-
TE II
Aplicações em N Camadas com ASP.NET - PAR-
TE III

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

Felipe Pocchini
Figura 19: visualização do formulário de edição
executando uma exclusão. Graduado em Ciência da Computação pela Universida-

Codificando.net e-magazine
de José do Rosário Vellano (UNIFENAS), em Alfenas –
MG, trabalha com desenvolvimento de aplicações Web
e Windows Forms utilizando a tecnologia .Net. Mode-
Concluímos que ao final de mais uma eta- rador da comunidade Desenvolvendo para Web, cola-
pa, teremos todas as camadas implemen- borador da comunidade Codificando.Net e editor da
revista eletrônica Codificando .Net e-Magazine.
tadas e funcionando de forma indepen-
dente. Lembrando que o objetivo desse
artigo foi demonstrar o funcionamento de
aplicações em N camadas, alguns detalhes
como tratamento de erros e outras funcio-
nalidades foram deixadas de lado para
não perdermos o foco do entendimento.
Fica aqui então a dica: Como você imple-
mentaria cada camada de seu projeto?

www.codificando.net Abr / Mai - 2010 | 23


e-magazine

Criando o seu próprio ORM

Por: Alexandre Marcondes

Introdução guagem SQL. Outros problemas são in-


compatibilidade de tipos entre a lingua-
♦ Entendendo ORM gem e o SQL, diferenças estruturais, ma-
♦ Quando usar ORM? nipulativas e no tratamento de transa-
♦ Como escolher um ORM? ções.
♦ Por que criar seu próprio ORM?
♦ Como criar seu próprio ORM Entenda melhor as diferenças:
♦ O que fazer após criar seu próprio
ORM? Encapsulamento

Sistemas usando OOP são projetados pa-


Objetivo
ra encapsular os dados dentro de obje-
tos, escondendo o seu funcionamento
Capacitar o leitor a decidir qual ferramenta
interno. Quando estes sistemas utilizam
de ORM deve usar e se necessário, criar
DBMS, os dados ficam expostos de for-
sua própria ferramenta de ORM
ma que o encapsulamento é quebrado,
pois o banco de dados é exposto publica-
Introdução mente, sem restrições de acesso Codificando.net e-magazine
(geralmente só se utiliza proteção por
O Mapeamento Objeto-Relacional (ORM – login / senha, tornando todas as tabelas
Object-relational Mapping ou O/R Map- públicas para usuários autenticados).
ping) é uma técnica usada para solucionar
o problema da impedância entre sistemas Diferenças de tipos de dados
usando programação orientada a objetos
(OOP – Object Oriented Programming) e A maior diferença entre sistemas que de-
gerenciadores de bancos de dados relacio- senvolvidos com OOP e o uso de DBMS,
nais (DBMS – Data Base Management Sys- está no sistema de tipos. Não há suporte
tem). A impedância é causada porque sis- por parte dos DBMS para tipos por refe-
temas que usam OOP, quando acessam rência (ponteiros), enquanto a maioria
um DBMS, precisam usar de técnicas pro- das linguagens usadas em OOP faz de
cedurais (o que quebra boa parte do con- ponteiros um de seus recursos essenciais
ceito de OOP) devido às limitações da lin- (algumas deixam ponteiros apenas para
uso interno – como o Java, outras ocul-

www.codificando.net Abr / Mai - 2010 | 24


Criando o seu próprio ORM e-magazine

tam boa parte dos ponteiros – como dos. As linguagens de OOP, por sua vez,
o .NET e o Delphi, e uma boa parte usa trabalham os dados em listas, coleções e
explicitamente ponteiros – como o C++). hash-tables utilizando-se de manipula-
ção de baixo-nível através de operações
A implementação de tipos básicos ou imperativas e sub-linguagens para busca
escalares (como int, char, long, bool) va- (como o LinQ).
ria de linguagem para linguagem e, al-
gumas vezes, pode ser complicado tra- Diferenças nas transações
duzir entre tipos na linguagem de OOP e
No aspecto de transações, temos que as
no DBMS.
linguagens que suportam OOP, geral-
Diferenças estruturais e de in- mente, não trabalham com transações no
tegridade modelo ACID, visto que a maioria das
transações envolve manipulação de da-
Acesso aos dados em OOP geralmente dos simples em campos ou propriedades
são feitos por meio de interfaces que nos objetos.
provêem acesso aos dados encapsulados,
enquanto os DBMS usam de views para Uma das técnicas para minimizar estes
restringir o acesso a dados e manter a problemas é o uso de ferramentas de
integridade. A manutenção de integrida- Mapeamento Objeto-Relacional que per-
de é diferente nos dois modelos, em O- mitam o programador aproveitar os re-
OP são utilizadas exceções com escopos cursos de OOP, mas de forma que não
protegidos (geralmente com try ... catch) seja preciso preocupar-se com o funcio-
e eventos, enquanto em DBMS usa de namento interno do DBMS ou com co-
restrições (constraints) e chaves estran- mandos em SQL.
geiras (foreign keys) para manter a inte-
gridade. Entendendo ORM

Enquanto um sistema usando OOP apli- As ferramentas de ORM geralmente se Codificando.net e-magazine
ca conceitos de classes, herança e poli- apresentam como bibliotecas que são u-
morfismo, estas características não são sadas durante o desenvolvimento e elas
suportadas por DBMS. Há também o usam diversas abordagens para resolver
problema de que em OOP os dados são os problemas de impedância Objeto-
organizados hierarquicamente e em Relacional. As principais abordagens são
DBMS são organizados em tuplas com as que seguem:
relações não hierárquicas.
♦ Geração de código SQL automatizada
Diferenças na manipulação via código apenas

Algumas das maiores diferenças estão A abordagem de geração de SQL é a


na manipulação de dados, pois DBMS mais simples de todas. Há uma classe ou
têm um conjunto pequeno de operado- função de persistência que deve ser usa-
res para usar em operações de busca e da para gerar um SQL a partir de parâ-
são otimizados para buscar tuplas de da-

www.codificando.net Abr / Mai - 2010 | 25


Criando o seu próprio ORM e-magazine

metros que serão colocados no template nas nos objetos. É uma abordagem não
escolhido. Esta abordagem simplesmen- invasiva pois permite que os objetos te-
te esconde o código SQL no sistema, re- nham sua própria linha de herança, não
servando todos os comandos de banco interferindo no modelo do sistema.
de dados a alguns arquivos de configu-
ração, mas não há mapeamento entre os ♦ Herança
objetos e os templates.
Esta abordagem é rápida e simples de
♦ Mapeamento definido pelo usuá- implementar, mas por obrigar os objetos
rio via arquivo de configuração
que serão persistidos a herdarem suas
características de um objeto comum,
Trabalhando um pouco mais no código muito do modelo do sistema OOP é per-
de geração de SQL, e incluindo arquivos dido. Em compensação, se ganha em fa-
de configuração para o mapeamento, te- cilidade ao codificar, pois as funções de
mos a possibilidade de não precisar es- persistência também são herdadas e des-
colher qual template usar quando cha- ta forma não há a necessidade de chamar
mamos as funções ou classes de persis- funções ou classes específicas para per-
tência. Esta abordagem facilita a codifi- sistir os dados.
cação, pois à partir do próprio objeto a
biblioteca pode inferir quais são os parâ- ♦ Reflexão em POCOs (Plain Old C# Ob-
metros. jects) ou POJOs (Plain Old Java Objects)

♦ Mapeamento definido pelo usuá- Utilizando-se dos recursos da linguagem


rio em código via atributos ou a- no seu limite, algumas abordagens con-
notações
seguem fazer com que tenhamos POCOs
ou POJOs, sendo persistidos sem muitas
Alguns programadores evitam usar ar- vezes nem precisar dos atributos ou ano-
quivos de configuração, especialmente tações. Estas bibliotecas mostram-se as
em XML e, com o surgimento de funcio- mais flexíveis em relação a modelagem Codificando.net e-magazine
nalidades como atributos em .NET e a- usada em OOP, pois há a possibilidade
notações em Java, surgiu a necessidade de unir o mapeamento seguindo pa-
de mapeamento de objetos sem arquivos drões, sem precisar herdar de uma classe
de configuração. Estas bibliotecas usam comum e ainda chamar a função de per-
recursos de reflexão para identificar o sistência diretamente do próprio objeto.
mapeamento de objetos e podem usar
três abordagens para isto: Mapeamento seguindo um padrão pré-
definido
♦ Classe ou função de persistência

Algumas bibliotecas preferem definir


Nesta abordagem a função ou classe de um padrão de nomenclatura para as
persistência fazem uso de reflexão pro- classes e campos de forma que fique
curando por atributos específicos que simples mapear para tabelas e colunas.
identificam quais são as tabelas e colu- Caso haja exceções, é necessário definir o

www.codificando.net Abr / Mai - 2010 | 26


Criando o seu próprio ORM e-magazine

mapeamento de forma manual via arqui- ♦ A ferramenta suporta polimorfismo


vo ou anotações e propriedades. e herança?
♦ Quaisquer tipos de relação podem
Nota do autor ser mapeados (1-1, 1-n, m-n ou n-
n)?
Os POCOs e POJOs são objetos simples, ♦ Há como usar transações?
que não herdam de nenhuma classe da ♦ Funções agregadoras como SUM,
biblioteca em questão nem implemen- AVG, MIN, MAX e COUNT têm
tam nenhuma interface específica para a seus equivalentes na ferramenta de
persistência. ORM?
♦ Agrupamento e ordenamento são
Quando usar ORM? passíveis de ser controlados?
♦ Quais DBMS são suportados?
♦ Há como enviar diretamente co-
Pessoalmente, sempre que faço uma a-
mandos SQL se for necessário
plicação que usa banco de dados, eu faço
(pode-se precisar de queries mais
questão de usar uma ferramenta de
complexas ou usar funções especí-
ORM. Eu gosto de manter a estrutura do
ficas do DBMS)?
modelo usando OOP nas aplicações em
♦ Store Procedures e views são ma-
que trabalho. Mas, opiniões pessoais à
peadas?
parte, ferramentas ORM devem ser usa-
♦ A ferramenta usa uma linguagem
das apenas quando há a necessidade de
própria de buscas de objetos (OQL,
manter ou criar uma hierarquia de clas-
OPath ou LinQ)?
ses em OOP mais complexa, e ainda as-
♦ A ferramenta suporta Databinding?
sim persisti-la usando DBMS com SQL.
♦ JOINS e WHERE são suportados?
É importante notar, que sempre que o
♦ Como a ferramenta trata a concor-
desempenho for um requisito essencial,
rência no acesso aos dados?
é prudente evitar o uso de ferramentas
Há alguma espécie de cache de da-
Codificando.net e-magazine

ORM, pois elas agregam certa quantida-
dos em memória?
de de processamento a mais, em cada
♦ Como é o suporte para tipos de da-
ação que tomar no banco de dados.
dos específicos do DBMS (como
identity, sequences, generators,
Como escolher um ORM?
GUIDs, auto-incrementos)?
♦ Há como mapear múltiplos objetos
Alguns recursos podem ser essenciais
a partir de uma mesma tabela?
para sua aplicação, assim, é essencial u-
♦ A ferramenta implementa lazy loa-
ma boa escolha antes de começar a usar
ding?
uma ferramenta de ORM. Alguns recur-
♦ Tem como enviar mais de um co-
sos são importantes de serem avaliados
mando para o DBMS (algumas fer-
no processo de escolha da ferramenta
ramentas implementam o sistema
certa para cada projeto. É importante
de commits e rollbacks em memó-
perguntar-se:
ria ou bulk updates para otimizar o
envio de comandos ao DBMS)?

www.codificando.net Abr / Mai - 2010 | 27


Criando o seu próprio ORM e-magazine

♦ Como é o desempenho da ferra- estes recursos em C#, fiquei curioso e me


menta? senti desafiado a desenvolver minha
♦ Como a ferramenta trata referên- própria ferramenta de ORM. Desta for-
cias circulares? ma criei o C# Data Objects ( CsDO –
♦ A ferramenta suporta objetos seria- http://www.codeplex.com/CsDO ).
lizáveis?
Como criar seu próprio ORM
Por que criar seu próprio ORM?
O primeiro passo para criar seu próprio
Levando em consideração as opções de ORM é decidir qual abordagem irá se-
ORM mais difundidas em .NET, logo guir. Para criar o C# Data Objects
após o lançamento do Framework .NET (CsDO), eu e a equipe que me auxiliou
2.0, surgiu uma necessidade e uma curi- no desenvolvimento decidimos por usar
osidade, qual a dificuldade produzir mi- a abordagem de Herança com reflexão
nha própria biblioteca de ORM de acor- para termos configurações em Properties
do com o que eu considerava mais pro- do C#. Em seguida é importante modelar
dutivo em OOP. Levei em consideração a estrutura de Interfaces e Classes para
os seguintes recursos que não encontrei fazer o controle do Mapeamento Objeto
nas ferramentas ORM da época (pelo Relacional (Veja Figuras 1.1 a 1.4).
menos não todos na mesma ferramenta):

♦ Configuração da conexão de banco


de dados por meio do web.config
ou app.config
♦ Mapeamento automático dos no-
mes das classes para tabelas
♦ Mapeamento automático dos no-

Codificando.net e-magazine
mes de propriedades públicas para
colunas
Figura 1.1. Conexão com o Banco de Dados
♦ Possibilidade especificar proprie-
dades que não devem ser mapea-
das propriedades
♦ Configuração de mapeamento de
por meio de atributos do .NET
♦ Possibilidade de executar no .NET
1.x / 2.0 e no Mono
♦ Mapeamento transparente de Fo-
reign Keys
♦ Otimização de buscas por meio da
Primary Key

Como não foi possível, na época, encon-


Figura 1.2. Atributos de configuração
trar uma biblioteca de ORM com todos

www.codificando.net Abr / Mai - 2010 | 28


Criando o seu próprio ORM e-magazine

DO optamos por criar um classe usando


o padrão Singleton ( http://
pt.wikipedia.org/wiki/Singleton ).

Agora toda a base está pronta, e devida-


Figura 1.3. Classe de acesso ao Banco de Dados. mente testada – o CsDO usou a metodo-
logia TDD ( http://en.wikipedia.org/
wiki/Test-driven_development ) no de-
senvolvimento e teve muitos testes uni-
tários para garantir a integridade das a-
plicações que o usam. Chegou o momen-
to de criar o mapeamento propriamente
dito. Como a escolha no CsDO foi de u-
Figura 1.4. Classe base para objetos de
persistência.
sar a herança para definir que classes de-
vem ser mapeadas, a implementação re-
Assim, definimos uma Interface para o sumiu-se em codificar um gerador de
acesso ao DBMS ( IDataBase ) onde é pos- comandos SQL à partir das propriedades
sível manter a conexão ( getConnection, do objeto por meio de reflexão ( http://
open e close ) e executar comandos pt.wikipedia.org/wiki/Reflexão_
( getCommand e getDataAdapter ). Para (programação) ).
cada DMBS será criado um Driver que
implementa as especificidades de cada
servidor. Em seguida, é necessário defi-
nir como as configurações do mapea-
mento seriam inseridas no sistema, a es-
colha no CsDO foi de usar atributos em
classes para mapear tabelas e em propri-
edades para mapear colunas e chaves
primárias. Para evitar uma quantidade Codificando.net e-magazine
muito grande de configurações desne-
cessárias, foi adotado o padrão de que
Figura 2. Comparação de performance entre
classes que descendem de DataObject concatenação de Strings (linha azul),
StringBuilder com construtor padrão (linha
automaticamente têm mapeado seu no- vermelha) e StringBuilder alocando memória no
me para o nome da tabela e o nome de tamanho correto (linha verde).

suas propriedades públicas para o nome


das colunas, qualquer exceção deve ser
configurada usando atributos. Para gerar os comandos SQL muitas s-
trings precisam ser concatenadas, assim,
O próximo passo é criar uma forma de a escolha natural é usar StringBuilder
acessar diretamente o DBMS para fazer (Ver Figura 2) para minimizar o consu-
queries mais complexas, caso haja neces- mo de memória e aumentar a perfor-
sidade (usadas geralmente em relatórios, mance da biblioteca. As Listagens 1.1 a
gráficos ou em análise de dados). No Cs- 1.5 mostram uma versão simplificada do

www.codificando.net Abr / Mai - 2010 | 29


Criando o seu próprio ORM e-magazine

código necessário para gerar o SQL de ♦ Mapear objetos nulos para o banco
cada comando DML ( http:// de dados – A Listagem 2.2 mostra
pt.wikipedia.org/wiki/ como o CsDO resolve o problema,
Lingua- identificando Nullable Types e ma-
gem_de_manipulação_de_dados ). Os peando para NULL no DBMS;
comandos devem ser usados da seguinte ♦ Mapear nulos do banco de dados
forma: para tipos que não aceitam nulos –
Tipos como int, long, float, double,
♦ O delete e o update devem ter sem- char, string, DateTime e bool não
pre a chave primária com conteúdo aceitam nulos como padrão e as
não zerado, caso contrário será fei- soluções foram as seguintes:
to um WHERE com todos os cam- 1. int, long, float e double : mapear
pos, para garantir que apenas aque- para 0;
le objeto será atualizado; 2. char : mapear para o caractere 0x0;
♦ O insert deve ter pelo menos a cha- 3. string : mapear para String.Empty;
ve primária com conteúdo não ze- 4. bool : mapear para false;
rado; 5. DateTime : mapear para 01-01-01
♦ Para encontrar um objeto deve-se 00:00:00;
preencher um objeto novo com os ♦ Mapear datas – mapear usando
campos a serem buscados e chamar ToString("yyyyMMdd
o método find, se retornar verda- HH:mm:ss");
deiro há registros válidos para esta ♦ Otimizar as queries – identificamos
busca, em seguida deve-se chamar campos ativos (não-nulos) e apenas
fetch enquanto ele retornar verda- estes formam as queries, desta for-
deiro (como num DataReader) para ma dmininuimos o processamento
preencher o objeto em questão com no DBMS e no ORM;
o valor de cada registro da busca. ♦ Identificar objetos alterados – Atua-
lemente apenas identifica campos
Para finalizar, algumas funções de su- nulos e preenchidos; Codificando.net e-magazine
porte precisam ser desenvolvidas: get- ♦ Mapear chaves estrangeiras – As
ColumnProperties, formatValue, chaves estrangeiras, no CsDO, são
assertField e loadFields . Estas funções mapeadas automaticamente para
servem respectivamente para carregar as as classes, desde que o tipo da pro-
configurações de uma coluna, formatar priedade seja o tipo da classe da
os dados para colocar na string SQL, va- tabela em questão. Ao gravar, o Cs-
lidar os dados de uma coluna e carregar DO grava a chave primária da tabe-
os dados das queries nos objetos e po- la secundária no campo de chave
dem ser vistas nas Listagens 2.1 a 2.4 . estrangeira e ao ler, carrega o obje-
Alguns desafios deverão ser superados to em questão com o registro da
para a primeira versão de seu próprio tabela secundária;
ORM, seguem os desafios com as solu- ♦ Evitar redundância, principalmente
ções implementadas no CsDO: quando a tabela faz auto-referência
– O CsDO tem uma propriedade

www.codificando.net Abr / Mai - 2010 | 30


Criando o seu próprio ORM e-magazine

pública não persistida chamada && !data.Equals("NULL"))


Depth que tem como valor padrão {
3, a cada leitura de chave estrangei- values.Append(data);
ra ele debita 1 do nível de profun- values.Append(",");
}
didade, o que limita em 4 níveis de
}
reentrância (isto pode ser configu-
rado objeto a objeto se necessário); values.Remove(values.Length -1, 1);
♦ Comparação entre objetos mapea- values.Append(")");
dos – Optou-se por comparar ape- sql.Append(" (");
nas as chaves primárias, por isto, sql.Append(ActiveFields);
foi feita a sobrecarga dos operado- sql.Append(")");
res de comparação e as funções sql.Append(values);
ToString, Copy e GetHashCo-
de; int i=0;

Listagem 1.1 Código do Insert Persisted = (i == 1);

return (Persisted);
PropertyInfo propriedadeIdentity = null;
string ident = null; Listagem 1.2 Código do Update

StringBuilder sql = new StringBuilder StringBuilder sql = new StringBuilder


("INSERT INTO "); ("UPDATE ");
sql.Append(Table); StringBuilder clausule = new StringBuilder
();
StringBuilder values = new StringBuilder(" string search = "";
Values ("); string operador = "";
StringBuilder values = new StringBuilder();
PropertyInfo [] props = GetType bool hasWhere = false;
().GetProperties();
PropertyInfo [] props = GetType
Codificando.net e-magazine
foreach (PropertyInfo propriedade in props) ().GetProperties();
{
bool persist = true; foreach (PropertyInfo propriedade in props)
string data = null; {
bool primaryKey = false;
getColumnProperties(propriedade, ref bool persist = true;
persist); string name = null;

if (!persist) getColumnProperties(propriedade, ref


continue; name, ref persist, ref primaryKey);

data = formatValue(propriedade); if (!persist)


continue;
if ((data != null)
&& !data.Equals("'00010101 00:00:00'") if (name == null)

www.codificando.net Abr / Mai - 2010 | 31


Criando o seu próprio ORM e-magazine

name = propriedade.Name; sql.Append(clausule);


}
operador = " = ";
bool result = false;
if (propriedade.PropertyType == typeof
(System.String)) if (hasWhere)
{ {
operador = " LIKE "; int i = DataBase.New().Exec(sql.ToString());
}
Persisted = (i >= 1);
search = formatValue(propriedade); result = (i >= 1);
} else
if (primaryKey && (search != null) result = false;
&& !search.Equals("'00010101 00:00:00'")
&& !search.Equals("NULL")) return result;
{
StringBuilder item = new StringBuilder(); Listagem 1.3 Código do Delete

item.Append("("); StringBuilder sql = new StringBuilder


item.Append(name); ("DELETE ");
item.Append(operador); StringBuilder clausule = new StringBuilder
item.Append(search); ();
item.Append(")"); string search = "";
hasWhere = true; string operador = "";
bool hasWhere = false;
clausule.Append(item);
clausule.Append(" AND "); PropertyInfo [] props = GetType
} ().GetProperties();
else
{ foreach (PropertyInfo propriedade in props)
values.Append(name); { Codificando.net e-magazine
values.Append("="); bool primaryKey = false;
values.Append(search); bool persist = true;
values.Append(","); string name = null;
}
} getColumnProperties(propriedade, ref
name, ref persist, ref primaryKey);
if (!values.ToString().Equals(""))
values.Remove(values.Length - 1, 1); if (!persist)
continue;
if (hasWhere)
{ if (name == null)
clausule.Remove(clausule.Length - 4, 4); name = propriedade.Name;
sql.Append(Table);
sql.Append(" SET "); operador = " = ";
sql.Append(values);
sql.Append(" WHERE ");

www.codificando.net Abr / Mai - 2010 | 32


Criando o seu próprio ORM e-magazine

if (propriedade.PropertyType == typeof Listagem 1.4 Código do Find

(System.String))
operador = " LIKE "; StringBuilder sb = new StringBuilder
("SELECT ");
search = formatValue(propriedade); StringBuilder clausule = new StringBuilder
();
if ((search != null) && !search.Equals("0"))
{ string search = "";
StringBuilder item = new StringBuilder(); string operador = "";
bool hasWhere = false;
item.Append("(");
item.Append(name); PropertyInfo [] props = GetType
item.Append(operador); ().GetProperties();
item.Append(search);
item.Append(")"); foreach (PropertyInfo propriedade in props)
hasWhere = true; {
bool primaryKey = false;
clausule.Append(item); bool persist = true;
clausule.Append(" AND "); string name = null;
}
getColumnProperties(propriedade, ref
if (primaryKey) name, ref persist, ref primaryKey);
break;
} if (!persist)
continue;
if (hasWhere)
{ if (name == null)
clausule.Remove(clausule.Length - 4, 4); name = propriedade.Name;
sql.Append("FROM ");
sql.Append(Table); if (propriedade.PropertyType == typeof
sql.Append(" WHERE "); (bool) || Codificando.net e-magazine
sql.Append(clausule); propriedade.PropertyType == typeof
} (System.Boolean))
continue;
bool result = false;
operador = " = ";
if (hasWhere)
{ if (propriedade.PropertyType == typeof
int i = DataBase.New().Exec(sql.ToString()); (System.String))
operador = " LIKE ";
result = (i == 1);
} else search = formatValue(propriedade);
result = false;
if (search != null && !search.Equals("0")
return result; && !search.Equals("'00010101 00:00:00'")
&& !search.Equals("NULL"))

www.codificando.net Abr / Mai - 2010 | 33


Criando o seu próprio ORM e-magazine

{ if (result)
StringBuilder item = new StringBuilder(); result = loadFields(dt[dt.Cursor], this);
item.Append("(");
item.Append(name); return result;
item.Append(operador); }
item.Append(search);
item.Append(")"); return false;
hasWhere = true;
Listagem 2.1 Código do
clausule.Append(item); getColumnProperties
clausule.Append(" AND ");
} object[] attributes =
property.GetCustomAttributes(typeof
if (primaryKey && (search != null) && ! (Column), true);
search.Equals("0")
&& !search.Equals("00010101 00:00:00")) if (attributes.Length > 0)
break; {
} Column column = (Column) attributes[0];
persist = column.Persist;
if (hasWhere)
{ if (column.Name != null)
clausule.Remove(clausule.Length - 4, 4); name = column.Name;
sb.Append(Fields); }
sb.Append(" FROM ");
sb.Append(Table); attributes = property.GetCustomAttributes
sb.Append(" WHERE "); (typeof(PrimaryKey), true);
sb.Append(clausule);
} if (attributes.Length > 0)
else primaryKey = true;
{
sb.Append(Fields); Listagem 2.2 Código do format- Codificando.net e-magazine
sb.Append(" FROM "); Value
sb.Append(Table);
}
string result = "";
dt = DataBase.New().QueryDT(sb.ToString
object valueObj;
());

if (property.PropertyType.IsSubclassOf
return true;
(typeof(DataObject)))
{
Listagem 1.5 Código do Fetch valueObj = (property.GetValue(this, null) !=
null) ?
if ((dt != null) && !dt.IsEmpty) ((DataObject)property.GetValue(this,
{ null)).getPrimaryKey() : "NULL";
bool result = dt.Read(); }
else

www.codificando.net Abr / Mai - 2010 | 34


Criando o seu próprio ORM e-magazine

{
valueObj = (property.GetValue(this, null) != case "System.Int64":
null) ? case "System.Nullable`1[System.Int64]":
property.GetValue(this, null) : "NULL"; return ((Int64)valueObj).ToString
} (formatNumber);

if (valueObj != null) case "System.Decimal":


{ case "System.Nullable`1
CultureInfo culture = new CultureInfo("en- [System.Decimal]":
US"); return ((Decimal)valueObj).ToString
IFormatProvider formatNumber = (formatNumber);
culture.NumberFormat;
StringBuilder sb; case "System.Double":
case "System.Nullable`1[System.Double]" :
switch (valueObj.GetType().ToString()) return ((Double)valueObj).ToString
{ (formatNumber);
case "System.Boolean":
case "System.Nullable`1 case "System.Single":
[System.Boolean]": case "System.Nullable`1[System.Single]":
return ((Boolean)valueObj ? "'T'" : "'F'"); return ((Single)valueObj).ToString
(formatNumber);
case "System.Char":
case "System.Nullable`1[System.Char]": case "System.String":
sb = new StringBuilder("'"); sb = new StringBuilder("'");
sb.Append(((Char)valueObj).ToString()); sb.Append(valueObj.ToString());
sb.Append("'"); sb.Append("'");
return sb.ToString(); return sb.ToString();

case "System.DateTime": default:


case "System.Nullable`1 if (valueObj.GetType().IsSubclassOf
[System.DateTime]": (typeof(DataObject))) Codificando.net e-magazine
sb = new StringBuilder("'"); return formatObject(((DataObject)
sb.Append(((DateTime) valueObj).getPrimaryKey());
valueObj).ToString("yyyyMMdd else
HH:mm:ss")); return valueObj.ToString();
sb.Append("'"); }
return sb.ToString(); }

case "System.Int16": return "NULL";


case "System.Nullable`1[System.Int16]":
return ((Int16)valueObj).ToString Listagem 2.3 Código do loadFields

(formatNumber);
if (dr != null && obj != null) {
case "System.Int32": {
case "System.Nullable`1[System.Int32]": PropertyInfo [] props = GetType
return ((Int32)valueObj).ToString ().GetProperties();
(formatNumber);

www.codificando.net Abr / Mai - 2010 | 35


Criando o seu próprio ORM e-magazine

bool persist = false; }


else
foreach (PropertyInfo propriedade in {
props) val = assertField(null,
{ propriedade);
string name = null;
getColumnProperties(propriedade, ref propriedade.SetValue(this,
name, ref persist); val, null);
continue;
if (!persist) }
continue; }

if (String.IsNullOrEmpty(name)) if (obj.PrimaryKeys.Count > 0)


name = propriedade.Name; {
((PropertyInfo)obj.PrimaryKeys[0]).
object val = dr[name]; SetValue(obj,
val, null);
if (propriedade != null) obj.find();
{ obj.fetch();
#region Property holds a Foreign Key
PropertyInfo propriedade =
if obj.PrimaryKeys[0];
(propriedade.PropertyType.IsSubclassOf
(typeof(DataObject)) && bool nullObject = false;
!val.GetType().IsSubclassOf(typeof if (propriedade != null)
(DataObject))) {
{ object col =
if (val == null || val.ToString().Equals propriedade.GetValue(this, null);
("0") if (col != null)
|| val.GetType() == typeof(DBNull)) nullObject =
{ col.ToString(). Codificando.net e-magazine
propriedade.SetValue(this, null,
null); Equals(val.ToString());
continue; else
} return nullObject = col
== val;
DataObject obj = (DataObject) }
propriedade.GetValue(this, null); else
throw new CsDOException
if (obj == null) ("Field '"
{
if (depth > 0) + obj.PrimaryKeys[0].Name
{
obj = (DataObject) Activator. + "' not found!");
CreateInstance
(propriedade.PropertyType); if (!nullObject)
obj.depth = this.depth - 1;

www.codificando.net Abr / Mai - 2010 | 36


Criando o seu próprio ORM e-magazine

propriedade.SetValue(this, if (val != null && (val.GetType


null, null); ().IsSubclassOf(typeof(DBNull))
else || val.GetType() == typeof(DBNull)))
propriedade.SetValue(this, {
obj, null); val = null;
} }
else else if (nullableType == typeof(bool))
throw new CsDOException("Class '" {
+ if (val.ToString().ToUpper().Equals("T") ||
propriedade.PropertyType val.ToString().ToUpper().Equals
+ "' has no Primary ("TRUE"))
Key!"); val = (Boolean)true;
continue; else
} val = (Boolean)false;
#endregion }
else else if (nullableType == typeof(float) &&
#region Property holds data val.GetType() == typeof(double))
{ {
val = assertField(val, propriedade); val = float.Parse(((double)val).ToString());
}
propriedade.SetValue(this, val, null); else if (nullableType == typeof(int) &&
continue; val.GetType() == typeof(long))
} {
#endregion val = int.Parse(((long)val).ToString());
} }
} return val;

Persisted = true; O que fazer após criar seu pró-


return true; prio ORM?
}
return false;
Atualmente o projeto do CsDO (que tem Codificando.net e-magazine
o código aberto) está estável e tem tido
Listagem 2.4 Código do
poucas atualizações mas após a constru-
assertField
ção do ORM, e alguns projetos reais u-
sando a biblioteca que você construir,
Type nullableType = null;
algumas necessidades surgirão. Este é o
if (propriedade.PropertyType.Name ==
momento que você deve reavaliar o seu
"Nullable`1") projeto tendo em vista as tecnologias
nullableType = que estão surgindo.
propriedade.PropertyType.GetGenericArgu
ments()[0]; No caso do CsDO, após algum tempo,
else surgiram algumas tecnologias como
nullableType = propriedade.PropertyType; LinQ, a cache de objetos Velocity, Nula-
ble Types, Extension Methods e o Entity
Framework. Reavaliando o projeto, há

www.codificando.net Abr / Mai - 2010 | 37


Criando o seu próprio ORM e-magazine

novos recursos / tecnologias que gostaria


de implementar: Alexandre Rocha Lima e Marcondes

dotnetarquitechts@alexandremarcondes.com.br
♦ Desobrigar a herança, para possibi- Coach de executivos e profissionais de sucesso com
18 anos de experiência na área de Tecnologia da
litar o uso de POCOs; Informação. Mais de 10.000 horas de vivência como
♦ Usar o modelo de detecção de alte- desenvolvedor de software e mais de 1000 pessoas
rações similar ao do Entity Frame- treinadas na área. Sua vasta experiência com gru-
pos de trabalho remoto em diversas configurações
work; proporcionou o envolvimento em projetos com
♦ Dar suporte ao LinQ e LINQ to S- participantes em quatro continentes e mais de 35
QL; países. Reconhecido pela qualidade de seus produ-
tos e treinamentos.
♦ Dar suporte completo a Nullable
Types (atualmente há suporte par- Formação Profissional em Coaching com Eliana Du-
cial); tra e Cursos de Formação Internacional em Coa-
ching pelo Integrated Coaching Institute (ICI) -
♦ Dar suporte à cache de objetos Ve- Rhandy Di Stéfano. Facilitador Licenciado pela Cor-
locity (atualmente há uma cache porate Coach U International (CCUI). Consultor em
implementada no próprio projeto); Tecnologia da Informação com Graduação em Tec-
nologia em Processamento de Dados.
♦ Dar suporte a DataSources, Data-
Sets e Transfer Objects;
♦ Permitir o uso de transações;
♦ Permitir o envio de vários coman-
dos em Batch ao DBMS;

Conclusão

Apesar de termos inúmeras opções para


fazer Mapeamento Objeto-Relacional,
algumas vezes, é preciso criar sua pró-
pria solução. O grande desafio é saber Codificando.net e-magazine
quando optar por construir uma ferra-
menta ao invés de usar uma pronta e
compreender como tomar as decisões
críticas para o projeto ter sucesso.

Neste artigo tentei passar um pouco do


conhecimento neste domínio de aplica-
ção para que outros possam, eventual-
mente, criar suas ferramentas de ORM
proprietárias ou novos projetos de códi-
go aberto. Quaisquer dúvidas ou suges-
tões, sinta-se livre para comentar e / ou
entrar em contato.

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 apresen- mos mais adiante.


taremos, como consumir os relatórios, bem
como apresentaremos outros exemplos Controle reportviewer
com funcionalidades incríveis, imperdível.
Lembrando que todos os códigos aqui im- Para interação dos relatórios com os cli-
plementados estão disponíveis no site da entes, temos o controle ReportViewer,
nossa comunidade, http:// disponível no visual Studio, em duas
comunidade.codificando.net/ e no meu versões uma para web e outra para Win-
blog http://caiodotnet.blogspot.com/, bom dows forms. Com ele é possível disponi-
divertimento. bilizar para as aplicações um conjunto
de funcionalidades tais como:
Parte V – remote mode – consu-
mindo relatórios ♦ Exportação dos dados nos formatos
Excel, PDF, CSV, TIFF, XML
Consumindo o relatório ♦ Suporte a impressão e visualização

Relatórios hospedados no RS podem ser



de impressão do relatório
Rica Interatividade com navegação,
Codificando.net e-magazine
consumidos sob demanda, ou entregues
document map, bookmarks e orde-
via serviço um de delivery. No cenário
nação
mais comum, consumo sob demanda, o RS
♦ Pesquisa de texto no corpo do rela-
disponibiliza via Report Manager (URL,
tório
http://<servidor>/Reports, onde <servidor>
♦ Zoom
corresponde ao nome ou endereço IP, da
♦ Permite validações de parâmetros
estação no qual o reporting services se en-
customizados
contra, se for na sua estação de trabalho
localhost, também funciona.) os relatórios Exemplos de relatórios
para visualização, outra maneira de visua-
lização dos relatórios é através do nosso já A seguir implementaremos alguns rela-
conhecido controle ReportViewer. Para o tórios para exemplificar o que já vimos
serviço de entrega dos relatórios, o RS dis- até então, bem como alguns recursos que
põe de um serviço de assinatura que vere- veremos com os relatórios que criare-

www.codificando.net Abr/ Mai - 2010 | 39


Explorando microsot sql reporting services 2005 - Parte V e-magazine

Nome: EstoqueProdutos
mos. Nossos exemplos são baseados no
modelo de dados apresentado na figura Command Type: Text
2.3 que relaciona pedidos, itens de pedi-
Query string: select * from tb_produto
do, produtos e vendedores. Tentaremos
order by ds_produto
aqui construir alguns exemplos de modo
a complementar os exemplos criados nos
relatório Local Mode, com algumas fun- Segundo Passo: Criação e modelagem do
cionalidades especificas tais como parâ- Relatório.
metros multivalorados com datasets,
bem como funcionalidades não explora- Incluiremos um novo relatório em nosso
das tais como relatórios Matrix e uso de projeto chamado TBEstoqueProdutos, U-
parâmetros na formatação dos relatórios. sando um objeto Table da toolbox dos
relatórios criaremos a estrutura do relató-
Relatório tabular - com uso de rio formatado conforme a figura 3.15
parâmetros para formatação (destaque para o objeto Image):

Nesse exemplo criaremos um relatório


que nos permite visualizar a relação de
produtos, seu total em estoque e valor
unitário. A grande novidade aqui é fazer
uso de parâmetros para formatação do
relatório, onde o usuário, de duas for-
mas distintas, especifica quais colunas
Figura 3.15 – Formatação.
gostaria de visualizar. O relatório tam-
bém faz uso de formatação condicional
através de uma função do relatório (tab Nas propriedades do relatório, tab Co-
Code, das propriedades do relatório) pa- de,criaremos uma função que será utiliza-
ra selecionar que imagem exibir confor-
Codificando.net e-magazine
da para formatação da nossa imagem, es-
me o valor da quantidade em estoque do sa função tem o seguinte codificação
produto. (listagem 1):

Criando o Relatório Public Shared Function GetImage(ByVal Estoque


As Integer) As String
Esse relatório exibe as colunas com o no- If Estoque > 100
me, total em estoque (com uma imagem) GetImage= "happy.jpg"
e valor unitário de cada produto. Else
GetImage= "sad.jpg"
End If
Primeiro Passo: Construção do DataSet. End Function
Listagem 1 - Função de formatação da imagem.
Para criação do DataSet, acessamos a tab
Data do nosso ambiente de desenvolvi- Certifique-se de incluir as duas imagens
mento e criamos um novo DataSet com no projeto. E especificar no objeto image a
as seguintes propriedades: propriedade Source igual à External, e

www.codificando.net Abr/ Mai - 2010 | 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 parâmetros

Nosso relatório disponibiliza para os u-


suários a possibilidade de exibir/ocultar
suas colunas, para tal criamos os parâ-
metros “ExibePreco” e “coluna” com as
propriedades descritas na tabela a se- Figura 3.16 - Relatório em ação.
guir:
Nesse exemplo criaremos um relatório
Nome: ExibePreco
Data Type: Boolean
que correlaciona por dia, os vendedores e
Prompt Exibe Valor Unitário ? suas respectivas vendas, apresentando
por produto, a quantidade em estoque,
Nome: Coluna
bem como o valor da venda.
Data Type: String
Prompt Exibir Colunas
Atributo: Multi-value Aqui usaremos um dos recursos mais po-
Available values Non-queried: Produto (1) derosos dos relatórios que é o componen-
Estoque(2)
te Matrix da caixa de ferramentas, utiliza-
Quarto Passo: Configurar Colunas do para agrupamentos e totalizações das
informações.
Finalmente, configuramos as colunas do
nosso relatório para serem exibidas con- Primeiro Passo: Construção do DataSet.
forme os parâmetros anteriormente cria- Para criação DataSet, acessamos a tab Da-
dos. Para tal especificamos as proprieda- ta do nosso ambiente de desenvolvimento
e criamos um novo DataSet com as se-
Codificando.net e-magazine
des Visibility Hidden das colunas de
Produto e Estoque respectivamente com guintes propriedades:
as seguintes instruções em nosso editor
Nome: Vendas
de expressions: Comm Text
and
=InStr(Join(Parameters!coluna.Value,", "),"1") = Type:
0 e =InStr(Join(Parameters!coluna.Value,", Query Select p.id_pedido, p.dt_pedido,
"),"2") = 0 string: p.id_vendedor, v.no_vendedor ,
pr.ds_produto ,sum(pr.qt_estoque) as
'em estoque'
E na coluna de valor unitário a seguinte ,sum(pr.vl_preco*qt_produto) as 'valor
instrução: venda'
from tb_pedido p inner join
tb_itens_pedido i on p.id_pedido =
=Not Parameters!exibePreco.Value
i.id_pedido
inner join tb_produto pr on i.id_produto =
Finalmente, eis nosso relatório em ação pr.id_produto inner join tb_vendedor v on
v.id_vendedor = p.id_vendedor group by
(figura 3.16): p.id_pedido, p.id_vendedor,
Relatório matrix v.no_vendedor,pr.ds_produto,p.dt_pedido
order by p.id_vendedor

www.codificando.net Abr/ Mai - 2010 | 41


Explorando microsot sql reporting services 2005 - Parte V e-magazine

Segundo Passo: Criação e modelagem maticamente um grupo em coluna cha-


do Relatório. mado mtx_dt_pedido. Em seguida criare-
mos um segundo e terceiro grupos, esses
Incluiremos um novo relatório em nosso em linha, respectivamente com o nome
projeto chamado MxVenda.Usando um do vendedor e a descrição do produto,
objeto Matrix da toolbox (que o chama- nomeados de mtx_no_vendedor e
remos de mtx), criaremos a estrutura do mtx_ds_produto (Para criar um segundo
relatório formatado conforme a figura grupo, basta clicar com o botão direito
3.17. sobre um dos grupos e selecionar a opção
“Insert Group...”). Devemos garantir que
os textbox dos nossos grupos tenham os
seguintes nomes – dt_pedido,
no_vendedor e ds_produto. Finalmente
adicionamos as duas colunas na sessão
Data da matrix, com os campos
em_estoque e valor_venda (observe que
o RS utiliza a função de agregação SUM,
automaticamente para os campos da ses-
Figura 3.17 – Formatação. são Data), nossa matrix terá a aparência
parecida à figura 3.19.
Iniciaremos a formatação desse relatório,
apresentando alguns conceitos do com-
ponente matrix.

Uma matriz é composta por linhas e co-


lunas (Rows e Columns, vide figura 3.18) e
como já dissemos, por um ou mais gru- Figura 3.19 – Matrix com seus respectivos dados.

Codificando.net e-magazine
pos associados às linhas e colunas que
podemos criar e/ou editar nas proprieda-
des da matriz (tab Groups). Proveremos um recurso interessante que
é a capacidade de exibir/ocultar o agrupa-
mento em linha dos produtos, para isso
editaremos o grupo mtx_ds_produto mo-
dificando sua visibilidade (tab Visibility)
para oculto, e a sua visibilidade poderá
Figura 3.18 – Matrix suas linhas e colunas.
ser habilitada/desabilitada no campo
no_vendedor como mostra a figura 3.20:
Criaremos nosso primeiro agrupamento
em coluna pelo campo de data do pedi-
do. Para isso, arrastamos e formatamos o
campo data do pedido (dt_pedido) para
a posição da coluna, o que gerará auto-

www.codificando.net Abr/ Mai - 2010 | 42


Explorando microsot sql reporting services 2005 - Parte V e-magazine

Figura 3.21 – Matrix em ação.


Figura 3.20 – Matrix visibilidade dos grupos.

Nesse exemplo criaremos um relatório


Outro recurso muito interessante do que nos permite visualizar a relação de
componente matrix é a possibilidade de produtos, suas respectivas categorias, to-
criar totalizadores por grupos. No nosso tal em estoque e valor unitário. Até ai na-
exemplo incluiremos um subtotal no da diferente do que já fizemos em outros
grupo do nome do vendedor (para isso, relatórios, no entanto faremos uso de um
basta clicar com o botão direito sobre a recurso até então não utilizado, que são
caixa de texto no_vendedor, selecionar a os parâmetros multivalorados para o fil-
opção Subtotal). tro dos produtos a serem exibidos. Nosso
relatório disponibilizará uma coleção de
E finalmente, para preenchermos com o categorias para os usuários, e uma vez
0 (zero) os campos sem valor, usamos as selecionadas essas categorias, serão dis-
seguinte instruções nos campos, “Total ponibilizados os produtos dessas catego-
Estoque” e “Valor da Venda”: rias, sendo que o próprio relatório selecio-

Codificando.net e-magazine
nará por padrão os produtos das categori-
=IIF(IsNothing(Fields!em_estoque.Value),0,Sum
as anteriormente selecionadas que tenha
(Fields!em_estoque.Value))
=IIF(IsNothing(Fields!valor_venda.Value),0,Sum sido parte integrante de algum pedido.
(Fields!valor_venda.Value))
Os parâmetros multivalorados não são
Formatando as caixas de texto para valo- interpretados por stored procedures somen-
res moeda e numérico, temos nosso rela- te por instruções T-SQL do tipo text, uma
tório com a seguinte forma figura 3.21. vez que eles são repassados com a seguin-
te formatação:

“param1,param2,param2,...,paramN” uti-
lizadas na clausula IN do SQL, no entanto
quando utilizadas em stored procedures o
SQL não interpreta corretamente esses
valores, sendo necessário criar artifícios
para remediar a situação como veremos

www.codificando.net Abr/ Mai - 2010 | 43


Explorando microsot sql reporting services 2005 - Parte V e-magazine

em nossos exemplos. Uma matriz é composta por linhas e colu-


nas (Rows e Columns, vide figura 3.18) e co-
Primeiro Passo: Construção dos Data- mo já dissemos, por um ou mais grupos
Sets. associados às linhas e colunas que pode-
mos criar e/ou editar nas propriedades da
Criaremos um conjunto de DataSets que matriz (tab Groups).
serão usados, tanto para parametrizar os
dados do relatório como para criar um
conjunto de valores possíveis para os
campos multivalorados.
Nosso primeiro DataSet é o primeiro de
Figura 3.18 – Matrix suas linhas e colunas.
nossos parâmetros que é a relação de ca-
tegorias, esse DataSet tem as seguintes Criaremos nosso primeiro agrupamento
características: em coluna pelo campo de data do pedido.
Para isso, arrastamos e formatamos o
Nome: dsCategorias
campo data do pedido (dt_pedido) para a
Command Type: Text
posição da coluna, o que gerará automati-
Query string: SELECT * FROM camente um grupo em coluna chamado
TB_CATEGORIA
mtx_dt_pedido. Em seguida criaremos
um segundo e terceiro grupos, esses em
Segundo Passo: Criação e modelagem linha, respectivamente com o nome do
do Relatório. vendedor e a descrição do produto, no-
meados de mtx_no_vendedor e
Incluiremos um novo relatório em nosso mtx_ds_produto (Para criar um segundo
projeto chamado MxVenda.Usando um grupo, basta clicar com o botão direito
objeto Matrix da toolbox (que o chama- sobre um dos grupos e selecionar a opção
remos de mtx), criaremos a estrutura do “Insert Group...”). Devemos garantir que

Codificando.net e-magazine
relatório formatado conforme a figura os textbox dos nossos grupos tenham os
3.17. seguintes nomes – dt_pedido,
no_vendedor e ds_produto. Finalmente
adicionamos as duas colunas na sessão
Data da matrix, com os campos
em_estoque e valor_venda (observe que
o RS utiliza a função de agregação SUM,
automaticamente para os campos da ses-
são Data), nossa matrix terá a aparência
parecida à figura 3.19.
Figura 3.17 - Formatação.

Iniciaremos a formatação desse relatório,


apresentando alguns conceitos do com-
ponente 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 relatório com a seguinte forma figura 3-


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

Figura 3.21 – Matrix em ação.

Relatório tabular - com uso de


parâmetros multivalorados

Nesse exemplo criaremos um relatório


que nos permite visualizar a relação de
produtos, suas respectivas categorias, to-
tal em estoque e valor unitário. Até ai na-
da diferente do que já fizemos em outros
relatórios, no entanto faremos uso de um
Figura 3.20 – Matrix visibilidade dos grupos.
recurso até então não utilizado, que são
Outro recurso muito interessante do os parâmetros multivalorados para o fil-
componente matrix é a possibilidade de tro dos produtos a serem exibidos. Nosso
criar totalizadores por grupos. No nosso relatório disponibilizará uma coleção de
exemplo incluiremos um subtotal no categorias para os usuários, e uma vez
grupo do nome do vendedor (para isso, selecionadas essas categorias, serão dis-
ponibilizados os produtos dessas catego-
Codificando.net e-magazine
basta clicar com o botão direito sobre a
caixa de texto no_vendedor, selecionar a rias, sendo que o próprio relatório selecio-
opção Subtotal). nará por padrão os produtos das categori-
as anteriormente selecionadas que tenha
E finalmente, para preenchermos com o sido parte integrante de algum pedido.
0 (zero) os campos sem valor, usamos as
seguinte instruções nos campos, “Total Os parâmetros multivalorados não são
Estoque” e “Valor da Venda”: interpretados por stored procedures somen-
te por instruções T-SQL do tipo text, uma
=IIF(IsNothing(Fields!em_estoque.Value),0,Sum vez que eles são repassados com a seguin-
(Fields!em_estoque.Value)) te formatação:
=IIF(IsNothing(Fields!valor_venda.Value),0,Sum “param1,param2,param2,...,paramN” uti-
(Fields!valor_venda.Value)) lizadas na clausula IN do SQL, no entanto
quando utilizadas em stored procedures o
Formatando as caixas de texto para va-
SQL não interpreta corretamente esses
lores moeda e numérico, temos nosso
valores, sendo necessário criar artifícios

www.codificando.net Abr/ Mai - 2010 | 45


Explorando microsot sql reporting services 2005 - Parte V e-magazine

para remediar a situação como veremos das que já constarem em pelo menos um
em nossos exemplos. pedido. Para resolvermos a limitação do
RS com parâmetros multivalorados em
Primeiro Passo: Construção dos Data- stored procedures, criamos a função “Split”.
Sets. Esse dataSet tem as seguintes característi-
cas:
Criaremos um conjunto de DataSets que
Nome: dsProdutosDefaultValue
serão usados, tanto para parametrizar os
dados do relatório como para criar um Command Type: StoredProcedure

conjunto de valores possíveis para os Query string: getProdutosinItensPedido,


cujas instruções T-SQL são:
campos multivalorados. SELECT DISTINCT
ped.ID_PRODUTO FROM
Nosso primeiro DataSet é o primeiro de tb_itens_pedido ped
INNER JOIN
nossos parâmetros que é a relação de ca- tb_produto pro ON
tegorias, esse DataSet tem as seguintes ped.id_produto =
pro.id_produto
características: ,Split('I',@idCategorias, ',')
as CategoriasId
Nome: dsCategorias
Command Type: Text Finalmente criaremos o DataSet para pre-
Query string: SELECT * FROM enchimento do relatório em uma consulta
TB_CATEGORIA
simples tendo como parâmetro as identi-
ficações dos produtos. Novamente utili-
O próximo DataSet retorna um conjunto zaremos a função “Split”. Esse DataSet
de todos os produtos, provenientes da tem as seguintes características:
tabela de produtos, dado as categorias
anteriormente selecionadas. Esse Data- Nome: dsDetalhesdoProduto

Set tem as seguintes características:


StoredProcedure
Codificando.net e-magazine
Command Type:
Nome: dsProdutosinCategorias
Command Type: Text Query string: getProdutosporCategoria,
Query string: SELECT * FROM cujas instruções T-SQL são:
tb_Produto prod SELECT
INNER JOIN [prod].DS_PRODUTO,
TB_CATEGORIA cate [cate].DS_CATEGORIA,
ON [prod].QT_ESTOQUE
[prod].ID_CATEGORIA = , [prod].VL_PRECO
[cate].ID_CATEGORIA from TB_PRODUTO prod
WHERE INNER JOIN
[prod].ID_CATEGORIA in TB_CATEGORIA cate ON
(@idCategorias ) [prod].ID_CATEGORIA =
[cate].ID_CATEGORIA,
Split('I',@idProdutos, ',') as
Agora o DataSet que carrega os valores ProdutosId
default para os produtos na lista de pro- WHERE
[prod].ID_PRODUTO in
dutos. Nosso critério serão os produtos (Convert(int,
das categorias anteriormente seleciona- ProdutosId.ValorIni))
ORDER BY
[prod].DS_PRODUTO

www.codificando.net Abr/ Mai - 2010 | 46


Explorando microsot sql reporting services 2005 - Parte V e-magazine

Segundo Passo: Criação e modelagem O próximo parâmetro é a relação de pro-


do Relatório. dutos com valores default, todos com da-
dos provenientes de DataSets, e que é
Incluiremos um novo relatório em nosso configurado conforme a figura 3.24.
projeto chamado TBProdutosporCategoria,
Usando um objeto Table da toolbox dos
relatórios, criaremos a estrutura do rela-
tório formatado conforme a figura 3.22:

Figura 3.24 –parâmetro multivalorado com


Figura 3.22 – Formatação.
valores default.

Terceiro Passo: Criar os parâmetros Finalmente, eis nosso relatório em ação


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

Codificando.net e-magazine
conforme a figura 3.23. Figura 3.25 – Parâmetros multivalorados em
ação.

Deploy dos relatórios

Uma vez criados faremos o deploy dos


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

www.codificando.net Abr/ Mai - 2010 | 47


Explorando microsot sql reporting services 2005 - Parte V e-magazine

sua estação de trabalho localhost, tam- funcionalidades adicionais do reporting


bém funciona, que corresponde ao apli- services muito úteis tais como serviços de
cativo Report Manager (figura 3.26). delivery, cache e os importantíssimos as-
pectos de segurança, grande abraço e até
lá.

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

Blog: http://caiodotnet.blogspot.com/

Figura 3.26 – Report Manager.

Nossos relatórios estão disponíveis na


pasta “Treinando”.

Limitações

Os relatórios Remote-mode suprem com


grande eficiência uma demanda muito
comum e pouco explorada que são os
relatórios, especialmente em ambientes
web, no entanto temos algumas limita-
ções que esperamos serem sanadas em
próximas versões. Abaixo relacionamos
alguns dos itens que apontamos como Codificando.net e-magazine
limitações desse modelo de relatórios.

♦ Dependência do IIS
♦ Requer uma infra-estrutura mais
sofisticada
♦ A API OLEDB, de acesso a dados
possui algumas restrições funcio-
nais
♦ Interface padrão com restrições no
Firefox

Por hoje é só pessoal, na próxima edição


nosso ultimo artigo, apresentaremos

www.codificando.net Abr/ Mai - 2010 | 48


e-magazine

Uso do Microsoft Project: Descre-


vendo suas Características

Por: Rodrigo José Santi e Dr. Juliano Schimiguel

1. Introdução dade e flexibilidade, para que possa ge-


rir os projetos diretamente a partir do
Microsoft Project é um software de gestão seu computador. O objetivo do Micro-
de projetos (ou gerência de projetos) pro- soft Project é desenvolver a capacidade
duzido pela Microsoft.Criado pela Micro- de planejar e gerenciar projetos de qual-
soft em 1985 (primeira versão). Nos anos quer natureza utilizando o MS Project,
posteriores sofreu profundas mudanças, uma das ferramentas mais adequadas e
de layout até funcionais, aumentando a exigidas para Gerentes, Engenheiros, ou
oferta de serviços e recursos relacionados Líderes de projetos.O Microsoft Project
à gestão de projetos. São vários os focos possui vários recursos que podem ser
do Ms Project: tempo (datas, duração do utilizados pelo Gerente de Projeto, no
projeto, calendário de trabalho), Gráfico entanto, são poucos os profissionais que
de Gantt, modelo probabilístico (para cál- realmente sabem utilizar a maioria des-
culos relacionados à planejamento), Dia- tes recursos.
grama da Rede, Custos (fixos, não fixos,
outros) e uma gama de relatórios. A últi- O Microsoft Project lembra bastante uma
ma versão, Microsoft Project Professional planilha em Excel basicamente os menus
2007 ainda possui mais recursos. Um óti- e botões Microsoft Project segue o pa-
mo software para gestores, administrado- drão do Microsoft Office apesar de pare-
res e coordenadores. A interface padroni- cer uma ferramenta de simples manusei-

Codificando.net e-magazine
zada da Microsoft (similar a outros pro- o como um Excel ou Word, o Microsoft
dutos da empresa) facilita para os inician- Project é uma ferramenta complexa e seu
tes a familiarização com o produto. Ainda manuseio não é tão simples assim. Se-
carece de maior conhecimento dos profis- guem-se as principais razões para utili-
sionais envolvidos com gestão de negó- zar o Microsoft Project:
cios.Com o decorrer dos anos, o Microsoft
Office Project tornou-se numa das princi- 2. Características do Microsoft
pais ferramentas de gestão de projetos Project
para usuários que desejam fazer a dife-
2.1 Estimativa e Agendamento Realis-
rença no seu trabalho mediante o planeja-
tas
mento, gestão e comunicação eficazes das
informações dos projetos.O Microsoft Of-
A definição de expectativas realistas jun-
fice Project fornece ferramentas de gestão
to das equipes de projeto, gerência e cli-
de projetos robustas em conjunto com a
entes depende, muitas vezes, de uma es-
combinação ideal de usabilidade, capaci-

www.codificando.net Abr / Mai - 2010 | 49


Uso do Microsoft Project: Descrevendo suas Características e-magazine

timativa hábil de agendas, necessidades um dos relatórios personalizados, prontos


de recursos e orçamentos. O Project não só para utilizar, listados. A criação de relató-
ajuda a gerir o processo de criação de a- rios claros e simples permite-lhe informar a
gendas cronológicas e de estimativas dos sua equipa e a gerência do estado do projeto
custos, como ainda ajuda a compreender o de forma eficaz, e, ao mesmo tempo, contro-
impacto que as alterações ou atrasos apli- lar o andamento do projeto através de cál-
cados a tarefas específicas poderão exercer culos do valor estimado, do caminho crítico
sobre o projeto como um todo (figura 1). e de vários cálculos base.

Exemplos de relatórios existentes no Project


na figura 3:

Figura 3: Exemplos de relatórios no Project.


Figura 1: Estimativa e agendamento realistas.

Exemplo de Relatório de custos – orçamen-


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

Codificando.net e-magazine

Figura 4: Exemplos de relatório de custos.


Figura 2: Planejamento e gestão orientados.

2.4 Melhorando a Atribuição de Recursos


2.3 Criando Relatórios e Controlando
Projetos em Tempo Com o Project, podemos atribuir recursos a
tarefas com facilidade e ajustar o respectivo
É possível melhorar a exatidão e oportuni- método de atribuição para resolver conflitos
dade da criação de relatórios escolhendo e sobre atribuições. Desta forma, teremos

www.codificando.net Abr / Mai - 2010 | 50


Uso do Microsoft Project: Descrevendo suas Características e-magazine

um maior controle e flexibilidade sobre a 2.6 Integração de Dados


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

2.7 Usabilidade
2.5 Apresentação Eficiente de Informa-
ções do Projeto
Uma interface melhorada, consistente com
as Edições do Microsoft Office, facilita a a-
Os gestores de projetos poderão apresen-
prendizagem do Project e o acesso às ferra-
tar as informações, rápida e facilmente,
mentas e funcionalidades de que necessita.
num vasto leque de formatos. Através de
As barras de ferramentas e menus intuiti-
um novo assistente, poderá formatar e im-
vos, assim como outras funcionalidades,
primir agendas numa única página com
permitem-lhe dominar rapidamente os con-
facilidade. Também poderá exportar facil-
ceitos fundamentais da gestão de projetos,
mente os dados do projeto para o Micro-
mesmo que nunca tenha utilizado o Project
soft Word, para obter documentos for-
antes (figura 6).
mais, para o Microsoft Excel, para obter
gráficos ou folhas de cálculo personaliza-
das, para o Microsoft PowerPoint®, para
obter apresentações inovadoras, ou para o
Codificando.net e-magazine
Microsoft Visio®, para obter diagramas na
figura 5.

Figura 6: Usabilidade melhorada.

Figura 5: Apresentação eficiente de informações 2.8 Ajuda


do projeto.

O Project fornece um variado leque de fer-


ramentas de ajuda, tanto para usuários

www.codificando.net Abr / Mai - 2010 | 51


Uso do Microsoft Project: Descrevendo suas Características e-magazine

principiantes como para experientes. O tomatizar seu processo de relacionamento


Project inclui um mecanismo de busca de com cerca de 65 distribuidores exclusivos
ajuda robusto, etiquetas inteligentes e as- que atuam em todo o Brasil, comercializan-
sistentes, integrando ainda o acesso onli- do implementos para transporte rodoviário,
ne, caso tenhamos uma conexão com a In- vagões ferroviários e silos, entre outros i-
ternet, a cursos de formação, modelos, ar- tens. A empresa buscava maior sinergia
tigos, entre outros (figura 7). com sua rede para potencializar as vendas,
o que implicava em obter uma visão com-
pleta do processo de negócio, desde a fase
de prospecção. Tais ganhos só foram con-
quistados após a implementação do Micro-
soft Dynamics CRM. Agora, além de acom-
Figura 7: Ajuda imediata. panhar melhor o trabalho, a Randon Imple-
mentos está mais segura de ter fortalecido
sua parceria com os revendedores.
2.9 Personalização Simples
3.2 Dimebel
Um conjunto de várias funcionalidades
personalizáveis permite adaptar o Project Empresa de distribuição de produtos farma-
de modo a refletir as necessidades especí- cêuticos, a Dimebel tinha o desafio comum
ficas do projeto. Escolha um dos campos a várias empresas: lidar com um ambiente
de apresentação personalizados listados de tecnologia heterogêneo, o que dificulta o
que passam a fazer parte da agenda do gerenciamento e gera problemas de segu-
projeto. Também pode modificar barras rança. Para mudar esse cenário, a Dimebel
de ferramentas, fórmulas, indicadores grá- decidiu renovar seu ambiente de TI para
ficos e relatórios. Para ter acesso a uma extrair mais de cada software. Atualizou
flexibilidade acrescida, o formato de ar- suas estações com o Windows Vista e assim
quivo XML (Extensible Markup Langua-
Codificando.net e-magazine
garantiu mais estabilidade às suas aplica-
ge), o Microsoft Visual Basic® for Applica- ções de negócios. Com o Microsoft Win-
tions (VBA) e os suplementos COM dows Server 2008, a Dimebel ganhou vários
(Component Object Model) facilitam a recursos que facilitam processos gerenciais
partilha de dados e a criação de soluções rotineiros. E instalando o Microsoft Fore-
personalizadas. front em suas estações de trabalho, assegu-
rou maior proteção às suas
3. Exemplos de Empresas que u-
tilizam o Microsoft Project 3.3 Empro

3.1 Randon Implementos A Empro ganhou produtividade e controle


com Office 2007 e Microsoft Project. A hete-
Prestes a comemorar seis décadas de atua- rogeneidade do ambiente e a falta de ferra-
ção, a Randon Implementos precisava au- mentas que permitissem maior controle so-

www.codificando.net Abr / Mai - 2010 | 52


Uso do Microsoft Project: Descrevendo suas Características e-magazine

bre os projetos levaram a Empresa de Pro- renciados no tempo, das variáveis caracte-
cessamento de Dados da Prefeitura de São rísticas do projeto. Tendo em conta a inter-
José do Rio Preto a promover mudanças dependência entre tempo, custo e trabalho,
na sua estrutura tecnológica. A companhia o Project permite aos gestores de projetos
implementou o Microsoft Office system tantas simulações quantas necessárias para
2007 e o Microsoft Project. Além da redu- decidir quais as condições mais favoráveis
ção dos chamados de help desk, graças ao para a execução desses projetos. Paralela-
fim das falhas por incompatibilidade, a mente também é possível produzir docu-
Empro observou aumento de produtivida- mentação que permite aos decisores de to-
de. A gestão dos projetos também foi apri- po, mesmo que não tenham conhecimentos
morada e é possível acompanhar as inicia- específicos sobre a utilização deste softwa-
tivas de TI em tempo real e realizar ajustes re, avaliar quais as condições de planeja-
ao longo do processo de desenvolvimento. mento impostas ao desenvolvimento dos
trabalhos e, a Posteriores avaliar o desem-
4. Conclusão penho dos intervenientes mo desenrolar do
projeto.
Considerando o risco de fracasso de um
projeto, adotar uma ferramenta que facili- Usando o Microsoft Office Project, podemos
te o planejamento e o acompanhamento é estimar e controlar informações de cus-
imprescindível. O MS Project é uma ferra- to (custo: o custo agendado total de uma
menta da Microsoft que possui diversos tarefa, de um recurso, de uma atribuição ou
recursos que podem ser usados para au- de um projeto inteiro. Às vezes é chamado
mentar às chances de sucesso de um proje- de custo atual. No Project, os custos da li-
to, controlando os gastos, o uso de maté- nha de base são geralmente denominados
ria-prima, a mão-de-obra utilizada em ca- "orçamento".) básicas para seu projeto. Po-
da tarefa, o tempo previsto para conclu- demos usar uma variedade de tipos de cus-
são, o tempo real de conclusão e várias ou- tos, e o Project calcula esses custos para o

Codificando.net e-magazine
tras informações importantes para o de- usuário à medida que o projeto avança. O
senvolvimento. uso do Ms Project dá uma notável contribu-
ição para a produção da documentação e os
O Microsoft Project é uma aplicação infor- seus recursos são suficientemente vastos
mática que gere uma base de dados onde para que ele possa constituir uma espinha
são Introduzidas todas as informações dorsal de todo o sistema de informação do
correspondentes a um projeto. Estas infor- Projeto. Na base de dados do Project está
mações Referem-se principalmente a tare- contida toda a informação referente a traba-
fas e suas durações e relações, recursos, lho, datas, tempos, recursos humanos, re-
custos, horários de trabalho e atribuições cursos materiais e custos envolvidos no pro-
de recursos a tarefas. Todas estas informa- jeto.
ções são submetidas a um programa de
cálculo baseado em agendas, o que permi-
te dar ao utilizador elementos exato e refe-

www.codificando.net Abr / Mai - 2010 | 53


Uso do Microsoft Project: Descrevendo suas Características e-magazine

REFERÊNCIAS:

Project 2003 versão 7, Dados obtidos: Últi-


mo acesso: 08/12/2009.

Site: Microsoft,
http://office.microsoft.com/pt-br/project/
HA101672711046.aspx

Rodrigo José Santi


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

Prof. Dr. Juliano Schimiguel


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

Codificando.net e-magazine

www.codificando.net Abr / Mai - 2010 | 54


e-magazine

Novidades em Desenvolvimento no
Sharepoint 2010

Por: Marcel Medina

Neste artigo mostrarei um overview das Veremos a seguir o que cada uma dessas
novidades em desenvolvimento para o áreas traz de novidades para o desenvol-
Sharepoint 2010 no que diz respeito a no- vimento no Sharepoint 2010.
vas ferramentas que podemos utilizar pa-
ra o desenvolvimento de soluções em Para facilitar o entendimento, as explica-
Sharepoint. ções estão ilustradas com imagens perti-
nentes ao assunto.
O objetivo principal do time de Sharepo-
int da Microsoft foi de criar uma nova Produtividade
plataforma atrativa para desenvolvimen-
to, de maneira que possamos identificar o O Sharepoint 2007 é uma plataforma po-
Sharepoint 2010 como um ambiente para derosa para criação de aplicações, porém
criação de aplicações. Dessa forma ao es- para que um desenvolvedor se inicie no
colher uma plataforma para criação de desenvolvimento de soluções Sharepo-
aplicações, arquitetos e desenvolvedores int, o tempo despendido no aprendizado
decidam por criar uma solução no Share- é de certa forma penoso.
point, pois este apresenta um cenário fa-
vorável ao desenvolvimento. Se você já desenvolve para o Sharepoint,
quantos macetes você já teve que apren-
Para tornar o Sharepoint atrativo a desen- der para agilizar o desenvolvimento? A
utilização de ferramentas disponibiliza-
Codificando.net e-magazine
volvedores, a Microsoft investiu em 3 á-
reas conforme figura 1: das no Codeplex é uma delas, e isso você
só aprende em campo de batalha.

Agora temos o Sharepoint Designer 2010


e o Visual Studio 2010 que vieram para
facilitar o nosso trabalho! Vejamos suas
novidades:

Sharepoint Designer 2010

O Sharepoint Designer 2010 sofreu mu-


danças para aumentar a produtividade,
começando pela aparência da ferramenta
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 de conteúdo.


2010, possui uma barra de ferramentas
(Ribbon) mais intuitiva. Visual Studio 2010

Agora não é mais somente uma ferramen- Quando precisamos obter um resultado di-
ta que possibilita customizações de pági- ferente do que o Sharepoint Designer 2010
nas e criação de workflows, trata-se uma pode nos oferecer, através da codificação o
ferramenta nova que possibilita a cust- Visual Studio 2010 traz novas ferramentas
omização/criação de artefatos no Sharepo- para facilitar o desenvolvimento para o Sha-
int. Em outras palavras, dos objetos do repoint 2010.
Sharepoint.
♦ Web Part, BCS e Workflow designers
Para quem já estava acostumado com o
Sharepoint Designer 2007, a nova versão é O Visual Studio 2010 nos oferece suporte a
diferente e traz novos recursos para de- ferramentas Out-Of-The-Box (OOTB), que
senvolver soluções rapidamente: nos permitem a criação de web parts utili-
zando o Web Part Designer, a criação de
♦ Business Connectivity Services custom Entities para conexão a datasources
(BCS) – oferece suporte a conexões e externos, a construção de workflows utili-
definições de outros databases. zando código para a adição de actions e ac-
♦ List Schema - suporte à criação de tivities, permitindo a criação de uma solu-
listas e libraries. ção completa para nossas necessidades.
♦ Custom Actions - suporte à cria-
♦ Empacote e faça o deploy de projetos
ção de custom actions para serem
Sharepoint
incorporados ao Ribbon do Sharepo-
int.
Agora quando criarmos um projeto no Vi-
♦ Task/Approval Designer -
Codificando.net e-magazine
sual Studio 2010 para o Sharepoint 2010, au-
suporte a novas Actions, incluindo
tomaticamente teremos a criação de Featu-
Assign Item for Approval, Assign
res e pacotes WSP para deploy.
Item for Feedback e General Task
Process.
♦ Crie pacotes WSP para deploy em Pro-
dução
Alguns recursos já existentes no Sharepo-
int 2007 foram melhorados:
Podemos controlar o deploy das Features e
customizar o conteúdo dos pacotes WSP,
♦ Workflow Designer - suporte à utilizando novos editores que o Visual Stu-
extensão e reutilização de work- dio 2010 nos oferece.
flows.
♦ Page Editor - oferece uma nova u-
ser interface (UI) para customização

www.codificando.net Abr / Mai - 2010 | 56


Novidades em Desenvolvimento no Sharepoint 2010 e-magazine

♦ Visualização de um site do Sharepo- mente com 4 GB de RAM para instalação do


int pelo Server Explorer SharePoint Foundation, e de 6 a 8 GB de
RAM para o SharePoint Server.
Agora temos suporte à conexão de sites do
Sharepoint pelo Server Explorer, o que Para mais detalhes de como realizar a cria-
nos dá maior agilidade na identificação ção de seu ambiente de desenvolvimento,
dos objetos do site durante o desenvolvi- acesse o link: http://msdn.microsoft.com/en-
mento. us/library/ee554869(office.14).aspx.

♦ Integração com o Team Foundation Como exemplo da utilização das no-


vas ferramentas acima, disponibilizei
Server
um vídeo ilustrativo no link: http://
www.youtube.com/watch?
Inerente ao Visual Studio 2010 também v=nmxCAYbngp8
temos a integração com o Team Foundati- O mesmo vídeo também está dispo-
on Server (TFS), que permite o gerencia- nível com mais qualidade no link:
mento do ciclo de desenvolvimento das http://www.screencast.com/t/
YWZjOGY5MWUt
aplicações.
OBS: O código criado no vídeo e o próprio videocast
estão disponíveis para download no link:
Podemos inclusive importarmos do Share- http://sharepoint4developers.spaces.live.com/blog/cns!
point Designer 2010 pacotes WSP para Vi- 419BF2880E221BB9!478.entry
sual Studio 2010, o que nos dá maior flexi-
bilidade ao trabalharmos com as duas fer-
ramentas juntas. Nova Plataforma de Serviços

Ambiente de Desenvolvimento

Como desenvolvedores temos agora 2 op-


ções para criação do ambiente de desen-
volvimento: 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 cria- clusas numa hierarquia de Sites, e estes em
ção de soluções foram disponibilizados. Site Collections.
De acordo com a Figura 2, os blocos em
laranja e vermelho trazem novidades, as Para saber mais detalhes sobre Listas e Li-
quais estarei comentando nesse artigo. braries, acesse o link: http://
sharepoint4developers.spaces.live.com/
blog/cns!419BF2880E221BB9!217.entry

Para saber mais detalhes sobre Sites e Site


Collections, acesse o link: http://
Figura 3 – Legenda de cores.
sharepoint4developers.spaces.live.com/
blog/cns!419BF2880E221BB9!173.entry
Na camada de UI, as páginas ASP.NET
foram estendidas para suportar Silverlight As listas e libraries possuem as seguintes
e XSLT views. novidades no SharePoint 2010:

Na camada inferior, as APIs foram esten- ♦ Relashionships


didas para permitirem que o desenvolvi-
mento no SharePoint seja mais padroniza- As Listas e Libraries possibilitam a constru-
do. As APIs que executam no servidor in- ção de relacionamentos e estruturas de da-
cluíram algumas melhorias no modelo de dos mais sofisticados. Os relacionamentos
objetos e o suporte ao LINQ foi adiciona- entre listas podem ser criados para reforçar
do. Agora as APIs que executam no lado uma Integridade dos dados.
cliente suportam REST, e o modelo de ob-
jetos cliente facilita o trabalho com dados ♦ Lookup to multiple columns
no SharePoint.
Novo recurso de JOIN entre as Listas e Li-
braries. É possível criarmos no mesmo loo-
Codificando.net e-magazine
Na camada mais abaixo o application mo-
del, que incluem os Sites e Listas não so- kup referências a múltiplas colunas da mes-
freram muitas mudanças, os mesmos con- ma lista ou library.
ceitos utilizados no SharePoint 2007 conti-
nuam sendo válidos no SharePoint 2010. ♦ Validation

Validações com fórmulas em colunas foram


Data Model Lists
adicionadas. Utilizando fórmulas do Excel
podemos adicionar validações a colunas e
Listas e Libraries
exibirmos mensagens aos usuários.

O modelo de dados do SharePoint é com-


posto por Listas e Libraries, que estão in-

www.codificando.net Abr / Mai - 2010 | 58


Novidades em Desenvolvimento no Sharepoint 2010 e-magazine

♦ Escalabilidade, performance e es- Server APIs


trangulamento (throttling)
SPLinq

Como desenvolvedores, precisamos estar


Com o modelo de objetos podemos mani-
cientes dos problemas que podem ocorrer
pular os dados, porém via SPLinq temos
ao lidarmos com um processamento que
uma outra alternativa. Esse é um novo re-
pode exigir bastante do servidor. Agora
curso do Sharepoint 2010, que traz um Linq
tais importantes questões podem ser me-
provider para manipulação dos dados. Tais
lhor gerenciadas pelos administradores no
manipulações são realizadas no lado do ser-
lado administrativo do SharePoint.
vidor.

External Data Lists


Quais os benefícios da utilização do SPLinq?
Com o objetivo de integração de múltiplos
datasources ou mesmo da utilização da UI ♦ Programação com Entidades
para navegação no SharePoint 2010, estru- (Entities)
turas de dados externas como databases
legados ou outros databases no SQL Ser- Ao invés de trabalharmos diretamente com
ver, dados que retornam de web services itens e listas, podemos trabalhar com os ob-
ou de código .Net podem ser adicionados jetos que representam tais itens e listas, co-
ao SharePoint como External Data Lists. mo: Produtos (Products) e Fornecedores
No ponto de vista dos usuários é como se (Vendors) por exemplo. Isso é bem mais
trabalhar com listas, utilizando views e prático, rápido e fácil na criação de queries,
forms. Podendo ser estendido para traba- pois podemos utilizar o intellisense do Vi-
lhar com o SharePoint Workspace 2010 no sual Studio.
lado cliente.
Exemplo de query feita com o SPLinq:
Como exemplo de utilização dos objetos

Codificando.net e-magazine
acima, disponibilizei um vídeo ilustrativo from p in adc.Products
no link:
http://www.youtube.com/watch? where p.Vendors.CountryRegion == "Brasil"
v=y1sBMazMAwY select p;

O mesmo vídeo também está disponível ♦ Joins entre listas


com mais qualidade no link: http://
www.screencast.com/t/NDlmODQxZGY
Por trás dos panos a query acima é traduzi-
da em Collaborative Application Markup
Language (CAML), que é uma linguagem
OBS: O videocast está disponível para download no baseada em XML utilizada para construir e
link:
http://sharepoint4developers.spaces.live.com/blog/
customizar web sites no Sharepoint. Essa
cns!419BF2880E221BB9!480.entry linguagem foi estendida de modo que tam-
bém podemos realizar joins entre listas e

www.codificando.net Abr / Mai - 2010 | 59


Novidades em Desenvolvimento no Sharepoint 2010 e-magazine

recuperarmos seus dados. ♦ Maior controle da interface dos usuá-


rios
Events
Podemos controlar como a interface do usu-
O suporte a eventos de Lista e Itens foram
ário retornará quando os eventos de cance-
estendidos no SharePoint 2010. Geralmen-
lamento ou validação de dados ocorrerem,
te tais eventos são criados para validar da-
podendo redirecionar para páginas de erro
dos.
ao invés de retornar mensagens simples do
tipo String.
Novos eventos foram adicionados, vejam
as novidades:
Connected Client APIs

♦ After synchronous event


Client Object Model

No SharePoint 2007 os eventos ocorriam Um novo recurso para manipulação de da-


antes que os dados sofressem modifica- dos é através do novo modelo de objetos
ções e após um tempo que os dados já ha- cliente, que é uma versão cliente de um sub-
viam sido persistidos. set do modelo de objetos de servidor, tais
como: Webs, Lists, ListItems, etc. Podendo
Esse novo evento foi disponibilizado para ser utilizado diretamente no Silverlight,
interceptar o que ocorre entre os dois e- .Net (aplicações console, winform) ou Javas-
ventos, justamente no meio da operação, cript, pois se trata do mesmo modelo de
para que o desenvolvedor garanta que seu objetos.
código seja executado antes que o Form
que contém a Lista/Item seja retornado ao Esse novo modelo de objetos foi criado para
usuário. o batch de comandos e eficiência das opera-
ções. Por exemplo, quando trabalhamos
♦ Site-scoped events - diz respeito ao com web services do SharePoint, temos que
eventos do Site Collection (SPSite). tratar os dados recuperados em XML, o que Codificando.net e-magazine
♦ Web creation events - diz respeito é bem trabalhoso. Dependendo do tipo de
aos eventos de criação de Sites (SPWeb). operação a ser realizada precisamos criar
♦ List creation events - diz respeito um web service para obtermos os dados,
aos eventos de criação de Listas (SPList). porém com esse novo modelo as chamadas
♦ Workflow events - Podemos cus- são diretas e com uma única query pode-
tomizar como os workflows podem mos obter o que precisamos.
ser executados. Temos os eventos
Starting, Started, Postponed e Com- Além disso podemos usufruir do tratamen-
pleted para manipularmos suas exe- to assíncrono dos dados e de um tratamento
cuções. de escopo de exceções e de lógica condicio-
nal.

www.codificando.net Abr / Mai - 2010 | 60


Novidades em Desenvolvimento no Sharepoint 2010 e-magazine

REST ♦ Site-scoped workflows

Uma nova maneira de trabalharmos com Workflows são disparados sobre Itens/
dados de listas e Excel no Sharepoint é a- Documentos, e se desejarmos disparar
través de integrações utilizando protoco- workflows sobre um conjunto de Itens/
los REST e ATOM. Documentos ou sobre todos os Itens/
Documentos? Com site-scoped workflows
Utilizando o ADO.NET Data Services com podemos fazer isso dentro do Site Collecti-
o Visual Studio 2010, podemos integrar on.
facilmente nossas aplicações. Também po-
demos utilizar novas tecnologias como o ♦ Visualização no browser
ASP.NET AJAX e o PowerPivot - projeto
Gemini (utilizado para análise de dados
Com o SharePoint Server 2010, entre todas
no Excel) para integrar nossas aplicações.
as aplicações do pacote Office, o Visio 2010
traz a possibilidade de criarmos workflows
Como exemplo da utilização das novas
APIs acima, disponibilizei um vídeo ilus- no servidor a partir de diagramas.
trativo no link: Um dos benefícios para os usuários é a pos-
http://www.screencast.com/t/OGQ0MGJm
sibilidade de que os mesmos visualizem o
progresso dos workflows, com todas as a-
OBS: Os códigos criado no vídeo e o próprio video-
cast estão disponíveis para download no link: ções e pontos de decisão, uma vez que os
http://sharepoint4developers.spaces.live.com/blog/ diagramas estarão vinculados aos work-
cns!419BF2880E221BB9!481.entry
flows.

♦ Workflows OOTB customizáveis


Content Management
Os workflows OOTB sofreram mudanças
Workflow em seu design para serem melhor reutiliza-

Vejamos as novidades relacionadas aos


dos através de "building boxes", que permi-
Codificando.net e-magazine
tem que estes sejam estendidos mais facil-
workflows:
mente.

♦ Performance e Escalabilidade Pages and User Interface

Agora os profissionais de Infra podem de- Ribbon e Dialogs


finir servidores dedicados para a execução
de workflows. Isso possibilita que work- O Ribbon representa a nova barra de tarefas
flows sejam executados mais rapidamente no Sharepoint 2010. Proveniente do Office
e que os mais críticos possam ser executa- 2007, ele veio para ficar. Sua customização é
dos em servidores exclusivos. possível através da criação de Custom Acti-
ons 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 Padronização e Compatibilidade


informações do contexto em que estamos.
Utilizado para exibir informações persis- As páginas do Sharepoint 2010 estão mais
tentes, tais como: status da página ou ver- amigáveis para os desenvolvedores. As
são. Enquanto que a Notification Area ou masterpages foram criadas no padrão XHT-
Área de Notificação nos traz informações ML 1.1, deixando as páginas mais limpas e
transitórias de duração de 5 segundos e padronizadas.
depois desaparecem.
Os browsers Mozilla e Safari são suportados
sem restrições, ou seja, todas as funcionali-
dades executam em tais browsers.
Da perspectiva de acessibilidade, o padrão
WCAG 2.0 nível AA foi implementado. Pa-
ra mais informações, acesse o link: http://
www.w3.org/TR/WCAG/

A linguagem XSLT foi largamente utilizada


para a customização de views, devido a seu
padrão na transformação de dados XML.
Mais uma novidade é de que a UI agora ofe-
rece suporte multilíngue, ou seja, a Língua
das páginas podem ser trocadas. No ponto
Figura 5 – Novas funcionalidades da UI do
SharePoint 2010.
de vista de desenvolvimento, durante a
construção de soluções, dependendo dos
requisitos, devemos pensar na possibilidade
Os Dialogs são representados por modal do usuário mudar a UI para suportar Inglês
pop-ups, que congelam a edição dos cam- ou Português por exemplo.

Codificando.net e-magazine
pos do plano de fundo e só permitem a
Silverlight
edição dos campos em evidência. Bastante
conhecido por desenvolvedores Web. O Silverlight possibilita ricas visualizações
de conteúdo e o Sharepoint 2010 traz consi-
go templates de Silverlight webparts. Isso
possibilita uma maneira mais simples de
realizarmos o upload de arquivos xaps
(aplicações Silverlight) e utilizá-los no Sha-
rePoint.

Vale lembrar que o Client Object Model ofe-


rece total suporte ao desenvolvimento de
aplicações Silverlight.
Figura 6 – Modal popups.

www.codificando.net Abr / Mai - 2010 | 62


Novidades em Desenvolvimento no Sharepoint 2010 e-magazine

Flexibilidade no Deploy um subset de APIs e dentro do mesmo Site


Collection.
Para efetivamente gerenciarmos o ciclo de
desenvolvimento de aplicações necessita- Estas soluções são monitoradas e caso algu-
mos de ferramentas que nos auxiliem. O ma delas traga alguma instabilidade são au-
Visual Studio 2010 se integra inteiramente tomaticamente finalizadas, o que traz mais
com o Team Foundation Server, que for- segurança à estabilidade do farm.
nece uma solução completa para o geren-
ciamento do ciclo de desenvolvimento e O objetivo principal da utilização de Sand-
automatização do processo de entrega de boxed Solutions é de agilizar os negócios,
aplicações. Apenas dessa maneira é que permitindo que as soluções sejam criadas e
temos um deploy com 100% de sucesso. disponibilizadas rapidamente, sem que haja
a relutância do deploy por Administradores
Uma vez finalizada uma solução, basta
do Farm uma vez que são soluções mais se-
realizarmos o deploy dela! É assim que
guras.
funciona em seu ambiente de trabalho?
Tipos de solução
Na grande maioria dos casos acredito que
não, primeiramente é necessário verificar Vários tipos de soluções podem ser criados,
o impacto que sua solução pode trazer ao desde que a solução esteja dentro do escopo
ambiente de produção. Para isso é neces- do Site Collection em que se encontra.
sária a realização de testes (funcionais e
não-funcionais) em ambientes de pré- O subset de APIs do Sharepoint inclui a
produção. maioria das classes, incluindo SPSite, SP-
Web, SPList e SPListItem. A lista completa
Testes de performance são extremamente de classes disponíveis no subset de APIs do
necessários para se evitar dores de cabeça Sharepoint está disponível no link: http://
indesejadas. É por isso que somente após msdn.microsoft.com/en-us/library/ee537860
o aval da equipe de Infra é que as soluções (office.14).aspx Codificando.net e-magazine
são disponibilizadas em produção. Geral-
mente isso leva tempo e traz custos inde- Sandboxed Solutions podem ser criadas a
sejados aos projetos. partir de objetos do Sharepoint, tais como:
Para facilitar esse meio-de-campo, Sand- Web Parts, Modules, Lists, Content Types,
boxed Solutions foram disponibilizadas Event Receivers, Feature Activation Events,
no Sharepoint 2010. Custom Workflow Actions e InfoPath
Forms.
Sandboxed Solutions
Formato dos Pacotes
Sandboxed Solutions são soluções seguras
Através da criação de pacotes WSPs as solu-
que são executadas em um processo sepa-
ções foram unificadas. Dessa forma os pró-
rado do servidor. Tais soluções são res-
prios Administradores do Site Collection
tringidas a serem executadas somente com

www.codificando.net Abr / Mai - 2010 | 63


Novidades em Desenvolvimento no Sharepoint 2010 e-magazine

podem realizar o deploy das soluções fa- Sandbox Solutions é limitada a um


cilmente, selecionando os pacotes e reali- subset das APIs do Sharepoint (4). Ca-
zando o upload. so o código desenvolvido se enquadre
no subset do modelo de objetos então
Arquitetura o proxy é chamado.
♦ O Sandbox Worker Process Proxy
Alguns componentes se fazem necessários
(SPUCWorkerProcessProxy.exe) é cha-
para que as Sandbox Solutions sejam exe-
mado (5) para permitir a execução do
cutadas. A Figura 7 mostra os componen-
código da Sandbox Solution contra o
tes essenciais e o fluxo de execução das
modelo completo de APIs do Sharepo-
Sandboxed Solutions.
int.

♦ O usuário solicita uma página, ou


Conclusão

Através da união das 3 partes: Produtivida-


de com a utilização de novas ferramentas,
nova plataforma de serviços e nova forma
de deploy, as soluções em SharePoint sofre-
ram um grande upgrade, pela integração
entre plataforma e as ferramentas.

Isso possibilitará a ingressão de novos de-


senvolvedores no mercado mundial para
suprir as demandas existentes, que tendem
Figura 7 – Arquitetura e Fluxo de Execução das
Sandboxed Solutions. a crescer pelos benefícios que a plataforma
oferece e pelas facilidades na customização
outro objeto que contenha uma desse novo ambiente, citados nesse artigo.
Sandbox Solution no Front End. In-
ternamente o IIS identifica a solicita-
Marcel Medina
Codificando.net e-magazine
ção (1) e através do Application Pool
(2) a solicitação é enviada ao Back Especialista em desenvolvimento .Net/Sharepoint,
atua como Consultor Microsoft nas tecnologias .Net/
End.
Sharepoint. Também é Microsoft Trainer nas tecnolo-
♦ O User Code Service gias citadas. Atualmente vive em Auckland, New Zea-
(SPUCHostService.exe) precisa estar land e gosta de esportes radicais, música e jogos.
Como desenvolvedor Sênior coordenou e participou
ativo para que a execução de Sand-
de vários projetos grandes de desenvolvimento, inclu-
box Solutions seja garantida (3). Este indo os jogos Pan-americanos Rio 2007 nas platafor-
serviço pode existir em vários servi- mas web, windows e mobile.
Possui 10 anos de experiência no mercado de TI e as
dores que desejam dividir a execução
seguintes certificações: MCP, MCDBA, MCAD, MCSD,
de Sandbox Solutions. MCTS, MCPD e MCT.
♦ O Sandbox Worker Process
contato: marcel_medina@hotmail.com
(SPUCWorkerProcess.exe) é o pro-
blog técnico português:
cesso real em que Sandboxed Soluti- http://sharepoint4developers.spaces.live.com
ons são executadas. A execução de blog técnico inglês:
http://sharepoint4developersnz.spaces.live.com

www.codificando.net Abr / Mai - 2010 | 64


e-magazine

JQuery 1.4 - Novidades


Por: Fabiano Belmonte

Olá pessoal, hoje vou escrever sobre a no- Nota Oficial do Site: Muitos dos princi-
va versão do JQuery versão 1.4. Vejamos o pais métodos do jQuery sofreram alterações
que melhorou nesta versão. Uma coisa que significantes na nova versão. Quando anali-
podemos notar é que depois que a Micro- samos o código descobrimos que estávamos
soft começou a apoiar, a FrameWork vem aptos à fazer alguns significantes ganhos de
crescendo bastante e nós que ganhamos performance comparados com a versão ante-
com isso!!! rior. Vendo quantas chamadas para funções
No início do mês eu já dei uma Twitada internas estavam sendo feitas e o trabalho
sobre a nova versão, que foi lançada no dia para reduzir a complexidade do código. (*
14 de janeiro, achei bem legal o que foi fei- Ref 01)
to, pois no dia do aniversário do JQuery,
para celebrar eles lançaram um site http:// Outro ponto em que a equipe de DEV de
jquery14.com/. preocupou bastante foi com a cobertura
de testes e o suporte a uma quantidade
Nota Oficial do Site: Nós estamos empolga- maior de browsers. (* Ref 02)
dos em trazer por 14 dias consecutivos novas
Nota Oficial do Site: Na versão
liberações para celebrar a versão 1.4 do jQuery.
Você observará que nós estamos empolgados 1.4 corrigimos cerca de 207 Codificando.net e-magazine
com o número 14 desde que a versão 1.4 do bugs (comparados com 97 na versão 1.3).
jQuery foi liberada no aniversário do jQuery (* Ref 03).
(14 de janeiro). Por isso não deixe de voltar a
cada dia porque outro anúncio é feito e um no- Adicionalmente nós melhoramos nossa co-
vo conteúdo é liberado. bertura de testes de 1504 testes no jQuery
1.3.2 para 3060 testes na versão 1.4. A suite
Tem coisas bem legais nesse site, pretendo de testes do jQuery está passando 100% na
explorar mais artigos falando dessas mu- maioria dos browsers (Safari 3.2, Safari 4,
danças. Firefox 2, Firefox 3, Firefox 3.5, IE 6, IE 7,
IE 8, Opera 10.10, e Chrome).
Uma das principais mudanças foi a melho-
ria de performance dos principais métodos Outro ponto muito importante foi a rees-
do FrameWork, se você já achava rápido, crita de toda a documentação oficial (*
imagine agora... Ref 04 ) do jQuery 1.4 e a liberação de

www.codificando.net Abr / Mai - 2010 | 65


JQuery1.4 - Novidades e-magazine

um novo fórum de discussão. (*Ref 05) Ref 08 : http://code.google.com/intl/pt-


BR/apis/ajaxlibs/documentation/
Nota Oficial do Site: Nós utilizamos listas index.html
de discussões, e posteriormente Grupos do
Google, ao longo dos 4 anos para gerenciar as Ref 09 : http://ajax.microsoft.com/ajax/
discussões e comunidades em volta do jQuery/jquery-1.4.min.js
jQuery. Essa solução em particular não tem
sido capaz de escalar nossas discussões tanto Bons Códigos...
em termos de participação e
no gerenciamento de spam.
Fabiano Belmonte
Líder de Projetos da Compugraf foi senior Architect
(*Ref 06)
da InfoMoney.com, especialista em aplicações e-
Business com larga experiência em B2B
Você já pode baixar a nova versão aces- (Submarino.Com e Saraiva.Com). Trabalha há 5 a-
nos com a tecnologia .Net, aplicando conhecimen-
sando qualquer um dos links a seguir:
tos nas diversas áreas: instituições financeiras
Jquery: http://code.jquery.com/jquery- (sistema SPB), e-Commerce, gerenciamento logísti-
1.4.js co entre outras. Trabalhando com Visual Studio
desde suas primeiras versões, responsável pela im-
plementação de uma Metodologia de trabalho e
Google: http://code.google.com/apis/ melhoras significativas no resultados e na qualidade
ajaxlibs/documentation/index.html do time de Desenvolvimento de muitas empresas
por onde passou como (Saraiva.Com) e ferramen-
tas como TFS (Team Foundation Server).
Microsoft: http://ajax.microsoft.com/ajax/
jQuery/jquery-1.4.min.js Foi palestrante em eventos como Codificando. NET
2008 e outros eventos sobre Tecnologia .NET.

Referências:

Ref 01 : http://ejohn.org/blog/function-call-
profiling/
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/google-
groups-is-dead/

Ref 07 : http://code.jquery.com/jquery-
1.4.js

www.codificando.net Abr / Mai - 2010 | 66


e-magazine

C# 4.0 - Tipos Dinâmicos


Por: Fabiano Belmonte

Olá Pessoal, há algum tempo comecei a Vamos fazer alguns exemplos:


escrever sobre C# 4.0, acho que já passou
da hora de voltar a escrever sobre o assun- Veja um cenário onde você precisa defi-
to. nir propriedades de um objeto, uma dll,
e você vai fazer isso utilizan-
Hoje vou escrever sobre uma funcionalida- do Reflection:
de bem legal, na minha opinião ajudará
bastante nosso dia a dia, que é Dynamic Assembly objLib= Assembly.LoadFile
Typed Objects. (@"C-
:\projects\Testes\bin\Debug\Testes.dll");
Uma feature bem legal do C# 4.0 e o supor- Type TesteObjType = objLib.GetType
("Teste.TesteClassLib");
te à programação dinâmica, isso é feito a-
object Classobj= Activator.CreateInstance
través da criação de tipos dinâmicos de ob-
(TesteObjType);
jetos, o que acontece é que esses tipos são PropertyInfo pInfo= TesteObjTy-
resolvidos em tempo de execução e não em pe.GetProperty("Nome");
tempo de compilação. pInfo.SetValue(Classobj, "Fabiano", null); Codificando.net e-magazine
O que muda? Na declaração da variável Código que faz o load de uma dll via
utilizamos a palavra "dynamic". A palavra- reflection e atribui um valor para a pro-
chave informa o compilador que o objeto priedade nome do objeto
foi declarado de forma dinâmica, deve ser
tipado em tempo de execução usando o Agora vou fazer a mesma coisa utilizan-
Dynamic Language Runtime (DLR). do "dynamic" basta mudar a terceira e a
última linha para:
Mais não confunda o "dynamic" com
o "var", pois eles não são a mesma coisa. dynamic dynamicTesteObj =
O "var" é tipado em tempo de compilação Activator.CreateInstance(Classobj);
diferente do "dynamic", que é tipado em dynamicTesteObj.Name = "Fabiano";
tempo de execução.
código que faz o acesso a propriedade

www.codificando.net Abr/ Mai - 2010 | 67


C# 4.0 - Tipos Dinâmicos e-magazine

da DLL utilizando dynamic. Fabiano Belmonte


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

Foi palestrante em eventos como Codificando. NET


2008 e outros eventos sobre Tecnologia .NET.

Twitter.com/fabianobelmonte

**slide da palestra do Anders Hejlsberg's no


PDC 2008.

Como podemos ver na figura acima, vo-


cê pode chamar o método (s), tais como
x.ToString (), y.ToLower (), z.Add (1) e
ele irá funcionar sem problemas.

Esta é mais uma feature que nos oferece


muita flexibilidade.

Quero explorar mais o C# 4.0, pretendo Codificando.net e-magazine


fazer isso separando por features.

Espero que gostem!

Bons Códigos...

www.codificando.net Abr/ Mai - 2010 | 68


Road Show em Ribeirão Preto
Por: Fabrício Sanches

A Microsoft seguindo sua filosofia de ofere-


cer conteúdo (em grande quantidade e qua-
lidade) para os participantes da comunida-
de, realiza diversos tipos de eventos por to-
do o Brasil. A mais nova iniciativa da Micro-
soft Brasil é a Copa de Talentos Microsoft,
que está movimentando desenvolvedores e
profissionais de infra-estrutura em todo o
território nacional.

Dentre os muitos eventos que a Copa Micro- Renato Haddad Alex Schulz apresentando
soft está promovendo, destaca-se o Road apresentando sua palestra sua palestra sobre
sobre Visual Studio 2010.
SharePoint 2010.
Show. O Road Show é um encontro entre e .NET Framework 4.0.
desenvolvedores, profissionais de infra-
estrutura, funcionários e colaboradores No último dia 15/04 foi a vez de Ribeirão Pre-
(MVP's) da Microsoft onde são ministradas to, cidade localizada no interior de São Pau-
palestras, mesas de discussões, dentre outras lo, a aproximadamente 300 kilômetros da capi-
atividades e é realizado nas principais cida- tal receber o evento. O evento foi realizado nas
des do país. dependências do Stream Hotel bem no centro
da cidade e contou com as participações dos
MVP's Renato Haddad (http://
weblogs.asp.net/renatohaddad/), Fábio Hara
(http://fabiohara.spaces.live.com/), Alex S-
chulz (http://blogs.msdn.com/alexschulz/),
dentre outros.

O evento teve início as 9h00 no auditório cen-


tral do hotel com desenvolvedores e pessoal
de infra juntos. Nesta primeira fase, Fábio Ha-
ra apresentou a agenda do dia e o cenário no
Pessoal acertando os últimos detalhes antes da qual as palestras (todas com 100% de prática)
palestra. seriam baseadas. As 10h00 o grupo foi dividi-
do em dois sendo que, os desenvolvedo-

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 69
(dirigidos por Renato Haddad e Alex S- foi muito bom saber que quase todos conseguiram
chulz) e o pessoal de infra continuou no entender bem quais as vantagens do Windows 7,
auditório central (comandados por Fábio Windows Server 2008 R2, Exchange 2010, Office
Hara e demais colaboradores). Em ambas 2010, SharePoint 2010, SQL 2008 R2 e Visual
as salas assuntos técnicos foram apresen- Studio 2010."
tados e, como já mencionado, palestras
100% práticas com soluções apresentadas As próximas etapas do Road Show estão rela-
em tempo real. cionadas abaixo. Se você está próximo a uma
destas cidades, não perca a oportunidade de
Após a pausa para o almoço (que ocorreu participar de um evento de alto nível com os
das 12h30 às 13h30), cada grupo voltou principais colaboradores da Microsoft em cada
para suas respectivas salas para a continu- área.
ação do evento. Os grupos voltaram a reu-
nir-se no auditório central as 16h00 quan- 08/05/2010 São Paulo
do alguns assuntos de interesse geral 11/05/2010 Campinas
(como o Windows 7, por exemplo) foram 13/05/2010 Cuiabá
apresentados e alguns sorteios também
foram realizados. Fabrício Sanches
Possui graduação em Ciência da Computação pela UNORP -
O evento contou com a participação de Centro Universitário do Norte Paulista (2005). Obteve título de
mestre junto a USP (Universidade de São Paulo) no Programa
aproximadamente oitenta pessoas e todos, Interunidades Bioengenharia campus São Carlos. Atualmente é
sem exceção, apreciaram o evento. Abaixo aluno de doutorado e pesquisador na mesma instituição e de-
o parecer de Fábio Hara, um dos pales- partamento. É membro regular do SpeechLab (Laboratório de
Processamento de Áudio e Voz) localizado no Instituto de Física
trantes no evento em seu blog. de São Carlos. Atua na área de processamento digital de áudio
e voz, especialmente baseado em wavelets aplicadas à inserção
"[...] O feedback foi excelente: todos gostaram e extração de watermarks em sinais de áudio e fala, análise
cepstral de sinais de fala e desenvolvimento de ferramentas
do modelo que apresentamos: nada de PPT a- computacionais aplicadas ao processamento digital de sinais.
penas demos focadas em problemas e como re- Atua como desenvolvedor web na União Central Brasileira da
solvê-los. Tenho percebido que muitas pessoas IASD com C# e ASP.NET desde 2007.
fazem palestras de produtos preocupadas em
mostrar recursos (features). Este tipo de mode-
lo de palestra agrada o publico que já conhece
uma ferramenta e deseja saber exatamente cada
funcionalidade. Porém se você quer mostrar o
que um produto pode fazer por você então é
importante que você mostre um problema e
como você pode resolver usando determinado
recurso. Esse feedback nos tivemos do publico e

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 70
Road Show em Fortaleza
Por: Jensen Clayton

No dia 23/04/2010 aconteceu um grande e-


vento em Fortaleza, a 10ª etapa da Copa Mi-
crosoft de Talentos.

Time de palestrantes:

Rodrigo Dias (IT Pro Evangelist)


Rogério Cordeiro (Developer Evangelist)
Renato Haddad (MVP) Vimos um cenário da Empresa Adventure-
Álvaro Rezende (MVP) Works com os diversos problemas que uma
Herleson Pontes (MVP) empresa enfrenta quando para de investir em
TI e depois enxerga que precisa correr para
recuperar mercado, mas não tem capital para
investimentos pesados em TI.

Soluções nativas apresentadas dentro dos pro-


dutos, onde alguns são gratuitos (Hyper-V
Server, SharePoint 2010 TF, etc...)

Acompanhados do:
Rodrigo Munhoz (Customer and Partner Sa-
tisfaction Manager) e Murilo Curti (Time do
Windows 7 e Grenn Light)

A galera da comunidade de Fortaleza fez Ao final do evento, um intenso "Perguntas &


mais que o esperado, foram mais de 150 pes- Respostas" muito produtivo e empolgante, on-
soas para prestigiar o Road show. Ponto pra de por questões de tempo não foi mais adian-
Fortaleza, das 10 primeiras etapas nós fomos te.
o maior publico e mais interativo (palavras
dos palestrantes).

www.codificando.net Abril
Abri// Maio
Mai - 2009
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 Di-
as).

Não acabou por aqui!

Após o evento, os influenciadores da co-


munidade conversavam com o time da
Copa Microsoft.

Feedback pra lá e pra cá e todos ganha-


ram os parabéns pelos excelentes traba-
lhos realizados e melhor ainda... vem mais
novidade em breve.

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

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 72
Community Launch em Vitória - ES
Por: Cleyton Santana de Sousa

Apresentarei alguns resultados do even- A Copa de Talentos está focada em produtos


to Community Launch: MSInfraES Vitória – que foram lançados recentemente e nos que
ES que foi realizado em 20/03/2010. Esta a- serão lançados nos próximos meses. Ela con-
ção foi concebida e realizada pelos grupos siste num jogo disputado pela comunidade
de usuários MSInfraES técnica em que você colocará seus conheci-
www.msinfraes.com.br e MSDev-ES http:// mentos em prática sobre as seguintes soluções:
br.groups.yahoo.com/group/msdev-es/ em
parceria com o Centro de Inovação Micro- Infraestrutura
soft - Vitória e várias empresas e organiza-
ções do estado do Espírito Santo. •Windows 2008 Server R2
•Windows 7
O Community Launch (CL) é uma ação rea- •Exchange 2010
lizada pela Microsoft Brasil através do proje-
to Copa de Talentos. Para a realização desta Desenvolvimento
onda foi elencado o TechNet, MSDN e Co-
•Visual Studio 2010
munidade em Ação (CEA) para alavancar as
•Sharepoint /EPM 2010
atividades dos grupos de usuários e um Ro-
•SQL Server 2008 R2
ad Show em várias localidades do Brasil. O
preparatório do Community Launch foram
E cadê os resultados?
reuniões via webcast e o CommunityZone
2010 que reuniu mais de 100 influenciadores
Atingimos um público total de 150 pessoas pa-
Microsoft em SP. Do qual tive o prazer de
ra as trilhas de infraestrutura e desenvolvi-
participar.
mento.

Na capital do ES - Vitória, atendemos o cha-


Palestrantes de alto nível com reconhecimento
mado TechNet/MSDN e aceitamos o desafi-
de seus trabalhos em todo o Brasil.
os de realizar o CL. Foram vários desafios
vencidos como entregar conteúdo de quali- Infraestrutura
dade, reunir um time de especialistas nos
produtos da campanha a fechar todos os en- O que há de novo no Windows Server 2008 R2
laces de articulação para a realização deste - MVP Rodrigo Immaginario CISSP, MC-
ousado projeto. SE:Security, MCSA:Security, MCSE (NT, W2K,
W2K3), MCSA(W2K, W2K3 Descritivo : Co-

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 73
nheça as novas funcionalidades do Win- VOL.net.br – que forneceu um link de internet
dows Server 2008 R2 e exemplos de estu- para a realização da conferência nacional. E a
do de caso real no Brasil. todos os demais que colaboraram com divul-
gação ou cessão de profissionais para minis-
Sharepoint 2010 – Maurício Davino MCIT trar palestras.
- PRO Enterprise Project Management
With Microsoft Office Project Server 2007, Seleção de fotos:
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
Credenciamento Abertura
System Center Essentials 2007 - Janiel Pe-
reira MCSA/MCP Windows Server/XP/
MCDST

Desenvolvimento

Gerenciamento do Ciclo de Vida da Apli-


Palestra DEV Equipe MSInfraES /
cação com o Visual Studio Team System MSDevES
2010 (ALM com VSTS) - Délio Dessaune
Gerente de Projetos MCSD / MCAD / Link para todas as fotos:
MCSD / MCT http://cid-cc40655101da0596.skydrive.live.com/
selectembed.aspx/Community%20Launch%
20MSInfraES%20Vit%c3%b3ria%20ES%2020%
Silverlight 3 - Fabriccio Correia Bernardes
2003%202010%20Faesa?ref=1
Desenvolvedor Silverlight/Sharepoint
SQL 2008 R2 - Daniel Barbosa de Olivei-
Tags:
raMCAD.NET / MCDBA / MCTS - SQL #CommunityLaunch #CLES #MICVITORIA
Server 2005 / MCT / Informatica Certified #TechNet #MSDN
Design
Cleyton Santana de Sousa
Parceria fechada com o Sebrae-Es através
COBIT Certified
da Juliana Berton, a quem devemos nosso ITIL Foundation Certified
especial agradecimento por viabilizar o Microsoft Certified Professional
http://csantanaes.blogspot.com
cofee-break .
Gestão de TI e Gerenciamento de Projetos
http://csantanaes.spaces.live.com
Ao provedor de hosting capixaba Blog Tecnologia

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 74
Marília TechDay 2010
Por: Laerte Junior

Até agora estamos tentando entender o que Brasil em tecnologias Microsoft) como os
aconteceu em Marília dia 10/04. Um boom MVPs Rob Ranches, Evilázaro Alves, Diego
da comunidade poderia ser um adjetivo a- Nogare , Nilton Pinheiro, o líder dos MVPs
plicável. Brasil Rodolfo Roim, renomados membros da
comunidade técnica SQL Server Felipe Ferrei-
Conversando com alguns amigos do exterior ra , Thiago Zavaschi, Fabiano Amorim e Laerte
que também fazem eventos , para profissio- Junior e o integrante do time do Premier Field
nais inclusive, todos forma unânimes em di- Engineer (PFE) em SQL Server da Microsoft
zer “Nunca vimos isso”. Mais de 800 pesso- Brasil Fabricio Catae, o evento reuniu o im-
as reunidas para se atualizar tecnologica- pressionante número de 830 participantes que
mente e principalmente conhecer os profis- durante todo o dia se dividiram em dois audi-
sionais que fazem essa tecnologia acontecer tórios do Centro Universitário Eurípedes de
no Brasil. Marília (UNIVEM) e assistiram a 12 palestras
ministradas por estes feras e uma video-
Isso demonstra o entusiasmo do brasileiro mensagem de 10 minutos do Consultor de Re-
em aprender principalmente a carência de des Sociais Luciano Palma.
eventos assim em algumas regiões.
“Queremos mais”,”Quando vai ter o próxi- O evento teve repercursão nacional
mo ?” foram algumas frases que me pergun- e internacional, uma vez que contou com a
taram no final do evento. presença de Fernando Guerreiro, CEO da So-
lidQ, uma empresa multinacional de consulto-
O Marília Tech Day foi um marco na história ria em SQL Server, presente em uma série de
dos eventos e eu posso dizer que nós, pales- países. Fernando venho ao Brasil pela primeira
trantes ,organizadores e parceiros também vez apenas para prestigir o evento e na pala-
queremos mais. É incrível a energia, força vra dele "Ele não acreditou no que viu em Ma-
que nos foi passada, levando-nos a perce- rília”.
ber, mais ainda, que o que faz o mundo gi-
rar, acontecer, é o prazer de compartilhar, de Acompanhado pelo Twitter através da hashtag
poder passar pra frente os anos de estudo e #MTD2010 o evento gerou 31 páginas de
dedicação. Tweets em apenas 2 dias, sendo também
destaque nos jornais da região como Diário de
Com um time de palestrantes de primeira Marília (Marília Tech Day põe cidade na rota
linha (alguns dos maiores especialistas do da tecnologia ) e Jornal da Manhã, no entanto,

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 75
a marca mais impressionante do evento Fabrício Catae (Microsoft)
foi mesmo o número de participantes: Inside SQL Server: Como funciona um banco
mais de 830 pessoas, sendo de dados?
definitivamente considerado o maior Armazenamento de dados no SQL Server.
evento já realizado pela Comunidade
Técnica Microsoft! Felipe Ferreira
O que a plataforma .NET pode fazer por você
Você pode ver tudo que aconteceu na desenvolvedor?
UNIVEM no dia 10/04, as palestras, fotos
no nosso site : Laerte Poltronieri Junior
www.marilia.techday.net.br. Automatizando Processos no SQL Server com
Powershell e SQL Server Powershell Extensi-
Caso tenha interesse em levar esse grande ons.
evento a sua cidade/universidade/região,
entre em contato com a gente pelo email Nilton Pinheiro (MVP)
contato@techday.net.br. Teremos o maior Conhecendo o SQL Server 2008 Express - A
prazer de “TREMER” tudo, como fizemos edição grátis do SQL Server.
em Marília.
Rob Ranches (MVP)
Principais Organizadores do Evento: Exchange 2010 - Cozinhando com o correio.

Arnaldo Martins Hidalgo Junior Rodolfo Roim (Microsoft)


Elvis Fusco SharePoint 2010 - O que mudou?
Laerte Poltronieri Júnior
Nilton Pinheiro Thiago Zavaschi
Self-service Business Intelligence com o
Palestrantes: PowerPivot.

Diego Nogare (MVP)


SQL Azure Database.

Evilázaro Alves (MVP)


Introdução ao desenvolvimento de Siste-
mas Conectados com WCF 4.0.

Fabiano Amorim
Entendendo como os Joins funcionam de
uma vez por todas!

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

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 77
Road Show Brasília
Por: Sara Barbosa

A Copa Microsoft também passou por Brasí- usuários.


lia no dia 06/04 trazendo o Road Show. DirectAccess para escritório remoto
BitLocker To Go
Como já era esperado o evento aconteceu Compatibilidade com XP mode.
nos dois períodos manhã e tarde e as turmas Economia de banda com Branch Cache.
foram divididas em duas tracks: Infra e Dev.
Após intervalo para almoço, Álvaro Rezende e
Dentro de cada track foi apresentado às no- Fabio Hara prosseguiram com os temas:
vidades Microsoft implementadas numa
empresa fictícia que precisava de melhorias, Exchange 2010
mas sem muito recurso financeiro. Cada á- Controle do fluxo das informações da rede
rea ficou responsável em solucionar a neces- Correio de Voz + E-mails juntos
sidade da empresa mostrando ‘ao vivo’ as
funções dos produtos que foram e serão lan- Sharepoint 2010
çados em 2010. Edição de documentos sem necessidade de pa-
cote Office instalado
Após a divisão da turma, na track de [Infra] Co-Autoria no Office Web Application Facili-
os palestrantes Fabio Hara, Alvaro Rezende dade de edição de documentos, dois usuários
e Marcelo mostraram as novidades: podem editar o mesmo documento ao mesmo
tempo
Windows Server 2008 R2 Compatibilidade com Firefox, IE e Opera
Simplificando o gerenciamento com Power-
Shell 2.0, no AD hoje é simples recuperar os SQL Server 2008
objetos excluídos, os objetos podem ser res- Gerenciamento, facilitando a vida do adminis-
taurados da lixeira ‘a quente’. trador de BD
Facilidade, economia e melhorias Melhores práticas
da virtualização usando Hyper-V. Alta disponibilidade
Melhoramento da plataforma de aplicações
Web com IIS 7. Na track de [Dev], pela manhã Rogério Cor-
Analisador de melhores práticas BPA. deiro, Renato Haddad detonaram com as no-
vas features do Visual Studio 2010 (geração de
Windows 7 diagramas UML, recursos do Team System).
PSR, ferramenta que auxilia no suporte aos

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 79
No período da tarde foi apresentada a ar- No fim do dia a comunidade BrasilDotNet
quitetura Team Foundation Server 2010 e participou da mesa redonda juntamente com
Sharepoint 2010 para desenvolvedores, os palestrantes, discutindo os frutos do evento
como a integração Sharepoint 2010 + Vi- e a realidade da comunidade em Brasília que
sual Studio 2010 vai facilitar e deixar a hoje está ficando cada dia mais ativa.
ferramenta bem mais acessível para reali-
zar a customização de novos modelos de Road Show de Brasília foi um sucesso, com
sites. 120 inscritos e 119 presentes, incluindo Janny
que veio de Minas Gerais e eu de Goiânia. Pa-
Road Show foi uma tempestade de infor- lestrantes da Copa Microsoft estão de para-
mações e o melhor tudo isso com pratica- béns por mais uma realização.
mente zero (zero) de PPT? Isso mesmo,
tudo na base da ‘demo’. Algumas fotos:

Inclusive a metodologia usada é uma ex-


celente idéia e com certeza mais proveito-
sa para um evento desse porte, por ser um
evento o dia todo não fica cansativo e o
público fica mais empolgado vendo tudo
funcionando conforme cada nova funcio-
Track de Infra Palestrantes de infra
nalidade dos produtos apresentada.

Chegando ao fim do evento as duas tracks


foram unidas novamente, foi mostrado
como é do interesse da Microsoft que as
áreas de Infra e Dev andem juntas, uma
alinhada à outra, assim entra uma
'pequena' peça da família System Center
para auxiliar nessa união. Track de Dev Rogério Cordeiro - Dev

Perguntas e respostas aconteceram para


finalizar as apresentações, os palestrantes
ficaram a disposição para esclarecer as du-
vidas do pessoal.

Além do conhecimento, muitos saíram


com mochilas, CD de treinamento, bonés
com o sorteio de brindes. Perguntas e Respostas

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 80
Eu recebendo o brinde Público do Road Show
do Fabio Hara

Palestrantes do Road Show

Vejas mais fotos do evento:


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

Sara Barbosa
É estudante de Tecnologia em Segurança da Informação.
Membro do conselho da Comunidade WININFO, comuni-
dade Microsoft de Infra Estrutura do Centro-Oeste.

Mais detalhes blog: http://sarajbarbosa.spaces.live.com/


Twitter: @sarabarbosa

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 81
Community Launch em Goiânia
Por: Sara Barbosa

Dia 20/03 Goiânia e demais cidades do Brasil 1º cidade a começar a divulgação do evento
participaram da largada para o concurso da 1º cidade a esgotar as inscrições (em menos de
Copa Microsoft de talentos. Foi transmitido 5 dias)
o General Session direto da Microsoft e de- 1 website personalizado para o evento: dev-
pois através de excelentes profissionais fo- goias.net/copamicrosoft
ram apresentados os lançamentos das novas Evento mais presente nas redes sociais
soluções Microsoft de 2010. Os temas das (twitter, facebook, windows live, youtube e
palestras foram SharePoint, Exchange, Visu- flickr)
al Studio e Office 2010, Windows Server
2008 R2, Windows 7 e Entity Framework. Em 7 dias tivemos:
1.300 visitantes únicos no site do evento
4000 PageViews
Após o evento isso já contabilizava em:
+ de 1700 visitantes únicos
+ de 6000 pageViews
220 Inscrições
118 pessoas na lista de espera
Público do CLGO + de 250kg de alimento arrecadado.
Muitos brindes, entre eles Windows Server
Um resumo bacana que descreve o sucesso 2008 com + 25 Cals, Windows 7 Ultimate, li-
do Community Launch em Goiânia: vros e muito mais.
(Fonte: www.rodrigokono.net)
2 grupos envolvidos:
DevGoiás.NET e WININFO Fotos dos melhores momentos:
5 Empresas patrocinantes
3 Empresas e 1 Organização de apoio
5 palestras + 1 General Session
8 Palestrantes:
♦ 3 MVP: Alvaro Rezende(GO), Nelson
Kolarik (DF), Rodrigo Kono (GO)
♦ 4 MCP e MCT: Alliston Carlos, Ely
Marques, Marcelo Paiva, Weder Lima
♦ 1 MSP: José Lino Neto

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

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

Sara Barbosa
É estudante de Tecnologia em Segurança da Informação.
Membro do conselho da Comunidade WININFO, comuni-
dade Microsoft de Infra Estrutura do Centro-Oeste.

Mais detalhes blog: http://sarajbarbosa.spaces.live.com/


Twitter: @sarabarbosa

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 83
Community Launch no Rio de Janeiro
Por: Vinicius Quaiato

Sábado, 17/04, tive a honra de participar do Após o almoço Alexandre Valente fez uma ex-
Community Launch RJ, organizado pela co- celente apresentação sobre Asp.Net MVC 2. O
munidade .Net Architects do Rio. O evento Alexandre conhece bastante da ferramenta, é
foi super bem organizado, uma semana an- bastante objetivo e direto. Foi uma das pales-
tes as vagas estavam todas preenchidas: 100 tras mais aguardadas pelo público.
inscritos ao todo. No dia do evento a presen-
ça média foi de 65 pessoas no local. A palestra do Fernando Bichara foi a que mais
"emocionou" o público. Ele apresentou o MEF,
O Community Launch RJ teve início às 09h e Managed Extensibility Framework. Eu quase
a primeira palestra foi com o Alexandre Bis- chorei. Simplesmente uma ferramenta incrível,
po, que exibiu novidades do Visual Studio e apesar de ser um assunto "complexo" ele a-
2010, explicou sobre a nova IDE feita em presentou tudo de forma simples, direta, obje-
WPF e mostrou novos recursos. O pessoal tiva e com conhecimento de causa. A palestra
logo cedo já começou a ficar animado fazen- terminou e eu já tinha mil idéias na cabeça, ter-
do muitas perguntas e mostrando bastante minamos comparando o uso do MEF com ex-
interesse. tensibilidade via IronRuby e IronPython. Sim-
plesmente ótima palestra!
A segunda palestra foi a minha, onde abor-
dei as novidades do Entity Framework 4.0. Christian Cunha mostrou as novidades do
Foram abordadas as principais novidades VS2010 relacionadas com as práticas de TDD,
como Classes POCO, Lazy Loading, Model além é claro de apresentar a técnica, explican-
First e Code Only, uma feature que ainda só do suas motivações, práticas, e demonstrando
está disponível em CTP. Foi uma palestra na prática como aplicá-la.
bem divertida e diferente. Com slides des-
contraídos e uma boa interação com a platéi- Para apresentar o Application Lifecycle Mana-
a. O público riu do início ao fim. gement com Visual Studio 2010 o Rodrigo Vi-
dal deu uma boa explicação sobre a organiza-
Na sequência tivemos uma palestra sobre ção do VS2010para o gerenciamento de ALM e
ASP.NET 4.0, com o Sidney Lima Filho. Ele como ele pode auxiliar e automatizar este pro-
é apaixonado por WebForms, e mostrou as cesso, atingindo os mais diferenciados papéis
novidades nesta nova versão, abordando envolvidos no desenvolvimento e vida do soft-
detalhes bem técnicos. ware.

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 84
Fechando o evento Carlos Eduardo apre-
sentou como trabalhar com arquivos Offi-
ce utilizando o Open Xml. Foi uma pales-
tra incrível. Todos ficaram de queixo caído
com a versatilidade e o poder da ferra-
menta.

Para coroar o evento ao final ocorreu o


sorteio de brindes: livros, squeezes, copos,
camisetas, licenças de software e outros
itens mais. O feedback da comunidade e
dos presentes foi simplesmente muito po-
sitivo. A cada palestra, a cada momento
das palestras, os presentes enviavam men-
sagens de elogio e divulgação no twitter
utilizando a hashtag do evento.

Sem dúvidas a comunidade .NET do Rio


de Janeiro ganha muito com a realização
deste evento, e isto se reflete na comuni-
dade .NET de todo Brasil. Todos esperam
ansiosos por mais eventos do grupo .Net Vinicius Quaiato
Architects na cidade maravilhosa. vinicius.quaiato@gmail.com – www.viniciusquaiato.com
Trabalha com desenvolvimento de software há cerca de 4
anos, especificamente com tecnologias Micro-
soft .NET. Aficcionado por arquitetura e boas práticas.
Atualmente trabalha com desenvolvimento e arquitetura
de aplicações na Envision Tecnologia. Atua na comunida-
de .Net Architects e coordena o grupo de Coding Dojo da
mesma. Tem ministrado palestras sobre boas práticas e as
novidades do .Net Framework. Escreve artigos em seu
blog www.viniciusquaiato.com e na revista .Net Magazine.
Está presente no twitter em @vquaiato.

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 85
Blumenau TechDay 2010
Por: Djonatas Tenfen

Galera da codificando.net escreverei sobre o Durante o evento tivemos palestra extra do


DEVBLU - Evento técnico Microsoft Tech Diego Nogare falando sobre Comunidades,
Day ( www.mstechday.com ) que aconteceu MSP, MVP e também uma explicação sobre o
dia 24/04/2010 na cidade de Blumenau no que era a comunidade Codificando.NET,
Teatro Carlos Gomes. em seguida Lucas Romão apresentou a comu-
nidade Azure services BR
O evento teve a presença mais ou menos 116 ( www.azureservicesbr.ning.com ) e eu apre-
pessoas muitas delas acompanharam todo o sentei a comunidade Silverlight Brasil
evento, muito bom ver a comunidade Blu- ( www.silverlightbrasil.ning.com ),
menauense ativa e comparecendo em even- por fim tivemos uma participação virtual mas
tos presenciais, mostrando que temos sim especial do grande Luciano Palma
capacidade de trazer mais eventos para a ( @LucianoPalma ) falando sobre o "Começar
região. pelo Porque ?" Mensagem esta aclamada e
aplaudida por todos no auditório.
Segundo informações, desde 2002 não teve
evento técnico na cidade. E por fim foi sorteado e entregue alguns brin-
des ao presentes.
O #MSTDBLU veio trazendo uma série de
novidades na linha de DEV e INFRA, Share- Lembrando apenas que o evento teve patrocí-
point 2010 com Fabian ( @fgherk ) , Thiago nio das empresa Benner Logística - KeepIt
Zavaschi ( @zavaschi ) com Power Pivot BI, @keepit_brasil - Telerik @telerik.
Diego Nogare com SQL Server 2008 R2
( @DiegoNogare ), Djonatas Tenfen com Sil-
verlight 4 ( @DjonatasTenfen ) e na área de
INFRA Agostinho com Windows Server
2008 R2 , Exchange 2010, Lucas Romão com
Windows 7 ( @LucasRomao ) e XXX com
System Center.

O Evento foi um sucesso maior do que o es-


perado pelos organizadores e já estão pen-
sando em um próximo que deve acontecer
em breve.

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 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 desenvolvi-
mento .NET e Silverlight. Trabalha como desenvolvedor C#
na empresa Benner Sistemas UNEP Logística, localizada na
cidade de Blumenau (SC). É lider da comunidade Silverli-
ght Brasil, colaborador e moderador das comunidades
Azure Services BR, WCF Brasil e colaborador ativo da Re-
vista The Club Megazine escrevendo artigos sobre .Net e
Silverlight.

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 87
Community Lauch Londrina e Maringá
Por: Márcio Fábio Althmann

Durante o mês de Abril, o SharpCode evento foi realizado na PUC em Londrina, e


www.sharpcode.com.br realizou 3 eventos foi mais uma edição do Londrina TechDay
do Community Lauch, nas cidades de Ma- www.londrinatechday.com.br.
ringá e Londrina no Paraná, através dos pa-
lestrantes André Nobre Fotos de Maringá
(www.andrenobre.com.br), Carlos dos San-
tos (www.carloscds.net) e Márcio Fábio Al-
thmann (www.marcioalthmann.net).

Em ambos os eventos André Nobre mostrou


as novidades algumas das novidades do Vi-
sual Studio 2010 e do .NET 4.0, com desta-
que a paralelismo, ClientID do ASP.NET 4.0
e tipos dinâmicos.

Carlos dos Santos mostrou as novidades do


Entity Framework 4.0, mostrando a evolu-
ção do mesmo, as novidades como suporte a
POCO, T4 templates, LINQ, geração de s-
cript através do modelo.

Márcio Fábio Althmann mostrou o que é o


Silverlight, histórico da tecnologia, exemplos
com SmoothStreaming, GPU Acceleration,
depois vieram as novidades do Silverlight 4
como suporte a WebCam e Microfone.

O primeiro evento foi realizado no SENAI


em Londrina pelo Londrina TechDay
www.londrinatechday.com.br , no CESU-
MAR em Maringá, foi a primeira edição do
Maringá TechDay
www.maringatechday.com.br, o segundo

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

Fotos de Londrina

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 89
Road Show em São Paulo
Por: Fernanda Sallai

No dia 20/03/2010 foi dada a largada para a Conteúdo apresentado:


copa de talentos da Microsoft através da rea-
lização simultaneamente de eventos em di- ♦ Novidades da IDE Visual Studio 2010
versas cidades do Brasil. ♦ Novidades do .NET Framework 4.0
♦ ASP.NET Web Forms 4
Em São Paulo, o grupo .NET Architects foi ♦ ASP.NET MVC
os organizadores do evento. ♦ Entity Framework 4.0
♦ TDD no Visual Studio 2010
O auditório ficou lotado. ♦ Diagramas de Arquitetura
♦ Linguagens e programação dinâmica

Palestrantes:

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

Algumas fotos:

Ficamos sabendo das novida-


des demonstradas e aproveitei pa-
ra conhecer amigos que sempre mantenho
contato pelo twitter, e-mail.

Parabenizo todos os palestrantes pelo exce-


lente material e preparação do evento.

As apresentações foram 100% práticas.


Demos e mais demos.

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 90
Mais fotos acesse:

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

Perguntas e respostas aconteceram para


finalizar as apresentações.

Além do conhecimento adquirido, no final


tiveram sorteio de brindes.

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

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 91
Community Launch em Piracicaba
Por: Fernanda Sallai

No sábado, dia 17/04 ocorreu o segundo ♦ Conheça o que te espera na plataforma


evento em Piracicaba e desta vez tive a pos- de Business Intelligence do SQL Server
sibilidade de comparecer. 2008 R2

A galera de São Paulo compareceu no Parabéns a todos os palestrantes: André Baltie-


evento: @FernandoDev, @fefesaraiva, ri , Lucas Romão, Evilázaro Alves, Felipe Prata
@thaissimonato, @DiegoNogare, @evilazaro Borges, Mayra Martho, Daniel Imamura, Israel
e eu (@fernandasallai). Aéce e Thiago Zavaschi pela excelentes pales-
tras e demos.
O Community Launch em Piracicaba aconte-
ceu na Faculdade Salesiana Dom Bosco e foi Algumas fotos:
organizado pelas comunidades Azure Servi-
ces BR e Inside Dot Net.

Todas as palestras foram bem explicadas e


demonstradas através de demos a suas apli-
cações.

Conteúdo apresentado:

♦ Criando Workflows de negócios com


Palestra do Evilázaro Alves.
Workflow Foundation 4.0
♦ Windows Azure com Visual Studio
2010
♦ ASP.NET MVC 2 e ADO.NET Entity
Framework 4.0
♦ Novidades do C# 4.0
♦ SharePoint como soluçao de negócios
(participação FTE da Microsoft Consul-
ting Services)
♦ Introdução ao Windows
Communication Foundation (WCF)
Galera reunida.

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 92
Palestra do Lucas Romão.

Palestra do Thiago Zavaschi.

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

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 93
Road Show em Belo Horizonte
Por: Ítalo Chesley

Devido à minha falta de familiaridade com a nível, apresentado, inicialmente, pela manhã e
geografia belorizontina, cheguei mais ou início da tarde pelo Renato, que abordou as
menos uma hora adiantado ao local do e- novidades do ASP.NET4, Entity Framework 4,
vento, o que não me foi mau porque pude ASP.NET Dynamic Data, ferramentas ofereci-
sentar na primeira fileira e pude aproveitar das no Visual Studio 2010 para facilitar a inte-
muito bem os primeiros momentos do even- gração de novos membros em equipe de de-
to. senvolvimento, ferramentas para testers e
montagem de UML. Depois, o Alex Schulz,
A título de informação, Belo Horizonte/MG, demonstrou muitas novidades do SharePoint
foi à décima segunda cidade por onde o e- 2010, que, inclusive nos auxiliarão muito no
vento Road Show passou, e, segundo os pa- desenvolvimento de aplicações nesse modelo,
lestrantes e organizadores, até o dia 29 de e, em todo o tempo, com o foco voltado à solu-
abril, data do evento, Belo Horizonte foi à ção do problema da nossa empresa.
cidade onde teve o maior índice de partici-
pação, tendo por volta 400 participantes ins- Na parte de Infra estrutura, foram abordados
critos. Windows Server 2008 R2, Windows7, Exchan-
ge Server 2008, SharePoint 2010 e SQL Server
Na abertura, Rodrigo Dias e Renato Had- 2008 R2.
dad falaram sobre o cenário de uma empre-
sa fictícia e o problema que essa empresa Tinha perspectivas de fato muito boas em rela-
enfrentava relacionado à TI. O Renato, fez ção a esse evento, até porque estava me prepa-
algumas abordagens acerca do que nós, com rando para ele a um mês, tendo em vista que
o desenvolvimento, poderíamos fazer para me desloquei da minha cidade Governador
otimizar o negócio do nosso cliente, e, por Valadares (250 km de BH) para participar do
suas vez, o Rodrigo o fez, falando de Infra evento, todavia, me surpreendi com a força
Estrutura. que a comunidade.NET tem em nossa região,
com a vontade das pessoas em participar, com
Depois desse primeiro momento nos dividi- a animação de todos ao verem as demonstra-
mos em duas salas, a saber: Infra e Dev. ções, com as dúvidas, principalmente de cu-
nho prático e muito mais: é indescritível! O
Na parte de Desenvolvimento, onde eu par- time de palestrantes se mostrou muito bem
ticipei durante todo o tempo das palestras, preparado com demonstrações muito profun-
pudemos contar com um conteúdo de alto das de novidades bastante recentes, o que, dia-

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 94
Ítalo Chesley
É graduando em Análise e Desenvolvimento de Sistemas,
pela Universidade Vale do Rio Doce. Já integrou equipes de
suporte de sistemas em Delphi. Atualmente trabalha com
Desenvolvimento de Sistemas em ASP.NET, Windows
Forms e WPF e compõe a equipe de Desenvolvimento da
UNIVALE, como estagiário.
Mantém o blog http://italochesleytech.wordpress.com.
Participa ativamente de Comunidades de Desenvolvimento.

www.codificando.net Abril
Abri// Maio
Mai - 2009
2010 | 95
e-magazine

MVC – verdades e mentiras


Por: Alexandre Tarifa

O ASP.NET MVC chegou para ser mais um nologias evoluam em paralelo e claro que uma
item no leque de opções de soluções tecnoló- aproveitando a experiência da outra.
gicas de desenvolvimento oferecido pela pla-
taforma .Net, e no final das contas, muitas O ASP.NET Web Forms herda características
pessoas encaram ele como um concorrente do que o ASP.NET MVC trazia, como: rotas, con-
ASP.NET Web Forms... Isso não é verdade! trole maior de HTML, controle sobre nome de
controles, etc... porém ainda existem ca-
Mentira número 1: o ASP .NET MVC não é a evolução do racterísticas que diferem totalmente uma
ASP.NET Web Forms! da outra, como: controle total do HTML
Mentira número 2: o ASP.NET MVC não vai descontinuar de for- no caso do ASP.NET MVC, ciclo de car-
ma alguma o ASP.NET Web Forms!
regamento da página gerenciável no
ASP.NET Web Forms.
Verdade: o ASP.NET MVC é mais uma possibilidade no desen-
volvimento ASP.NET, inclusive o ASP.NET MVC e Web Forms
tem o mesmo core entre eles... o ASP.NET Core.
Verdade final ☺

Também é muito comentado o assunto produ- Quem for um desenvolvedor web e utiliza o
tividade... ouvimos por ai que “x” ou “y” é ASP.NET tenha certeza que a plataforma evo-
mais produtivo do que o outro. lui e evoluirá cada vez mas... o Core do
ASP.NET é incrivelmente poderoso e
Mentira número 1: O ASP.NET MVC não é mais produtivo do que cada vez se tornará mais. Os desenvol-
o ASP.NET Web Forms vedores ganham muito com essas pos-
Mentira número 2: O ASP.NET Web Forms não é mais produtivo sibilidades e o ideal é que tenhamos um
do que o ASP.NET MVC bom conhecimento das possibilidades
para que as escolhas não sejam feitas de
Verdade: as duas tecnologias proporcionam recursos de produtivi- forma inadequada.
dade e são desenvolvidas no Visual Studio 2010/2008. O índice de
produtividade vai da experiência da equipe e pessoas... em seis
Não escolha uma tecnologia “x” por
meses com ASP.NET MVC, uma equipe não vai ser mais produti-
modismo... justifique, venda para você
va do que outra com um ano de experiência em ASP.NET Web
Forms e vice-versa. mesmo a idéia que aquilo será bom ou
não para o projeto/cliente e como já dis-
O poder das duas tecnologias é muito grande, se outras vezes... ASP.NET MVC ou ASP.NET
inclusive uma possibilidade e uma tendência Web Forms? Tanto faz, desde que seja .NET
muito grande é que cada vez mais as duas tec-

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