Академический Документы
Профессиональный Документы
Культура Документы
Sobre o Autor
Guinther Pauli autor de mais de 100 artigos publicados e do livro Delphi
Programao para Banco de Dados e Web. Bacharel em Sistemas de
Informao pelo Centro Universitrio Franciscano (Unifra, Santa Maria RS).
desenvolvedor 5 estrelas Microsoft e certificado oficial MCP (Microsoft
Certified Profissional) e MCAD (Microsoft Certified Application Developer), em
C#, ASP.NET e Visual Studio .NET. Detm quatro certificaes oficiais Borland:
Delphi Advanced pela Borland dos Estados Unidos, Delphi Web Development
Certified, Kylix Product Certified e Delphi Product Certified. J ministrou
palestras para mais de 5 mil pessoas em todo o pas. Editor Geral da revista
ClubeDelphi (www.clubedelphi.net) e Editor Tcnico da Revista WebMobile
Magazine (www.portalwebmobile.com.br). Pode ser contatado pelos endereos
guinther_pauli@hotmail.com ou guinther@clubedelphi.net. Possui um blog
no TheSpoke no endereo br.thespoke.net/MyBlog/Guinther/MyBlog.aspx
Participao especial: Rudolfo Pauli, ASP.NET Specialist e Borland Delphi
Certified, desenvolvedor do Centro de Processamento de dados (CPD) da
Universidade Federal de Santa Maria (UFSM), atuando na rea de projetos Web
e Multicamadas.
Importante
Nenhuma parte deste curso, sem autorizao prvia por escrito da editora,
poder ser reproduzida, copiada ou transmitida, sejam quais forem os meios
empregados: eletrnicos, fotogrficos, gravao ou quaisquer outros. Todos os
direitos reservados e protegidos pela lei 5.988 de 14/12/73.
E-Commerce
com Delphi e ASP.NET
Introduo
E-Commerce
com Delphi e ASP.NET
E-Commerce
com Delphi e ASP.NET
Histrico
O ambiente integrado de desenvolvimento do Delphi (IDE Integrated
Development Environment) permite o desenvolvimento RAD (Rapid Application
Development) de aplicaes para Windows (incluindo Win 32 e .NET) e Web,
utilizando a linguagem Delphi ou C#. A nova IDE se chama Borland Developer
Studio e est na verso 3.0.
A IDE do Delphi 2005 comeou a ser projeta h cerca de quatro anos. O
projeto Galileo (codinome usado na poca) definia uma IDE destinada ao
desenvolvimento de aplicaes para a nova plataforma da Microsoft. Essa IDE
surgiu com a primeira verso do C#Builder, chamada Borland Developer Studio,
e foi uma estratgia da Borland para concorrer com o MS Visual Studio.NET.
Como sabemos, o Delphi 7 j trazia uma verso do compilador Delphi para o
.NET. O que poucos esperavam que o Delphi for .NET (codinome Octane) se
tornaria o Delphi 8 e no um produto parte selando o compromisso da
Borland com o .NET Framework.
O Delphi 2005, codinome Diamondback, unifica todas as verses do Delphi e
representa um marco na histria do produto.
Instalao
Para instalar o Delphi 2005, voc precisa estar utilizando necessariamente
uma das seguintes verses do Windows: 2000 (SP2 recomendado), 2003
Server ou XP Professional veja mais detalhes sobre os requisitos mnimos
no documento borland.com/delphi_net/pdf/delphi_net8_sysreqs.pdf. O Delphi
2005 no roda em Windows 95, 98 ou Me (porm, as aplicaes finais ainda
podero ser executadas em todos esses sistemas, exceto no Windows 95).
Alm disso, voc deve ter instalado na sua mquina os tens a seguir:
.NET Framework 1.1;
.NET Framework 1.1 SDK;
Microsoft Internet Explorer 6 SP1 ou superior;
Microsoft Visual J# .NET 1.1 Redistributable
Microsoft XML Core Services (MSXML) 4.0 SP2 (Delphi 2005)
Todos esses tens so distribudos juntamente com o produto. Voc pode
tambm fazer o download e obter mais informaes sobre a instalao, a partir
do endereo msdn.microsoft.com/netframework/technologyinfo/howtoget.
Recomendo a leitura do arquivo install.txt para mais informaes.
E-Commerce
com Delphi e ASP.NET
Dica:
Clique em File|New>Customize para personalizar o menu File|New
E-Commerce
com Delphi e ASP.NET
Object Repository
A Figura 3 mostra o Object Repository do Delphi 2005. Observe que agora as
sees so dispostas em formato de TreeView. Essa uma caracterstica forte
da nova IDE. Ele um repositrio de objetos, wizards, templates, formulrios,
DataModules etc., que constantemente voc usar para criar boas aplicaes
ou inserir novos itens a um projeto existente.
Temos as seguintes opes para criao de aplicaes:
C# Projects para construo de aplicaes .NET usando o C#. Os itens nessa
opo so basicamente os que estavam disponveis na IDE do C#Builder.
Inclui suporte para desenvolvimento ASP.NET Web Forms e Web Services,
Windows Forms, ECO etc.
Crystal Reports para a criao de relatrios usando o Crystal;
Delphi for .NET Projects aqui esto basicamente as opes que estavam
disponveis na IDE do Delphi 8, incluindo ASP.NET Web Forms e Web
Services, Windows Forms, ECO, VCL Forms (a verso adaptada da VCL para o
.NET) etc.
Delphi Projects basicamente tudo o que tnhamos no Delphi 7, incluindo
aplicaes VCL Win32, Active X, Web Services, Web Snap, Intraweb etc.
Other Files itens que no se enquadram em nenhuma das categorias
anteriores. Permite a criao de grupos de projetos, aplicaes VB.NET (com
suporte limitado) etc.
Unit Test para a criao de testes unitrios com o Delphi usando o DUnit;
Web Documents permite a criao de pginas HTML, documentos XML,
arquivos Java Script etc.
Figura 3. Delphi 2005 suporta desenvolvimento com Delphi for .NET, Delphi for Win32 e C#
Voc pode adicionar um formulrio ao Object Repository para que possa ser
usado/compartilhado por outras aplicaes ou outros desenvolvedores.
E-Commerce
com Delphi e ASP.NET
Tela Inicial
Ao invs de iniciar com o tradicional formulrio em branco, temos agora um
mini-browser exibindo a Welcome Page, que possui links para acesso direto a
sites de recursos, tutoriais e exemplos relacionados aos produtos da Borland.
Alm disso, so listados os ltimos projetos abertos e links para os comandos
New, Open Project, Open File e Help.
Dica:
Voc pode personalizar a pgina de boas-vindas da IDE do Delphi, editando
diretamente o arquivo default.htm no diretrio WelcomePage da instalao do
BDS.
E-Commerce
com Delphi e ASP.NET
Desktop
As janelas utilizadas pela IDE (como Object Inspector, Form Designer e Code
Editor) no ficam mais soltas. Tudo fica dentro da janela principal da IDE. Voc
pode alterar esse comportamento escolhendo a opo Classic Unlocked na
barra Desktop, localizada por padro ao lado direito do menu principal. Para
ativar o estilo solto para aplicaes VCL, recurso que foi bastante solicitado
pelos desenvolvedores, desmarque a opo Tools|Options>Environment
Options>Delphi Options>VCL Designer>Embedded Designer.
A barra Desktops
permite que seja salva a atual
configurao de layout da IDE, com posicionamento e tamanho de janelas e
inspectors. Por exemplo, voc pode querer ter um layout para desenvolvimento
Web e outro para Win32.
Tool Palette
A paleta de componentes mudou radicalmente (Figura 6). Agora mostrada
em uma nova janela chamada Tool Palette no se chama mais Component
Palette e seu aspecto semelhante ao da Component List das verses anteriores
da IDE. Ao selecionar a paleta, digite as iniciais do tem que est procurando e
ser feita uma pesquisa incremental. Os componentes so filtrados e o texto da
busca realado em negrito no nome do componente e no ttulo da janela.
Aqui utilizado o termo tem no lugar de componente, pois a Tool Palette
tem diferentes finalidades: se voc estiver construindo uma aplicao VCL.
NET, Windows Forms ou Web Forms, os tens exibidos sero componentes
apropriados ao tipo de aplicao em desenvolvimento; se estiver trabalhando
com o editor, exibe Code Snippets templates de cdigo comumente utilizados
(como except, for..to..do etc.) que ao serem clicados so adicionados ao editor na
posio do cursor. J se estiver utilizando o Visual Model Designer, a Tool Palette
exibe opes para a manipulao de diagramas UML, e assim por diante.
A Tool Palette tambm pode mostrar agora os tens do Object Repository para
criao rpida de projetos (esse recurso j existia no Delphi 8, porm estava
oculto).
Dica:
Voc pode personalizar a Tool Palette de vrias formas: customizar cores e
efeitos gradiente, transferir tens entre categorias, criar categorias, ajustar o
tamanho dos cones etc.
Figura 6. Tool Palette exibe componentes, opes para criao de diagramas UML,tens do Object Repository,
Code Snipetts e muito mais
E-Commerce
com Delphi e ASP.NET
Project Upgrade
Quando voc abrir no Diamondback um projeto VCL construdo em verses
anteriores do Delphi, a IDE abrir a caixa de dilogo Project Upgrade (Figura 7)
perguntando se voc deseja migrar os fontes do projeto para Delphi for .NET
(usando a VCL.NET) ou manter em Delphi Win32.
A IDE basicamente procura pelo arquivo bdsproj para verificar se o projeto j
foi salvo/migrado na nova IDE.
Project Manager
O Project Manager j aparece aberto por padro (Figura 8). Atravs dele voc
pode gerenciar os arquivos presentes no projeto (adicionar, excluir, remover
etc.). Um novo tem apresentado, listando todos os assemblies .NET usados
pela aplicao. O menu de contexto Add Reference permite adicionar uma
referncia a um novo assembly, a uma Type Library COM ou a outro projeto.
A mesma opo est disponvel no menu Project. A opo Add Web Reference
permite adicionar uma referncia a um Web Service, dando suporte inclusive
busca usando UDDI.
Dica:
Voc pode clicar no boto para que as janelas fiquem reduzidas a uma barra ao
lado da IDE. Ao passar o mouse sobre essa barra, a janela surgir novamente.
E-Commerce
com Delphi e ASP.NET
Data Explorer
O Data Explorer (Figura 9) uma ferramenta que lembra muito o antigo SQL
Explorer, porm ele completamente integrado IDE do Delphi 2005 (alm
de poder ser executado como uma aplicao independente). Vejamos alguns
recursos do Data Explorer:
10
E-Commerce
com Delphi e ASP.NET
History Manager
Clicando na aba History na parte inferior do editor de cdigo temos acesso a
uma lista de verses para cada arquivo do projeto (Figura 10). Isso funciona
da seguinte forma: toda vez que voc salva um arquivo na IDE, o Delphi 2005
armazena uma verso para ele, que voc pode mais tarde consultar, verificar
alteraes ou restaurar.
Options
As janelas Environment Options, Debugger Options e Editor Options foram
finalmente unificadas e agora esto acessveis a partir do menu Tools|Options.
H ainda novas opes, para configurao do HTML Designer, Windows Forms
Designer, do ECO, do OptimizeIt e de aplicaes ASP.NET.
Structure Panel
Se voc observar a nova IDE, ver que no existem mais as janelas Object
TreeView e Code Explorer. No foi para menos, a nova janela Structure (localizada
por padro em cima do Object Inspector) pode tomar vrias formas: exibir o
Object TreeView caso voc esteja ajustando componentes em um formulrio,
exibir a estrutura de uma unit caso esteja no editor, mostrar a estrutura de tags
de um arquivo aspx caso esteja criando uma aplicao ASP.NET etc. Se estiver
visualizando o StarTeam Client embutido, a janela Structure toma a forma do
painel esquerdo da interface cliente, que exibe a estrutura de diretrios do
servidor.
11
E-Commerce
com Delphi e ASP.NET
Object Inspector
O Object Inspector (Figura 11) amplamente utilizado em qualquer tipo
de aplicao na IDE. Voc normalmente o usar para definir propriedades e
eventos para controles e componentes. O Object Inspector foi incrementado
no Delphi 2005. Se voc estiver construindo uma aplicao Windows Forms,
por exemplo, a descrio de uma propriedade automaticamente exibida na
parte inferior da janela, que tambm pode conter links para editores. O Object
Inspector no utilizado somente para configurar componentes: voc tambm
o utilizar para construir diagramas UML, pginas HTML e Web Forms.
Dica:
Se voc no se acostumar com o novo layout do Object Inspector, que divide as
propriedades por categorias, poder alternar para o estilo tradicional. Clique
sobre a janela com o boto direito e escolha Arrange>By Name.
Code Editor
O code editor , obviamente, usado para a edio de cdigos na IDE. Ao lado
esquerdo do editor mostrado o nmero da linha. Outro interessante recurso
o suporte a code-folding: voc pode mostrar/ocultar a implementao de um
mtodo, de membros de classe, ou de toda uma seo da unit, como interface
ou implementation, entre outros elementos; basta clicar nos sinais + ou -.
O menu de contexto do editor possui duas novas opes: Fold e Unfold para
manipulao do code-folding. Voc pode, por exemplo, clicar em Fold|Types
para esconder toda a seo type da unit.
O editor tem ainda opes para manipulao de macros, localizadas na barra
de status (isso j estava disponvel em verses anteriores do Delphi, mas apenas
usando-se teclas de atalho). Alm disso, duas abas Code e Design permitem
alternar entre o designer e o editor de cdigo.
12
E-Commerce
com Delphi e ASP.NET
Code Insight
Temos vrios recursos para utilizao no editor, que podem ser configuradas
a partir da janela Options:
Code Completion: completa cdigo automaticamente;
Code Parameters: mostra os parmetros requeridos por um mtodo;
Tooltip Expression Evaluation: em modo de depurao, mostra o
contedo de uma varivel quando o mouse repousado sobre o
identificador;
Tooltip symbol Insight: mostra informaes sobre um identificador
quando o mouse repousado sobre ele;
Tooltip Help Insight: mostra no code editor uma declarao/
documentao de um identificador;
Error Insight: mostra erros do compilador.
Teclas de atalho:
Ctrl + Space - Code Completation
Ctrl + J Code Template (veremos a seguir como configurar essa opo)
Ctrl + Shift + Space Code Parameters
Sem depurao
O novo comando Run|Run Without Debugging permite rodar uma aplicao
sem acionar o depurador integrado (que por padro ativado quando voc
aperta F9). Na verdade essa opo j existia na verso anterior do Delphi, mas
estava oculta por padro.
O uso desse comando pode aumentar a velocidade de inicializao das
aplicaes executadas dentro da IDE e reduzir o uso de memria (isso til
porque muitas vezes rodamos a aplicao sem acabar realmente usando o
depurador).
13
E-Commerce
com Delphi e ASP.NET
Form Designer
Como o Delphi 2005 no mais apenas destinado ao desenvolvimento de
aplicaes VCL/CLX, temos novos designers. O VCL Designer basicamente
o tradicional Form Designer do Delphi. Uma diferena que agora voc no
poder visualizar mais de um formulrio ou Data Module ao mesmo tempo
(pois no ficam mais flutuantes, e sim vinculados ao designer). Outra mudana
que novos formulrios no Delphi 2005 possuem a extenso .nfm em vez de
.dfm (para VCL.NET). Ainda assim, possvel usar arquivos .dfm de aplicaes
VCL feitas no Delphi 7, ou anterior, para efeitos de compatibilidade.
A principais mudanas nos designers so notadas ao se desenvolver
aplicaes com o Windows Forms Designer. Componentes no-visuais, por
exemplo, ficam separados na parte inferior do formulrio. Na parte superior
desse designer temos barras de ferramentas destinadas a ajustes nos controles
visuais, como posicionamento e espaamento. H ainda o suporte a undo (e
no apenas undelete). Uma grande diferena em relao ao trabalho com a
VCL que objetos no so representados em modo texto (assim como IDEs de
outras linguagens, como C# e Java, que fazem a representao de componentes
centrada em cdigo, ao invs de em recursos, como faz a VCL). Ou seja, no
existe arquivo .dfm ou .nfm em Windows Forms ou Web Forms: valores de
propriedades de qualquer componente sero inicializados no mtodo privado
InitializeComponent, chamado no construtor do formulrio.
Instalando componentes
Continuando o tour pela IDE, veja na Figura 13 a janela aberta acessandose o menu Component|Installed .NET Components. Voc poder agora utilizar
facilmente, em sua aplicao Delphi, componentes desenvolvidos em outras
linguagens, como VB.NET ou C# (um grande avano comparado aos antigos
controles e bibliotecas ActiveX e objetos COM). Como voc ver, ainda
possvel usar controles ActiveX e COM a partir de uma aplicao .NET.
14
E-Commerce
com Delphi e ASP.NET
Reflection
O menu Tools|Reflection um atalho para o utilitrio Reflection.exe (Figura 14),
que permite examinar os metadados e o cdigo IL gerado para um assembly
(sua aplicao feita no Delphi 8, por exemplo). Se voc clicar em um assembly
a partir do Project Manager|References poder ento visualizar o seu IL dentro
da prpria IDE (junto ao designer).
Help
Outra mudana est no Help, que est com novo formato. Alm da
documentao do Delphi 8, voc poder consultar a documentao completa
do SDK do .NET Framework, alm de tutoriais passo a passo para criao de
aplicaes Windows Forms, VCL.NET e Web Services, e dicas de migrao.
Curiosidade:
O ovo de pscoa do Delphi 2005 bastante original. Para visualiz-lo v at
a janela About e pressione T+E+A+M enquanto segura a tecla Alt. Surgir a
mensagem Borland Rules!. Aperte mais algumas vezes essas teclas e voc
ver um boto Team ao lado esquerdo. Clicando neste boto voc entrar
em um pequeno jogo. Pressione a barra de espaos para atirar nos nomes dos
membros da equipe do Delphi, que descero. Ao acertar nomes-chave (como
Delphi Team, Subby, Delphi MDA Team, Corbin Dunn etc.), voc ver algumas
figuras que mostram, desde a equipe de desenvolvedores do Delphi 8 e do
C#Builder, at a fila dos carros deles estacionados na sede da Borland.
15
E-Commerce
com Delphi e ASP.NET
Error Insight
A IDE monitora constantemente seu cdigo-fonte procurando erros, indicando
na janela Structure possveis problemas com o seu cdigo. Alm disso, o
cdigo com problema fica agora sublinhado (semelhante ao que faz o Word).
Repousando o mouse sobre o cdigo voc ver em um hint a mensagem de
erro gerada pelo compilador. A Figura 15 mostra um lao for sem o do e sem
a declarao da varivel i. Observe o comportamento da IDE em resposta ao
problema.
Figura 15. Error insight: mensagens de erro do compilador em forma de Hint e listadas na janela Structure
Help Insight
Um novo recurso da IDE permite que a documentao associada a um
determinado tem seja agora mostrada em uma janela semelhante a um hint,
dentro do prprio editor (Figura 16). So exibidos tambm links para a unit
onde est declarado um determinado tipo, componente etc. Clicando no link
o cdigo-fonte associado ser aberto.
16
E-Commerce
com Delphi e ASP.NET
Code Snippets
Permitem incluir cdigo rapidamente no editor, a partir de templates.
To-Do List
A partir de agora vou apresentar alguns recursos j antigos da IDE, mas
bastante teis.
O To-Do List (Figura 18) especificar uma lista de tarefas a serem feitas em
uma unit ou formulrio. Ao clicar no tem do To-Do list, o Delphi abre a unit e
posiciona o cursor onde o cdigo dever ser colocado. Pode ser exportado para
HTML (Figura 19). No code editor, use Shift+Ctrl+T para gerar um To-Do.
Figura 18. To-Do List: organize seu trabalho adicionando tarefas associadas ao cdigo-fonte
17
E-Commerce
com Delphi e ASP.NET
Refactoring
Refactoring a tcnica disciplinada de reestruturar um bloco de cdigo
existente, alterando sua estrutura interna sem afetar o comportamento
externo (Martin Fowler). Cada refactoring uma pequena transformao
aplicada ao cdigo-fonte, visando melhorar sua legibilidade, performance,
organizao, adequao a um padro etc. Porm, uma seqncia muito
grande de refactorings pode produzir uma reestruturao significativa.
Refactorings devem garantir que a aplicao funcione da mesma forma aps
a reestruturao, reduzindo chances do sistema ter graves falhas aps as
modificaes e minimizando a chance de introduo de bugs. Refactoring est
intimamente ligado a testes unitrios. Os testes unitrios que garantiro se o
cdigo continua eficiente e funcional aps os refactorings.
Dica:
Para mais informaes sobre Refactoring visite www.refactoring.com
18
E-Commerce
com Delphi e ASP.NET
Rename: mtodos
Quando alteramos o nome de um identificador em sua declarao, bastante
provvel que essa alterao tenha que ser feita em vrias partes do cdigo,
onde o identificador referenciado (mtodos e variveis).
Em nossa aplicao Windows Forms, adicione o seguinte cdigo na seo
public da classe do formulrio (a seguir aperte Shit+Ctrl+C):
procedure Foo; overload;
procedure Foo(A:Integer); overload;
Ser exibida a caixa de dilogo mostrada na Figura 22, que indica todos os
trechos do cdigo que sofrero alteraes, funcionando como um preview.
19
E-Commerce
com Delphi e ASP.NET
Rename: variveis
Tambm podemos usar o recurso de Refactoring para renomear variveis. Por
exemplo, digite o seguinte cdigo no Form_Load:
procedure TWinForm1.TWinForm1_Load(sender: System.Object;
e: System.EventArgs);
var
i: integer;
begin
for i := 0 to Controls.Count - 1 do
MessageBox.Show(i.ToString());
end;
Note que alterei o nome da varivel para Num. Se voc desmarcar a opo
View References before refactoring, o Delphi aplica a alterao imediatamente,
sem exibir o cdigo afetado na janela Refactoring.
20
E-Commerce
com Delphi e ASP.NET
O resultado obtido com base nas opes da figura pode ser visto a seguir (em
negrito):
procedure TWinForm1.TWinForm1_Load(sender: System.Object;
e: System.EventArgs);
var
Num: Integer;
begin
Num := 10;
for Num := 0 to Controls.Count - 1 do
MessageBox.Show(Num.ToString());
end;
21
E-Commerce
com Delphi e ASP.NET
Sync Edit
Esse recurso permite que voc altere de uma s vez o nome de classes,
mtodos, variveis etc. referenciados em vrios pontos do cdigo-fonte. Por
exemplo, selecione um determinado bloco de cdigo e repare que aparecer
um pequeno cone
ao lado esquerdo do editor. Clique sobre o cone,
escolha o que deseja renomear (clique Tab para alternar) e digite o novo valor.
A alterao ser refletida instantaneamente em todos os locais do cdigo
selecionado (veja a Figura 27).
22
E-Commerce
com Delphi e ASP.NET
Figura 27. Sync Edit altera todas as referncias ao identificador enquanto voc digita
Extract Method
medida que vamos adicionando cdigo aos nossos mtodos, eles vo se
tornando mais complexos e sua lgica mais difcil de ser compreendida. Um
procedimento comum desmembrar o mtodo em rotinas menores, e
incluir a chamada ao mtodo criado no local original onde estava o cdigo.
Imagine o seguinte cdigo no Form_Load:
procedure TWinForm1.TWinForm1_Load(sender: System.Object;
e: System.EventArgs);
begin
MessageBox.Show(Ola Mundo);
MessageBox.Show(Delphi 2005);
MessageBox.Show(Refactoring);
end;
23
E-Commerce
com Delphi e ASP.NET
O Delphi retira todo o cdigo selecionado do local original, move para o novo
mtodo (que j declarado na seo private) e inclui a chamada.
Agora imagine a seguinte situao, um tanto mais complexa:
procedure TWinForm1.TWinForm1_Load(sender: System.Object;
e: System.EventArgs);
var
n1,n2,n3: integer;
begin
n1 := 10;
n2 := 20;
n3 := n1 + n2;
MessageBox.Show(O resultado da soma + n3.ToString());
end;
24
E-Commerce
com Delphi e ASP.NET
Find Unit
Uma ltima dica sobre Refactoring. Considere o seguinte bloco de cdigo,
colocado em uma aplicao VCL:
procedure TForm1.FormCreate(Sender: TObject);
begin
Color := clBlue;
end;
25
E-Commerce
com Delphi e ASP.NET
26
E-Commerce
com Delphi e ASP.NET
Introduo ao .NET
Framework
Objetivos do .NET
27
E-Commerce
com Delphi e ASP.NET
Figura 1. A plataforma .NET define uma infra-estrutura bsica para o desenvolvimento de aplicaes
28
E-Commerce
com Delphi e ASP.NET
O compilador JIT
Aplicaes .NET so compiladas duas vezes. A primeira, ocorre quando
compilamos nosso cdigo-fonte usando o compilador da linguagem (C#, VB,
Delphi etc.), como falamos anteriormente. Quando a aplicao executada
pela primeira vez, a mquina virtual do .NET Framework (CLR) identifica qual
29
E-Commerce
com Delphi e ASP.NET
sistema operacional est sendo utilizado (Windows 98, NT, 2000, XP etc.) e se
encarrega de acionar o JIT (compilador Just in Time), que gera o executvel
nativo da plataforma. Quando a aplicao for executada novamente, a CLR
considera a verso compilada. Ou seja, o produto final (o executvel) tem a
mesma performance de uma aplicao nativa, para Win32 por exemplo.
Managed Code
Todo cdigo compilado para .NET chamado de cdigo gerenciado (Managed
Code). A mquina virtual pode ento fazer constantes verificaes de tipo para
garantir a segurana na execuo do cdigo. No h brechas para execuo
de cdigos maliciosos que possam prejudicar o funcionamento da aplicao
e do sistema operacional como um todo. A CLR um ambiente totalmente
seguro. O cdigo compilado nativo para o sistema operacional chamado de
Unmanaged Code.
Assemblies
Um Assembly um importante conceito no .NET Framework. Ele
essencialmente uma unidade bsica de distribuio, podendo ser um aplicao
(.EXE) ou uma biblioteca (.DLL) ou ainda ser formado por um conjunto delas.
30
E-Commerce
com Delphi e ASP.NET
Figura 3. GAC faz controle de verso de assemblies automaticamente: o fim do DLL Hell
31
E-Commerce
com Delphi e ASP.NET
32
E-Commerce
com Delphi e ASP.NET
Nota:
Para uma lista completa de todos os namespaces, consulte a documentao
do SDK.
No confunda namespace com Assemblies. Assemblies so unidades fsicas,
enquanto namespace simplesmente uma forma de organizar logicamente
classes relacionadas. Um Assembly pode definir vrios namespaces. Ou ainda,
um namespace pode ter classes definidas em vrios tipos diferentes assembly.
Tipos de Objetos
O .NET Framework totalmente orientado a objetos. Isso significa dizer que
tudo no framework um objeto, desde inteiros, strings at objetos de acesso a
dados. Todos descendem obrigatoriamente de System.Object;
Existem dois tipos de objetos no .NET:
Reference: um objeto que referenciado atravs de um endereo na
pilha, um ponteiro tipado.
Value: so alocados diretamente na pilha, sempre contm um valor
e no podem ser nulos. Geralmente utilizados nos tipos primitivos,
como inteiros, strings etc.
Para permitir a utilizao de tipos Value como se fossem realmente objetos,
o .NET utiliza um recurso chamado Boxing, permitindo que voc possa chamar
mtodos e acessar suas propriedades. O processo inverso conhecido como
UnBoxing. Por exemplo, voc pode ter o seguinte:
var
i: integer;
s : string;
begin
i := 10;
i.ToString();
Referncia
Para mais informaes sobre o .NET Framework, consulte o endereo msdn.
microsoft.com, onde existe uma extensa documentao sobre o assunto,
incluindo exemplos, tutoriais, diagramas etc. Para sua referncia futura, compilei
no quadro a seguir um pequeno glossrio de termos que provavelmente faro
parte a partir de agora do seu dia a dia como desenvolvedor .NET
33
E-Commerce
com Delphi e ASP.NET
CTS Common Type System especificao que define um sistema comum de tipos (valor ou
referncia) que podem ser utilizados em diferentes linguagens de programao.
JIT Just-In-Time Compiler mecanismo associado ao CLR que permite a compilao do cdigo
IL em cdigo nativo da plataforma no momento da sua execuo.
GAC Global Assembly Cache normalmente voc copia uma DLL para o diretrio de sistema
do Windows quando precisa compartilh-la entre vrias aplicaes; quando uma nova verso da DLL fornecida,
algumas aplicaes podem parar de funcionar. O GAC termina com isso, permitindo que voc instale diferentes verses
de um mesmo assembly: cada aplicao usar a verso para a qual foi compilada (recurso conhecido como side-byside execution execuo lado a lado).
GC Garbage Collector mecanismo associado ao CLR que realiza a coleta de lixo (garbage
collection), liberando recursos (como objetos) que no estejam mais sendo utilizados.
Assembly a unidade bsica de distribuio do .NET Framework, podendo conter o cdigo IL, dados
como imagens e recursos. Um assembly pode ser formado de um simples arquivo (.exe ou .dll), ou ser construdo a
partir de vrios arquivos.
Managed Code cdigo compilado para a plataforma .NET, que gerenciado pelo CLR.
Unmanaged Code o cdigo de aplicaes compiladas que no so gerenciadas pelo CLR e so nativas do
processador.
34
E-Commerce
com Delphi e ASP.NET
www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-48428157-034d1e7cf3a3&DisplayLang=en
35
Links
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322>aspnet_regiis.exe i
ECMA
www.ecma-international.org
Links para as especificaes
msdn.microsoft.com/net/ecma
E-Commerce
com Delphi e ASP.NET
Fundamentos do
ASP.NET
Neste captulo vamos examinar alguns fundamentos bsicos do
desenvolvimento de aplicaes ASP.NET. Vamos conhecer a estrutura de
aplicaes, arquivos envolvidos, modelo de execuo e conheceremos os
principais objetos e classes do framework.
36
E-Commerce
com Delphi e ASP.NET
Dica:
Para executar a aplicao, clique no menu Run>Run. Se receber uma mensagem
de erro do debugger, use a opo Run>Run without debugging.
Nota:
Apesar de utilizarmos controles do lado servidor nos exemplos deste captulo
(Button, TextBox etc.), eles no sero discutidos em detalhes nesta parte do
curso, mas em captulos seguintes.
Com base neste exemplo, vamos examinar alguns detalhes sobre aplicaes
ASP.NET.
Arquitetura ASP.NET
Os principais componentes da arquitetura ASP.NET (Figura 4) so os Web
Forms, ASP.NET Server Controls, arquivos de Code-behind e DLLs compiladas.
Um Web Form contm elementos HTML, texto e Server Controls. Arquivos de
code-behind contm a lgica da aplicao para o formulrio associado. DLLs
compiladas geram HTML dinmico no servidor Web.
37
E-Commerce
com Delphi e ASP.NET
Modelo de Execuo
A Figura 5 mostra o modelo de execuo do ASP.NET, que funciona da
seguinte forma:
1. O browser emite uma requisio HTTP ao servidor;
2. Um dispositivo do framework ASP.NET executa um parser que interpreta
o cdigo-fonte e identifica todas as suas dependncias;
3. A pgina compilada em MSIL (Microsoft Intermediate Language - cdigo
intermedirio);
4. O runtime do .NET (CLR Common Language Runtime) carrega e executa
o cdigo MSIL;
Quando algum usurio requisita a mesma pgina Web pela segunda vez, a
seguinte srie de eventos ocorre:
1. O browser emite uma requisio HTTP ao servidor;
2. O CLR carrega e executa imediatamente o cdigo MSIL que j havia sido
compilado durante a primeira requisio do usurio.
Arquivos Gerados
Os seguintes arquivos foram gerados na aplicao:
NomeProjeto.dll assembly compilado, em cdigo MSIL;
WebForm1.aspx pgina Web com controles e cdigo html/aspx;
Web.config arquivo de configurao da aplicao;
Global.asax arquivo com cdigo para responder aos eventos nvel
de aplicao;
WebForm1.pas contm a implementao dos eventos e cdigo
servidor responsvel pelo processamento da pgina.
Code-Behind
Observe que, diferente do ASP, h uma separao clara entre o cdigo de
interface (arquivo aspx) e o cdigo servidor (arquivo .pas). Esse recurso
conhecido como code-behind. Com isso, podemos integrar facilmente
38
E-Commerce
com Delphi e ASP.NET
39
E-Commerce
com Delphi e ASP.NET
Observe que cada controle tem um ID e que o ASP.NET usa estilos para
posicionar os mesmos em coordenadas absolutas de tela.
40
E-Commerce
com Delphi e ASP.NET
Response
Response declarado no namespace System.Web e um objeto do tipo
HTTPResponse. usado para encapsular respostas HTTP enviados pelo servidor
Web ao browser. Algumas de suas principais propriedades so Cache, Cookies,
Filter e Buffer. Alguns dos seus principais mtodos so Redirect e Write. Vamos
fazer um exemplo prtico que mostra o uso do objeto.
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
41
E-Commerce
com Delphi e ASP.NET
Request
Request declarado no namespace System.Web e um objeto do tipo
HTTPRequest. usado para capturar informaes enviadas pelo browser para
o servidor durante o processo de uma requisio HTTP. Algumas de suas
principais propriedades so QueryString, Cookies e Files.
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
42
E-Commerce
com Delphi e ASP.NET
Cookies
HTTPCookie uma classe declarada no namespace System.Web, usada
para capturar/salvar informaes na mquina cliente (browser). Cookies so
largamente utilizados por qualquer aplicao Web, permitindo que o servidor
armazene no browser informaes sobre o cliente. Por exemplo, quando voc
entra em um Web Site e preenche um formulrio com seus dados, o servidor
pode gravar um cookie na sua mquina. Quando voc visitar o site novamente,
o servidor capaz de identific-lo fazendo a leitura do respectivo cookie.
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
43
E-Commerce
com Delphi e ASP.NET
44
E-Commerce
com Delphi e ASP.NET
IsPostBack
O evento Load de um formulrio sempre disparado quando uma requisio
enviada ao servidor. No entanto, em algumas situaes, precisamos saber se
a requisio feita a primeira ou uma resposta subseqente. Isso possvel
atravs da verificao da propriedade IsPostBack do objeto Page.
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
45
E-Commerce
com Delphi e ASP.NET
Server
Server declarado no namespace System.Web e um objeto do tipo
HTTPServerUtility. Possui vrios mtodos utilizados no processamento de
requisies HTTP, como: CreateObject, CreateObjectFromClsid, MapPath e
Transfer.
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
O cdigo a seguir, que deve ser colocado no evento Load do form, mostra
como usar um importante mtodo desse objeto, o MapPath, que permite obter
o caminho fsico de um arquivo no disco. Deve ser usado sempre que possvel,
pois a indicao do caminho completo ao invs do relativo diretamente no
cdigo pode fazer com que sua aplicao pare de funcionar, caso seja instalada
em um local diferente do caminho utilizado em tempo de desenvolvimento.
46
E-Commerce
com Delphi e ASP.NET
Response.Redirect e Server.Transfer
O mtodo Redirect do objeto Response redireciona o usurio para uma nova
pgina (URL), que pode ser tanto um site da Web externo ao projeto ou uma
pgina aspx da prpria aplicao. Para passar dados de uma pgina para outra,
voc deve utilizar parmetros na URL (como limitao de tamanho e uso de
tipos de dados primitivos).
O mtodo Transfer do objeto Server outra forma de chamar uma pgina aspx
(da mesma aplicao), porm permite passar dados diretamente no servidor
de um formulrio para outro, que podem ser objetos, DataSets, conexes etc.
Vamos criar um exemplo que demonstra a utilizao de ambas as tcnicas. Em
um primeiro momento, vamos usar o Redirect para passar um valor digitado
em um formulrio para outro.
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
47
E-Commerce
com Delphi e ASP.NET
48
E-Commerce
com Delphi e ASP.NET
Nota:
Para ter acesso ao TextBox1 a partir de outra classe, altere seu especificador
de visibilidade para public.
No cdigo, fazemos um typecast em Context.Handler para o tipo do primeito
WebForm, tornando possvel o acesso direto ao objeto. No necessria a
passagem de qualquer valor por URL.
ViewState
Aplicaes ASP.NET so state-less. Isso significa dizer que o servidor trata cada
requisio cliente como se fosse uma nova solicitao. Nenhuma informao
armazenada na memria do servidor aps o envio da pgina HTML para o
browser. claro, o ASP.NET permite a utilizao de alguns recursos especiais
para recuperar o estado de controles.
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
49
E-Commerce
com Delphi e ASP.NET
50
E-Commerce
com Delphi e ASP.NET
Exerccio Resolvido
Criar uma aplicao ASP.NET com duas pginas ASPX. No primeiro Web Form,
colocar dois TextBoxes e um Button. Quando o usurio clicar no Button, passar o
valor digitado nos dois TextBoxes como parmetro da URL em um Redirect para
o segundo WebForm. Neste segundo WebForm, exibir a soma dos dois nmeros,
fazendo a converso dos parmetros da URL. Se no for possvel fazer a soma (os
parmetros no forem nmeros, por exemplo), mostrar uma mensagem de erro
ao usurio (usar um try except). A seguir, adaptar o mesmo exemplo para que use
Cookies para guardar os valores do primeiro WebForm e recuperar no segundo
WebForm, mantendo a mesma funcionalidade.
A soluo para este exerccio pode ser encontrada nos apndices do
curso.
51
E-Commerce
com Delphi e ASP.NET
HTML Controls
Os HTML Controls representam elementos HTML diretamente. Tambm
podem rodar no servidor, bastando para isso adicionar o atributo RunAt =
Server na definio do elemento no arquivo aspx. So indicados para a migrao
de formulrios HTML para aspx. A lista a seguir mostra os HTML Controls e as
respectivas tags HTML que eles geram.
Links
52
E-Commerce
com Delphi e ASP.NET
Controle
<select><option selected=true>1
</option><option>2</option></select>
<select size=2><option>1</option><option>2
</option></select>
<input type=hidden>
<input type=le>
<a href=pagina.aspx>Anchor</a>
<img alt= src=imagem.jpg>
<table border = 1><tr><td>1</td></tr></table>
<span>Span</span>
<div>Div</div>
<div ms_positioning=FlowLayout>Div</div>
<div ms_positioning=GridLayout>Div</div>
<hr>
Controle
53
E-Commerce
com Delphi e ASP.NET
Web Controls
Os Web Controls so controles mais especializados, que geram cdigo HTML
mais complexo e no representam diretamente elementos HTML simples. A lista
a seguir mostra os Web Controls e uma breve descrio de sua funcionalidade.
54
E-Commerce
com Delphi e ASP.NET
Dica:
Para apontar os trs manipuladores para o mesmo mtodo, adicione
normalmente o evento no primeiro controle, dando um duplo clique na rea
branca ao lado do nome do evento. Para os demais, selecione o evento j
definido ao invs de dar o duplo clique.
55
E-Commerce
com Delphi e ASP.NET
56
E-Commerce
com Delphi e ASP.NET
RadioButton e RadioButtonList
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
57
E-Commerce
com Delphi e ASP.NET
RadioButtonList
Vamos fazer um exemplo com o RadioButtonList. O RadioButtonList permite
que voc adicione os tens diretamente em sua propriedade Items, ou que
traga os valores a partir de uma fonte de dados.
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
58
E-Commerce
com Delphi e ASP.NET
59
E-Commerce
com Delphi e ASP.NET
Nota:
As propriedades DataSource, DataMember, DataTextField, DatatTextFormat e
DataValueField so discutidas mais adiante, quando estudarmos DataBindings.
CheckBox
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
60
E-Commerce
com Delphi e ASP.NET
61
E-Commerce
com Delphi e ASP.NET
CheckBoxList
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
62
E-Commerce
com Delphi e ASP.NET
DropDownList
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
63
E-Commerce
com Delphi e ASP.NET
64
E-Commerce
com Delphi e ASP.NET
Com isso, a aplicao mostra na Label a quantidade de dias entre hoje e a data
informada.
ListBox
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
65
E-Commerce
com Delphi e ASP.NET
O controle ListBox pode ser usado para apresentar uma lista de opes. Suas
propriedades so semelhantes as dos demais controles de seleo, vistos at
aqui. Na propriedade tems indicamos os tens a serem exibidos no controle. A
propriedade Rows indica o nmero de linhas a serem exibidas no controle. As
seguintes propriedades indicam o tem selecionado:
SelectedItem - o tem selecionado, com o texto completo;
SelectedValue - o valor especificado para o tem;
SelectedIndex - o ndice do tem selecionado (inicia em 0);
A Figura 24 mostra um exemplo de uso do controle. Coloquei alguns tens no
primeiro ListBox, usando a propriedade Items.
66
E-Commerce
com Delphi e ASP.NET
Image
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
67
E-Commerce
com Delphi e ASP.NET
68
E-Commerce
com Delphi e ASP.NET
Panel
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other.
A seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web
Application (veja a figura a seguir). Lembre-se de dar um nome (Name) para
aplicao na janela que aparecer a seguir (New ASP.NET Web Application).
69
E-Commerce
com Delphi e ASP.NET
System.Object;
e:
System.
Calendar
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
70
E-Commerce
com Delphi e ASP.NET
AdRotator
No Delphi 2005, inicie uma nova aplicao clicando em File>New>Other. A
seguir, no tem Delphi for .NET Projects, selecione o tem ASP.NET Web Application
(veja a figura a seguir). Lembre-se de dar um nome (Name) para aplicao na
janela que aparecer a seguir (New ASP.NET Web Application).
71
E-Commerce
com Delphi e ASP.NET
O componente AdRotator usado para exibir uma banner na pgina. Tem uma
caracterstica especial: permite randomizar uma lista de imagens, cada usurio
que entrar no site ver uma imagem diferente, selecionada randomicamente.
Para ver como o componente funciona, coloque-o no formulrio um
AdRotator.
72
E-Commerce
com Delphi e ASP.NET
Formatao de controles
A maioria dos Web Controls vistos at aqui, possuem propriedades em comum,
que permitem configurar sua aparncia e estilo. Veja a seguir uma lista das
principais propriedades:
Propriedade
AccessKey
BackColor
BorderStyle
BorderWidth
Font-Bold
Font-Italic
Font-Name
Font-Names
Font-Overline
Font-Size
Font-StrikeOut
Font-Underline
ForeColor
Height
TabIndex
ToolTip
Width
Descrio
Indica a tecla de atalho para selecionar um controle (Alt + AccessKey)
Cor de fundo do controle
Estilo da borda do controle. Possveis valores: Dashed, Dotted,
Double, Groove, Inset, None, NotSet, Outset, Ridge e Solid.
Tamanho da borda em pixels
Se o texto do controle mostrado em negrito
Se o texto do controle mostrado em itlico
Nome da fonte usada no controle
Lista de nomes de fontes possvels para serem usadas no controle
Coloca uma linha sobre o texto
Tamanho em pixels do texto do controle
Mostra o texto riscado
Sublinha o texto do controle
Cor de frente do controle
Altura do controle, em pixels
Ordem de tabulao do controle
Hint do controle, quando o mouse repousa sobre ele
Tamanho do controle, em pixels
73
E-Commerce
com Delphi e ASP.NET
Usando estilos
Para usar estilos em Web Controls, basta definir o nome da classe CSS para a
propriedade CssClass. Para fazer um teste, em uma nova aplicao, coloque um
Label, um TextBox e um ListBox. No arquivo aspx, defina o seguinte estilo, dentro
do elemente Head:
<style>
.TestStyle
{
FONT: 12pt tahoma; COLOR: blue
}
</style>
74
E-Commerce
com Delphi e ASP.NET
Exerccio resolvido
Crie uma calculadora usando controles ASP.NET. Utilize Buttons para os nmeros e
ImageButtons para as operaes (coloque algumas imagens personalizadas para
soma, subtrao etc.). O resultado das operaes deve ser exibido em um TextBox.
Utilize um HTML Table para organizar os controles, em Flow Layout. Implemente
as funcionalidades de memria. Quando o usurio apertar em um boto para
Gravar em Memria, gravar o valor atual do textBox em um cookie. Quando ele
clicar em Recuperar Memria, obter o nmero do cookie para ser utilizado na
operao corrente. As funcionalidades da calculadora devem ser implementadas
em um classe em um arquivo a parte.
A soluo para o exerccio pode ser encontrada nos apndices do curso.
75