dotNET42 Final PDF
dotNET42 Final PDF
dotNET42 Final PDF
Corpo Editorial
Diretor Editorial e Administrativo
Atendimento ao Leitor
A DevMedia conta com um departamento
Gladstone Matos
[email protected]
Direo de Arte
Vinicius O. Andrade
[email protected]
Reviso
Rafael de Castro
[email protected]
www.devmedia.com.br/.NET
Kaline Dolabella
Gerente de Marketing e Atendimento
[email protected]
(21) 2220-5375
Publicidade
Na Web
Editor Geral
Guinther Pauli
[email protected]
Editor Tcnico
Luciano Pimenta
[email protected]
Distribuio
Fernando Chinaglia Dist. S/A
Rua Teodoro da Silva, 907
Graja - RJ - 206563-900
contato com:
Jeff Wendell
[email protected]
Apoio
EDITORIAL
O AJAX representa a segunda gerao dos aplicativos para Web, focados na
colaborao entre pessoas, um dos pilares da Web 2.0. No falamos apenas
de uma evoluo na plataforma Web, mas de uma mudana profunda em
como os aplicativos so escritos. Tecnicamente falando, o AJAX permite a
comunicao assncrona de pginas com o servidor Web, permitindo ainda
a atualizao parcial de pequenas pores da tela, ao invs do refresh total.
Aliado a uma srie de novos recursos baseados em AJAX (como por exemplo
o AJAX Control Tool Kit para ASP.NET), suas aplicaes vo ser semelhantes
a aplicaes Desktop e agora sim, cada vez mais veremos sistemas sendo
escritos para Web e no mais para Desktop. A partir desta edio, entre nesse
novo mundo e faa seu conceito de desenvolvimento tambm mudar de
verso, porque o AJAX no s veio para ficar, mas para revolucionar, como vai
comprovar o Rogrio em sua srie de artigos.
Outra tecnologia que veio para revolucionar, presente no .NET 3.0, o que
chamamos de LINQ (Language Integrated Query).Trata-se de uma linguagem,
que voc pode usar no C# 3.0 (ou VB.NET) e permite de uma nica forma
consultar dados vindos de diferentes tipos de fontes: banco de dados, XML
e at mesmo objetos! Exato, voc pode tratar suas colees como tabelas e
usar o LINQ (que age como uma espcie de SQL) para obter dados, fazendo
selects com from, where, join e ainda mais. Conhea esse projeto no artigo
do Diego e construa suas primeiras aplicaes com essa revolucionria
linguagem, criada por Anders Hejlsberg (o mesmo personagem que criou o
Turbo Pascal, Delphi e C#).
Falando em melhorias, o ASP.NET contm uma variedade muito grande
de componentes. Mas algumas vezes sentimos falta de um controle
personalizado, que realize uma tarefa especfica no suprida pelo framework.
O Sendin mostra em seu artigo alguns excelentes componentes para
incrementar suas pginas ASP.NET: FreeTextBox, ASPNetVideo e um super
grid da DevExpress.
Ainda sobre Web, vamos falar em integrao. muito fcil usar SOAP para
trocar dados em XML ou usar servios de sistemas rodando em diferentes
plataformas. Mas e quando o XML e SOAP ficam de fora, como voc faria
para obter informaes e trocar dados com um sistema baseado somente em
pginas? No artigo que preparei para esta edio, mostro uma interessante
tcnica para permitir a obteno de dados a partir de pginas Web, fazendo
requisies HTTP programaticamente.
Ainda nesta edio, o Thiago mostra como aumentar a produtividade da
equipe de desenvolvimento criando templates de projeto e StarterKits.
Com esses recursos, possvel definir um projeto (ou mesmo soluo) que
funciona como modelo para todas as aplicaes da empresa, de forma que
quando um desenvolvedor inicie um novo projeto, ele no comece do zero,
mas do cdigo e design j implementados no template.
Falando em facilidades do Visual Studio, que tal fazer um check-up no seu
cdigo-fonte para ver como ele anda? Voc usa corretamente os padres
definidos pela Microsoft para o estilo de cdigo? O Code Analysis do
Visual Studio permite fazer uma auditoria completa no seu cdigo-fonte,
observando no s o item que comentei anteriormente, mas fazendo uma
verificao nas mais diversas reas. Para finalizar a edio, Luciano Pimenta
mostra super dicas para turbinar o seu GridView. Para finalizar, confira um
artigo sobre Microsoft Solutions Framework, por Fbio Cmara.
Boa leitura e muito sucesso com o ASP.NET AJAX!
NDICE
Guinther Pauli
[email protected]
Editor Geral
Microsoft Certified: MCP, MCAD, MCSD.NET
Borland Certified: Delphi 6, 7, 2005, 2006, Web, Kylix
.NET Magazine
60 - Dicas de GridView
Luciano Pimenta
Novidade
s do port
al .net PL
US
om.b
www.de
vmedia.c
r/dotnet
+330 vd
eo aulas!
6 cursos
online
Cursos Online
Caro Leitor,
Temos uma novidade: Agora, o assinante da revista .net Magazine
possui uma assinatura de contedo .net PLUS.
Crie uma loja virtual completa com ASP.NET [Autor: Fbio Galante]
O portal .net PLUS recebe um contedo novo todo dia e hoje conta
com: I) mais de 300 vdeo-aulas; II) 6 cursos online gratuitos; III)
artigos exclusivos (que no foram publicados na revista)!;
Acesse o portal .net PLUS e receba muito mais contedo sobre
tecnologias Microsoft!
Equipe DevMedia
ltimas Vdeo-Aulas
Criao de classes;
AJAX Popups
Veja nessa vdeo aula de Guinther Pauli, como exibir popups em aplicao
ASP.NET com AJAX.
Cast e Boxing;
.NET Brasil
Windows Vista
LINQ
Essa talvez seja a novidade mais significativa que vir. Para quem no conhece,
o LINQ (Language Integrated Query) um
projeto da Microsoft que estende as linguagens C# e VB.NET, para simplificar o
modo como escrevemos queries de acesso
a dados (banco de dados ou XML).
Liderado por Anders Hejlsberg (criador
do Turbo Pascal, Delphi e C#), o LINQ
um projeto que deve revolucionar o
modo como escrevemos queries em nosso
cdigo. bvio que h muito mais sobre
o projeto LINQ, portanto sugiro que
voc d uma boa olhada no site oficial:
msdn2.microsoft.com/en-us/netframework/
aa904594.aspx.
Melhorias no Gerenciamento do
Ciclo de Vida da Aplicao (ALM)
Rodrigo Sendin
([email protected])
Encarando o Desenvolvedor
Eu vejo a Luz
O
Mauro SantAnna
([email protected])
um crente de primeira hora na tecnologia
SmartClient, mas que foi repetidamente trado
por ela.
Cursos Online
Assinatura
Curso em destaque
Aprenda a criar um
blog com ASP.NET
Curso de C#
* Curso em andamento
Consultor e Instrutor de Tecnologia da Informao. Trabalha com consultorias e treinamentos nas plataformas .NET e Java.
10
O que AJAX?
Assim como DHTML (Dynamic HyperText Markup Language) e SPA (Single Page
Application), o AJAX no uma tecnologia, mas sim um termo que representa
Web 2.0
O termo Web 2.0 no possui uma definio formal, mas comumente usado para
se referir a aplicaes Web que encorajam
interao social e contribuio coletiva
para o bem comum. O termo tambm
usado para se referir a tcnicas de programao Web que tm como principal
objetivo fornecer uma interface rica e
amigvel. Atualmente, o conjunto dessas
tcnicas de programao Web tem sido
comumente denominado AJAX.
11
Criando o exemplo
O que o W3C?
12
XML 1.0
13
14
Objeto XMLHttpRequest
READY_STATE_UNINITIALIZED = 0;
READY_STATE_LOADING = 1;
READY_STATE_LOADED = 2;
READY_STATE_INTERACTIVE = 3;
READY_STATE_COMPLETE = 4;
if (window.XMLHttpRequest)
{
//Mozilla 1.0+, Netscape 8.0+, Firefox 1.0+, Safari 1.2+, Internet Explorer 7.0+
xRequest = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
//Internet Explorer 5.0, 5.5, 6.0
var progIDs = [MSXML2.XMLHTTP.6.0, MSXML2.XMLHTTP.4.0, MSXML2.XMLHTTP.3.0,
MSXML2.XMLHTTP, Microsoft.XMLHTTP];
for (var i = 0; xRequest == null &&
i < progIDs.length; i++) {
xRequest = new ActiveXObject(progIDs[i]);
}
}
return xRequest;
if (req)
{
req.onreadystatechange = metodoCallback;
req.open(metodoHTTP, url, true);
req.setRequestHeader(Content-Type, application/x-www-form-urlencoded);
req.send(parametros);
}
else
{
alert(Objeto XMLHttpRequest no suportado pelo +browser.);
}
15
16
DOM Level 3
twPedidosMesAno.Write(string.Format([{0}],
string.Join(,\n, arrayObjetosJson.ToArray())));
JSON
System.Collections.Generic;
System.Data.SqlClient;
System.IO;
System.Text;
if (twPedidosMesAno != null) {
twPedidosMesAno.Close();
}
17
18
Finalizao da aplicao de
demonstrao
19
cnAdventureWorks.Open();
drPedidosPorEmpregadoMesAno = cmPedidosPorEmpregadoMesAno.ExecuteReader();
gvPedidosPorEmpregadoMesAno.DataSource = drPedidosPorEmpregadoMesAno;
gvPedidosPorEmpregadoMesAno.DataBind();
20
if (drPedidosPorEmpregadoMesAno != null) {
drPedidosPorEmpregadoMesAno.Close();
}
if (cnAdventureWorks != null) {
cnAdventureWorks.Close();
}
Concluso
21
Diego Dias
([email protected])
22
O que LINQ?
.NET 3.0
um resultado idntico em situaes bem
distintas, como nos casos mencionados.
Quando se fala da linguagem LINQ,
podemos subdividi-la em trs mdulos,
sendo:
DLinq: Permite que sejam feitas consultas em banco de dados (ADO.NET);
XLinq: Permite que sejam feitas consultas em XML (System.XML);
Standard Query Operators: Permite que
sejam feitas consultas a objetos.
Esse recurso at o momento s est
disponvel nas linguagens C# e VB e
na verso CTP do Visual Studio (Orcas)
lanada em maro desse ano e que pode
ser baixada em: www.microsoft.com/downloads/details.aspx?FamilyId=CF76FCBA-07AF-47AC-8822-4AD346210670&displaylan
g=en#Instructions.
A Figura 1 mostra a estrutura da
LINQ.
Sintaxe da LINQ
Mais inovaes
Para que fique mais fcil o entendimento das query expressions acho interessante
23
Para comear temos que criar um arquivo do tipo DBML, onde sero definidas as
hierarquias e as possveis relaes entre
Agora que j vimos o que a LINQ, vamos ver como criar nossas prprias query
expressions. No cdigo a seguir, podemos
ver o uso de uma query expression para
selecionar alguns itens de uma coleo:
List<int> numeros = new List<int>{ 1, 2, 3,
4, 5, 6, 7, 8, 9 };
var resultado = from n in numeros
where (n % 2) == 0
select n;
24
new List<pessoa>{
= 22, nome=Diego},
= 28, nome=Renata},
= 52, nome=Rogerio},
= 52, nome=Ricardo},
= 33, nome=Reginaldo},
= 22, nome=Fabiano},
= 20, nome=Edson},
= 19, nome=Edson},
= 33, nome=Eduardo},
= 33, nome=Eduardo},
= 22, nome=Eduardo}};
.NET 3.0
as tabelas que foram selecionadas, esse
um conceito muito similar ao de um
DataSet tipado e at de um TableAdapter.
Depois que o arquivo DBML criado,
ele gera uma interface grfica, para onde
devem ser arrastadas as tabelas existentes
na conexo criada no Server Explorer e
mais dois arquivos, sendo que um deles
tem a extenso .CS.
Esse arquivo contm toda a definio
das colunas das tabelas, hierarquia e
relacionamentos. As Figuras 2 e 3 ilustram a criao e a seleo de uma tabela
do banco de dados, que nesse caso a
tabela Usuario.
Agora preciso definir um objeto como
mostrado a seguir para que possamos
manipular as tabelas existentes no objeto
DataClasse.
DataClasses1DataContext db =
new DataClasses1DataContext();
}
}
public class Pedido
{
public int PedidoId;
public Cliente Cliente;
public DateTime OrderDate;
public double Total;
25
26
.NET 3.0
flexibilidade necessria para unir a manipulao de arquivos XML e a LINQ.
O cdigo anterior cria um arquivo XML
com todos os dados dos clientes de nossa
fonte de dados. Um ponto importante
nesse cdigo a forma descritiva e at
bvia do seu objetivo, o que facilita muito
uma possvel manuteno.
Agora eu vou complicar um pouco,
vamos supor que ser implamantado
um sistema de gesto na sua empresa e
o sistema precisa dos dados de clientes
e seus respectivos pedidos, porm esses
dados devem ser passados ao sistema
em formato XML. O cdigo da Listagem
8 traz uma possvel soluo para esse
problema utilizando XLinq.
A Figura 8 ilustra o resultado do cdigo
proposto para criao de um arquivo
XML com dados de clientes e seus respectivos pedidos.
Concluso
Referncias
Projeto LINQ
msdn2.microsoft.com/en-us/netframework/aa904594.aspx
Artigo de Anders Hejlsberg sobre a LINQ
msdn2.microsoft.com/en-us/library/aa479865.aspx
Download do Orcas
www.davidhayden.com/blog/dave/archive/2007/02/28/
VisualStudioOrcasMarch2007CTP.aspx
LINQ
w w w. m i c ro s o f t . co m / d o w n l o a d s / d e t a i l s . a s p x ?
FamilyID=1e902c21-340c-4d13-9f04-70eb5e3dceea&
DisplayLang=en
Figura 8. Arquivo XML com dados dos clientes criado com a utilizao de XLinq
27
Rodrigo Sendin
([email protected])
28
ASPNetVideo
as p.NET
de setup. muito importante que o Visual
Studio esteja fechado nesse momento.
Uma outra caracterstica que voc tem
que observar sobre o componente, se
ele fcil de instalar. Veja que o setup do
ASPNetVideo tranqilo. Aps o trmino
da instalao abra o Visual Studio 2005 e
crie um novo projeto ASP.NET.
Na ToolBox temos os controles disponveis. essencial que a instalao dos componentes j disponibilize os controles na
ToolBox. Como mostra a Figura 1, temos
uma nova seo chamada ASPNetVideo,
e nela temos trs novos componentes,
chamados: QuickTime, WindowsMedia e
RealPlayer.
claro que cada um deles utilizar o
software de cada um dos respectivos
fabricantes. Vamos fazer um teste com
o WindowsMedia. Arraste-o para a pgina Default.aspx. Todo componente de
terceiro que se preza tem que permitir
configur-lo pela janela de propriedades,
ou melhor ainda, tem que disponibilizar
as principais configuraes na Smart Tag
do controle.
Do que adianta investirmos em um
componente de terceiro se vamos ter
trabalho com codificao? Esse um dos
pontos fundamentais que voc precisa
avaliar antes de decidir pela compra do
componente.
Veja na Figura 2 as opes disponveis
na Smart Tag do controle WindowsMedia.
Podemos definir o tamanho que o vdeo
ocupar na janela, podemos definir a
propriedade AutoPlay, Loop Count etc. E
principalmente, podemos definir aqui,
qual o vdeo que ser exibido, claro.
Para o nosso exemplo estou mudando
o tamanho do vdeo para Width = 450px
e Height = 400px. Em seguida clique no
FreeTextBox
29
30
as p.NET
a do Word, para a formatao de textos.
Veja que voc pode formatar o tipo da
fonte, trocar o tamanho, cor, pargrafo,
incluir figuras etc. Enfim, um timo
editor de texto para a Web. O resultado
dessa formatao um cdigo HTML,
que voc pode conferir na aba HTML na
parte inferior do controle.
E para utilizar esse cdigo HTML gerado pelo controle, basta acessar a propriedade Text do mesmo. Assim, em uma
aplicao como um Blog, esse controle
muito til. Imagine criar todas essas
funcionalidades do zero?
Nota: ao inserir texto HTML como entrada de dados, lembre-se de configurar
o atributo ValidateRequest da pgina
para False.
DevExpress: ASPxGrid
Acesse agora o mesmo o Portal .net Plus e assista a uma vdeo aula
de Fabio Galante, que mostra como trabalhar com o FreeTextBox em
aplicaes ASP.NET.
www.devmedia.com.br/articles/viewcomp.asp?comp=3327
31
32
as p.NET
33
www.devmedia.com.br/msdn/portal.asp
Acesse agora o mesmo o Portal .net Plus e assista a uma vdeo aula de
Luciano Pimenta, que mostra uma srie de aulas sobre o componentes
DevExpress.
www.devmedia.com.br/articles/listcomp.asp?txtsearch=DevExpress
34
as p.NET
As opes de Search tambm podem ser
configuradas no Designer.
E a minha funcionalidade preferida, o
agrupamento. Clique no cabealho da
coluna Country e arraste-a para a rea
superior do Grid, onde est escrito Drag a
column header here to group by that column.
Veja que os registros foram agrupados
pela coluna escolhida (Figura 15).
Essa, sem dvida, uma funcionalidade
muito interessante, e que ajuda muito o
usurio final. Voc pode agrupar o Grid por
qualquer uma das colunas e ainda realizar
agrupamentos mltiplos. O que eu pude
observar quando testei esse Grid e os outros
componentes da DevExpress a quantidade
de configuraes que temos disponveis.
Isso um grande diferencial, pois
permite personalizar o componente da
forma que precisamos, tornando-o bem
portvel para as nossas aplicaes.
Concluso
tem que avaliar verificar qual o comprometimento que a empresa tem com a
evoluo da tecnologia. Ou seja, quando
sair outra verso do .NET, sair outra
verso dos componentes? Tente conhecer
outras empresas que usam o componente
que voc quer comprar, oua a opinio
delas. Procure em fruns e comunidades
35
Guinther Pauli
([email protected])
36
Boa idia
o via WS. bem mais simples receber
dados em XML e process-los com um
parser (atravs das classes do .NET).
Mas a realidade mostra um cenrio
totalmente diferente. Quase tudo o que
vemos baseado em HTML (browser) e
no XML, o que significa que para usar
determinado servio de outra empresa,
voc precisa abrir um browser, preencher
informaes e consultar. Isso d um fim
ao processo que precisaria ser feito de
forma automtica. Ou pelo menos deveria, at voc ler este artigo.
Quando usamos um browser para utilizar um servio de uma empresa, estamos
usando o que chamamos de intercmbio
B2C (Businness to Consumer - pt.wikipedia.
org/wiki/B2C). O usurio final responsvel por obter a informao de um browser
que recebe HTML.
Quando a comunicao feita de forma
automtica por um sistema via WS e
XML, e o usurio final acessa o servio
via nossa aplicao e no diretamente o
servio, dizemos que a comunicao
feita atravs de B2B (Businness to Business
- pt.wikipedia.org/wiki/B2B).
Por exemplo, se voc acessa o site da DevMedia para comprar edies de revistas
anteriores que por ventura no tenha em
sua coleo, est usando o B2C. Se est,
por exemplo, usando o WS dos Correios
(veja edio 36) para exibir dados de
endereo do cliente em seu sistema, est
usando B2B.
Mas onde quero chegar com toda essa
introduo? O fato que precisamos cada
vez mais construir aplicaes B2B para
agregar funcionalidades as nossas aplicaes, porm, infelizmente, a maioria
das coisas que encontramos hoje na Web
no so disponibilizadas na forma de WS
(B2B), mas somente para usurios finais
atravs de um browser HTML (B2C).
O que nos resta criar um mecanismo
para usar servios B2C como se fossem
B2B.
Nota: Como aplicaes Web so totalmente dinmicas, e pelo fato dos exemplos fazerem parse manual do cdigo
HTML, possvel que deixem de funcionar caso o fornecedor do servio modifique por algum motivo o seu layout ou
simplesmente o endereo da pgina.
No entanto, no endereo para download deste artigo, voc sempre encontrar verses atualizadas e funcionais para
os exemplos aqui apresentados.
Advertncia
No o objetivo deste artigo demonstrar exemplos para
uso ilcito da tecnologia, como fazer mau uso de servios
oferecidos por empresas, sobrecarregar servidores - D.O.S,
preencher cadastros com dados falsos, burlar votaes online, fazer spam automtico etc.
O objetivo nico e principal aqui mostrar como voc
pode integrar suas aplicaes com Web Sites que forneam
servios teis.
37
Preenchendo formulrios
automaticamente
38
Boa idia
Ainda no WebRequest, precisamos enviar os respectivos Fields, que nada mais
so que os campos do formulrio. No
caso da traduo do Google, o campo
que indica o tipo de traduo a ser feita
e o texto a ser traduzido. Note que para
isso usamos um array de bytes e passamos
como parmetro para o Write do objeto
Stream.
O mtodo ExtractTranslation extrai o
contedo da traduo a partir da string
de retorno, e mostrado na Listagem 4.
O resultado da aplicao em execuo
mostrado na Figura 4.
Voc pode facilmente adaptar este
exemplo para outros tipos de formulrios
que tenham campos diferentes. Nesse
caso, precisar apenas identificar, alm
da URL de postagem, que campos o form
precisa receber como parmetro.
Isso pode ser obtido verificando-se o
cdigo-fonte da pgina HTML, veja, por
exemplo, na Figura 5 como obtivemos
acesso aos campos do formulrio de
traduo.
Observe pela Figura 5 que podemos obter os detalhes do form, como a URL onde
precisamos dar o POST. Note tambm
que os campos ficam dentro do elemente
form, uma boa dica para voc procurar no
extenso HTML quais os campos precisa
fornecer, que nesse caso so dois, chamados de text e langpair.
Temperatura
39
40
Boa idia
que a imagem. Usando um FileStream,
salvamos a imagem no disco.
A aplicao final em execuo mostrada na Figura 9.
Concluso
Agora voc j pode integrar sua aplicao com os mais variados tipos de Web Sites, basta usar a imaginao. Por exemplo,
por aqui j criamos um aplicativo que se
comunica com o Orkut, enviando scraps e
obtendo informaes sobre contatos.
Tambm uma aplicao que a partir dos
dados do cliente, exibe um mapa com a localizao exata da quadra, rua e nmero.
Colocamos esse ltimo disponvel para
download. Tudo usando preenchimento
programtico de formulrios.
bem provvel que alguns dos servios
aqui demonstrados estejam disponveis
via WebServices, mas conforme comentei, o objetivo e propsito deste artigo
foi considerar esses sites como modelos,
como objetivo de estudo, para que agora
voc possa criar seus prprios aplicativos
que consomem servios baseados em
Web Sites. Quem sabe at mesmo a idia
exposta na introduo deste artigo.
Bom, eu no tenho dvida que precisaria de um outro artigo ou talvez a
revista inteira, sem exagerar s para
listar a imensido de possibilidades do
que pode ser feito com o que foi demonstrado nestes exemplos. Toda a Web est
nas mos do seu cdigo.
Agora use a imaginao, expresse-a no
cdigo e veja os resultados. Bom proveito
e at a prxima!
41
s desenvolvedores de software
deparam-se frequentemente
com o termo produtividade.
A maioria das empresas, objetivando satisfazer bem seus clientes, busca agilizar
o desenvolvimento reduzindo sempre
que possvel o tempo de produo, sem
perder claro a qualidade.
Diante desse cenrio, venho demonstrar
como podemos criar nossos prprios
templates e StarterKits de projetos, usando
o Visual Studio 2005, favorecendo a rapidez, no que tange o desenvolvimento de
novas solues. Antes de comear nosso
exemplo, vou descrever os conceitos
sobre os objetos de trabalho que aprenderemos neste artigo.
Thiago Miranda
([email protected])
42
VisuaL s Tudio
tanto abra o Visual Studio 2005 e acesse
o menu File>New>Web Site. D nome ao
projeto de ProjetoStarterKit e salve-o
num diretrio chamado MultiplosProjetosTemp (Figura 1). A Figura 2 representa a estrutura bsica que usaremos como
template para a criao do Starterkit.
Adicione nessa soluo dois projetos
do tipo ClassLibrary. Clique com o boto
direito na Solution, depois selecione
Add>New Project>Class Library e salveos no diretrio criado anteriormente,
chamando-os de ClassLibrary1 e ClassLibrary2 (Figura 3).
Deixe no projeto ClassLibrary1 uma
nica definio de classe chamada Class1
e exclua a classe existente no projeto ClassLibrary2. Com o objetivo de demonstrar
que qualquer recurso existente na plataforma .NET pode ser adicionado a um
43
44
VisuaL s Tudio
diretrio temporrio, por exemplo (C:\
Temp). Nesse diretrio, descompactaremos todos os arquivos de template
que acabamos de exportar, sendo que
cada arquivo descompactado dever
ser armazenado dentro de seu diretrio
especfico.
Portanto, remova os trs arquivos de
template zipados para dentro do diretrio C:\Temp. Descompacte-os em seus
diretrios especficos e logo em seguida,
exclua os trs arquivos zipados, pois no
vamos mais precisar deles. Portanto, o
diretrio C:\Temp dever conter apenas
os trs diretrios (Figura 11).
Estrutura do template
45
Propriedade
Descrio
Name
DefaultName
Nome default para um novo projeto criado a partir de um template (pode ser alterado pelo usurio
antes da criao).
Description
ProjectType
Tipo de projeto.
SortOrder
CreateNewFolder
Define se ser criada uma nova pasta para o projeto quando o mesmo for criado.
LocationField
EnableLocationBrowseButton
Icon
ProjectTemplateLink
Especifica o arquivo de configurao (vstemplate) dos projetos que faro parte do template.
46
VisuaL s Tudio
o menu File>New>Project. Na janela que
se abre, selecione a opo Visual C# no
Project types, selecione o template que
acabamos de criar, que est localizado na
seo My Templates (Figura 13).
Escolha um nome e um diretrio que
quiser e pressione OK pra criar uma nova
soluo. Veremos ento que a soluo
ser criada contendo trs projetos, sendo
eles Web, ClassLibrary1 e ClassLibrary2,
conforme havamos definido no incio
deste artigo.
Criando o StarterKit
47
</Content>
</VSContent>
48
VisuaL s Tudio
Terminada a instalao, vamos testar
o template criando uma nova soluo. No Visual Studio, acesse o menu
File>New>Project e veja que o template
exibido na seo My Templates. Selecione-o, defina um nome e tambm um
diretrio para salv-lo.
As Figuras 20 e 21 ilustram os processos
de criao e compilao realizados com
sucesso, referentes nova soluo.
Concluso
Propriedade
Descrio
FileName
Nome do arquivo de template (ZIP) que contm os diretrios dos projetos mais o arquivo (vstemplate).
DisplayName
Description
FileContentType
ContentVersion
Verso do starterkit.
Attributes
Referncias
MSDN How to: Create Starter Kits (ingls)
msdn2.microsoft.com/en-us/library/ms364046(vs.80).aspx
MSDN Wiki Introduo aos Starter Kits (portugus)
msdnwiki.microsoft.com/pt-br/mtpswiki/ms247071
(VS.80).aspx
Figura 21. Nova soluo criada a partir do template e compilada com sucesso
49
Penihel Roosewelt
([email protected])
50
VisuaL s Tudio
recursos da CLR e do Garbage Collector
e tambm boas prticas para uso de
multi-threading;
Security (24 regras): Regras tambm
muito importantes que tratam de brechas
de segurana causadas por cdigo sem
boas prticas;
Usuais (40): Regras gerais para boas
prticas Microsoft.
Depois de ver tantas regras, voc deve
estar pensando, mas agora, vou levar dois
meses para deixar meu cdigo aprovado
por essa ferramenta! Porm voc pode
configurar apenas que regras especficas
voc deseja aplicar.
Hoje em dia essa ferramenta conhecida com Code Analysis, vem junto com o Visual Studio Team Edition for Developers,
porm no existe nas verses Standard e
Professional.
Um dia, na era .NET 1.1, era conhecida
como FxCop, mas ainda existe uma verso
que pode ser usada em uma GUI separada. O FxCop pode ser acessado em: www.
gotdotnet.com/Team/FxCop.
Mo na Massa
media.techtarget.com/digitalguide/images/
Misc/professionalvsts_ch08.pdf para mais
informaes.
51
Habilitando o CA
52
Executando o CA
VisuaL s Tudio
XML de documentao
Corrigindo erros
53
Ignorando regras
[assembly: System.Diagnostics.CodeAnalysis.
SuppressMessage("Microsoft.Usage",
"CA2209:AssembliesShouldDeclareMinimum
Security")]
Linha de comando
54
O FxCopCmd pode executar qualquer tarefa que existe no IDE, pois o IDE chama
essa ferramenta passando vrios parmetros. O CA (ou FxCop) faz anlises no no
cdigo-fonte, mas sim no Assembly.
Porm o Visual Studio deixa isso transparente para o desenvolvedor, que pode
ter a impresso que a ferramenta analisa
o cdigo-fonte. Vamos supor que o projeto j est compilado atravs do CodeAnalysisClassLibrary.dll, olhe um exemplo
de como fazer essa anlise atravs da
linha de comando:
FxCopCmd.exe /f: CodeAnalysisClassLibrary.dll /o:
C:\reportresult.xml /s
VisuaL s Tudio
o resultado da anlise.
O ltimo parmetro /s indica que o
resultado deve ser mais simplificado e
que as informaes sejam mostradas em
uma forma mais resumida.
Concluso
Links
FxCop
www.gotdotnet.com/Team/FxCop
In Source Suppression Overview
msdn2.microsoft.com/en-us/library/ms244717(vs.80).aspx
Criar regras para o Code Analysis
media.techtarget.com/digitalguide/images/Misc/
professionalvsts_ch08.pdf
Microsoft .NET Framework Design GuideLines
msdn2.microsoft.com/en-us/library/ms229042.aspx
Reflection
msdn2.microsoft.com/en-us/library/system.reflection.aspx
55
Microsoft
Framework
Fbio Camara
(www.fcamara.com.br)
56
metodologia de vanguarda.
Historicamente, a Microsoft sempre
teve muito cuidado para evitar que o MSF
virasse uma metodologia. Por isso, eu
quero dizer que a adoo de MSF nunca
designou a compra de ferramentas caras,
modelos etc., ou a adoo de processos
altamente prescritivos e detalhados.
Ao invs, MSF conscientemente mostrava direes para prover orientao e
princpios dos quais podem ser agregados a uma variedade metodologias de
forma discreta. Isso inclui, por exemplo,
os famosos processos de metodologias
como DSDM e RUP.
Se analisarmos habilmente, concluiremos que para a dcada de 90 essa abordagem fazia todo sentido. A Microsoft
destinava seus esforos para atender
suas prprias necessidades de processos
e no compreendia como til destinar
investimentos para formalizar o MSF
como uma metodologia one size fits all
approaching.
Projeto/Anlis e
Na minha leitura, est a razo que mais
me agrada em usar MSF em meus desafios,
pois foi uma metodologia criada em cima
de necessidades especficas e reais, mesmo
considerando que a Microsoft no uma
empresa de desenvolvimento comum.
Hoje a proposta da Microsoft ao promover MSF para metodologia fundamentada pela compreenso da necessidade
real de utilizarmos um mecanismo que
maximize a comunicao e os princpios
de melhores prticas de desenvolvimento, testes e controle de forma integrada.
Antes de chegar nessa dimenso de
maturidade, MSF passou por trs grandes
revises que representam significativamente a evoluo como um framework
para o desenvolvimento de projetos.
Nessa ltima reviso foram criadas duas
instncias da verso 4.0: MSF for Agile
Software Development e MSF for CMMI
Process Improvement.
Eu acredito que MSF agora representa
uma significativa mudana na atitude
Microsoft, principalmente pela transparncia na definio dos mtodos, papis
e processos.
Destaco positivamente tambm a integrao com as ferramentas Visual Studio,
que marca a histria do MSF como um
divisor de guas. Em outras palavras,
ser ensinado nos livros o que MSF pr
VSTS (Visual Studio Team System) e o que
MSF ps VSTS.
MSF e os princpios de
desenvolvimento gil
User Experience
Business Analyst
Product Manager
Business Analyst
Program Manager
Release Manager
Release Manager
Tester
Tester
Developer
Developer
???
DataBase Professional
57
Definindo agilidade
Invista em Qualidade.
Entrega em Verses.
58
proJETo/aNLis E
tal, Auto-Organizante e Emergente
Fonte: [Boehm et al., 2002]
maneira [...].
Para os propsitos de manuteno de
expanso depois da entrega do software,
a melhor resposta ter cdigo auto-documentante e gerar quaisquer documentaes suplementares automaticamente a
partir do prprio cdigo.
MSF 1.0 [1993]
Isso semelhante recomendao do
Robert Martin no tocante documentao
para projetos geis: No produza nenhuma documentao a no ser que a necessidade seja imediata e significante.
(Martin [2002])
MSF valoriza colaborao com o cliente ao invs de negociao de contrato.
Negociao de contratos essencialmente
algo que se faz ao desenvolver software
customizado. Para um mercado de massa,
isso no possvel, portanto Microsoft
teve de desenvolver as habilidades necessrias para ser bem sucedida. Isso
significa obter muito feedback dos clientes
para fazer um produto atraente para
milhes de pessoas.
O sucesso da Microsoft em usar princpios
de HCI (Human Computer Interaction) para
preencher as necessidades de usabilidade,
associados a uma estrutura de equipe determinada em funo de atender a critrios
de qualidade de satisfao do cliente, mostram que seu processo de desenvolvimento
voltado ao cliente, e que a colaborao com
estes utilizada intensivamente.
Por exemplo, a MSF determina que tanto
os papis Educao do Usurio e Gerncia
de Produto sejam representados em uma
equipe (esse ltimo preferencialmente por
um usurio). Tambm determina que todos
os outros papis sejam mapeados para objetivos de qualidade do ponto de vista do
cliente. Isso transparece na MSF como um
enfoque forte na satisfao do cliente.
Jim McCarthy foi at potico sobre isso:
Seu relacionamento com o cliente
como uma dana ou romance. Voc d
alguns passos (suas entregas e mensagens), e eles do passos em resposta, e
ento voc d mais passos. Voc deve
estar focado no fluxo de transaes, no
padro e direo totais, no somente na
ltima transao.
Tudo isso parte de se ter uma estratgia de tecnologia de mltiplas entregas
[...]. Se seus clientes sabem (ou sentem)
que voc vai ser pontual nas entregas,
que eles esto em uma viagem tecno-cronolgica com voc, que voc e eles esto
indo a algum lugar juntos, as expectativas
deles vo ficar mais ajustadas.
Idem, pgina 76.
MSF valoriza responder mudana
ao invs de seguir um planejamento.
Alm do conceito de Entrega em Verses
e desenho iterativo como maneiras de
lidar com mudanas de escopo, a filosofia de planejamento da MSF mostra sua
adaptabilidade:
Planejamento atravs da construo:
Um dos objetivos implcitos da MSF
ajudar organizaes a criar uma conexo
entre o processo de planejamento e o de
construo. Ao construir, uma empresa
ganha experincia tecnolgica assim como
um melhor entendimento de como a empresa est posicionada para absorver e dar
suporte tecnologia. O processo iterativo:
os processos de planejamento e construo
so ambos candidatos para aperfeioamento contnuo. Quer dizer, cada um contribui
ao refinamento do outro.
MSF 1.0 [1993]
Concluso
59
Dicas de GridView
Luciano Pimenta
([email protected])
60
Adicionando controles
Mo Na Mas s a
mostrando essas caractersticas, bem
como temos vdeos aulas no Portal do
Assinante.
Formate o GridView na opo que desejar e conecte ao banco de dados Northwind
que acompanha o SQL Server. Voc pode
usar outro banco de sua preferncia. Para
este exemplo, use os dados da tabela Customer (selecione apenas alguns campos).
Deixe o controle com a opo de paginao ativada (propriedade AllowPaging).
Acesse a propriedade Columns do GridView, adicione um campo do tipo TemplateField e clique em OK (Figura 2).
Acesse a Smart Tag do GridView e clique
na opo Edit Templates. Na seo ItemTemplate, adicione um CheckBox. Feche
o editor, rode a aplicao e veja os CheckBoxes adicionados ao GridView.
A primeira funcionalidade que usaremos saber que linhas foram selecionadas com o CheckBox. Adicione um boto
e um TextBox na pgina. No Click do boto
adicione o cdigo da Listagem 1.
O cdigo est comentado para um fcil
entendimento. O que fizemos foi criar
uma varivel do tipo StringBuilder (j
adicionando um texto inicial), percorrer
todas as linhas do GridView e procurar o
controle CheckBox que adicionamos via
template, com o FindControl.
Esse mtodo retorna um Control, ento fizemos um type cast para um CheckBox. Vale
salientar que o parmetro do FindControl
o nome do controle e o mesmo deve ser
digitado corretamente, claro.
Se o controle no for nulo (foi encontrado)
e estiver marcado (Checked), ento adicionamos na sb os valores das colunas 1 e 2.
Nota: As colunas do GridView comeam
com 0, sendo que a do TemplateField
contada tambm.
61
//se achou
if (ch != null)
{
if (ch.Checked)
{
//formata o tamanho, negrito e cor
row.Font.Size = 14;
row.Font.Bold = true;
row.ForeColor = Color.Red;
}
else
{
//volta ao padro
row.Font.Size = 12;
row.Font.Bold = false;
row.ForeColor = Color.Black;
}
}
Master/Detail
www.devmedia.com.br/msdn/portal.asp
Acesse agora o mesmo o Portal .net Plus e assista a uma vdeo aula de Luciano
Pimenta, que mostra como adicionar um DropDownList no GridView.
62
www.devmedia.com.br/articles/listcomp.asp?comp=2035
Mo Na Mas s a
Finalize o wizard e no GridView1 acesse
a Smart Tag, marcando a opo Enable
Selection.
Rode a aplicao, selecione uma linha
do GridView1 e veja que o GridView2
ser preenchido com os dados referente
aos itens da tabela pai (Order) (Figura 6).
Neste exemplo, eu configurei a consulta
do GridView2 para que trouxesse o nome
do produto.
63
Validaes
64
Mo Na Mas s a
Somatrio no rodap
Agrupamento
65
Concluso
66
31 de Agosto e
01 de Setembro
em So Paulo / SP
O Evento do desenvolvedor
Web e Wireless
Salas de Java
Salas de .NET
1 dia - 31 de Agosto
1 dia - 31 de Agosto
Sala 1
Sala 2
Sala 3
Sala 1
Sala 2
Sala 3
9:00-10:20
Desenvolvimento para
dispositivos mveis na
plataforma .NET 2.0 - Parte 1
10:30-11:50
Padres de Projeto
Java EE Parte 1
Desenvolvimento para
dispositivos mveis na
plataforma .NET 2.0 - Parte 2
Mini-curso de C# - Parte 1
12:00-13:20
Almoo
Almoo
Almoo
Almoo
Almoo
Almoo
13:30-14-50
Padres de Projeto
Java EE Parte 2
Desenvolvendo Gadgets
Corporativos para Windows
Vista
Novidades no Windows
Mobile 6
Mini-curso de C# - Parte 2
15:00-16:20
Struts2 - A Evoluo do
framework
Introduo ao Silverlight
Acionamento de dispositivos
eletro-mecanicos com Pocket
PC
ASP.NET Caching
16:20-17:00
BREAK
BREAK
BREAK
BREAK
BREAK
BREAK
17:00-18:20
JavaFX: interfaces em
Struts2 - Desenvolvendo uma
aplicao com ajax e validao Java de forma fcil e
portvel Parte 2
Parte 1
18:30-19:50
Otimizao de Aplicaes
Java ME
20:00-21:20
Relatorios Web
2 dia - 01 de Setembro
2 dia - 01 de Setembro
Sala 1
Sala 2
Sala 3
Sala 1
Sala 2
Sala 3
9:00-10:20
Desenvolvendo um Game em
Java ME - Parte 1
Otimizando aplicaes em
Windows Mobile 5.0
Desenvolvendo um Game em
Java ME - Parte 2
10:30-11:50
12:00-13:20
Almoo
Almoo
Almoo
Almoo
Almoo
Almoo
13:30-14-50
Desenvolvendo um Game em
Java ME - Parte 3
Planejamento e Execuo de
Testes em Aplicaes Web Parte 1
15:00-16:20
Introduo ao uso do
bluetooth em J2ME
Planejamento e Execuo de
Testes em Aplicaes Web Parte 2
XAML
16:20-17:00
BREAK
BREAK
BREAK
BREAK
BREAK
BREAK
17:00-18:20
Multimdia em J2ME
Desenvolvendo aplicaes
Web com o Spring Framework
Parte 1
Silverlight na prtica
18:30-19:50
Desenvolvendo aplicaes
Web com o Spring Framework
Parte 2
Testes automatizados em
aplicaes ASP.NET
Patrocnio:
Apoio Cultural:
Apoio: