You are on page 1of 73

Curso Programando ASP.

NET
3.5: Acesso a Dados e
Recursos Avanados

MDULO II

Ateno: O material deste mdulo est disponvel apenas como parmetro de estudos para
este Programa de Educao Continuada. proibida qualquer forma de comercializao do
mesmo. Os crditos do contedo aqui contido so dados aos seus respectivos autores
descritos na Bibliografia Consultada.
MDULO II

Caching

Aplicaes Web que exigem alta escalabilidade tem de ser pensadas sob o ponto
de vista de desempenho desde a sua concepo. Caching um recurso importante no
desenvolvimento de aplicaes de alto desempenho. Ns, que trabalhamos com TI,
sabemos que recuperar informaes da memria uma operao muito mais rpida do
que a leitura em disco, mesmo que esta leitura seja oriunda de um super banco de dados
altamente otimizado. Agora imagine e seguinte situao: uma loja virtual coloca um
produto em promoo, o que pode causar dezenas de milhares de acessos por minuto
pgina do produto. Normalmente, a cada requisio, ou seja, a cada vez que um usurio
solicitar a pgina, o ASP.NET vai executar uma consulta ao banco de dados, processar e
renderizar a pgina e submet-la ao navegador que efetuou a requisio. Este processo
passa ento a ser executado dezenas de milhares de vezes por minuto. No seria mais
inteligente colocar isso tudo na memria, para que a cada requisio o ASP.NET
entregasse ao navegador esta verso?
Felizmente isto possvel. O recurso de caching permite o instanciamento de
objetos em memria. Funciona mais ou menos assim: o objeto colocado em memria,
podendo ser determinado o tempo de expirao. Quando o tempo expira, o objeto
retirado da memria. Na prxima vez que o objeto for solicitado ao cache, verifica-se a
existncia do objeto em memria, existindo, ele simplesmente utilizado, caso contrrio,
efetuada uma nova alocao.
Podemos utilizar caching diretamente em uma Web Form ou em um User Control,
ou de forma declarativa, onde armazenamos e recuperamos objetos do cache de acordo
com nossa necessidade. No podemos utilizar caching em Master Pages. Programar
caching manualmente bastante simples, e se assemelha ao uso de variveis de sesso
e aplicao que estudamos no primeiro curso. A maneira mais simples e eficiente de
entender o mecanismo de caching utilizando uma varivel de data e hora, j que a
informao, quando armazenada, se torna esttica. Para executar o exemplo abaixo crie

47
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
um Web Form e adicione um controle Label, depois digite o cdigo abaixo no evento
OnLoad da pgina. O cdigo verifica se o cache est nulo, e neste caso armazena um
valor. Ao final do bloco, o valor do cache exibido em um controle label. Execute a
pgina, atualizando a mesma diversas vezes. Note que o valor de data e hora no mais
atualizado, pois na primeira execuo da pgina o valor foi adicionado ao cach. Nas
demais execues, a rotina simplesmente l o valor armazenado e exibe no controle
label:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As


System.EventArgs) Handles Me.Load
If Cache("hora") Is Nothing Then
Cache("hora") = DateTime.Now
End If

Label1.Text = Cache("hora")
End Sub

protected void Page_Load(object sender, EventArgs e)


{
if (Cache["hora"] == null)
{
Cache["hora"] = DateTime.Now;
}

Label1.Text = Convert.ToString( Cache["hora"]);


}

Para atualizar o valor em cache, basta ler o novo valor da varivel. Para deslocar
a varivel basta chamar o mtodo remove. No exemplo abaixo um boto desloca o
caching. Isto significa que na prxima execuo do evento OnLoad da pgina a data ser
atualizada:
Protected Sub Button1_Click(ByVal sender As Object, ByVal
e As System.EventArgs) Handles Button1.Click
Cache.Remove("hora")
End Sub

protected void Button1_Click(object sender, EventArgs e)


{
Cache.Remove("hora");
}

48
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Podemos utilizar o cache tambm atravs do mtodo insert. No exemplo abaixo o
primeiro parmetro o nome da varivel, o segundo, o valor a ser armazenado:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Cache("hora") Is Nothing Then
Cache.Insert("hora", DateTime.Now)
End If
Label1.Text = Cache("hora")
End Sub

protected void Page_Load(object sender, EventArgs e)


{
if (Cache["hora"] == null)
{
Cache.Insert("hora",DateTime.Now);
}

Label1.Text = Convert.ToString( Cache["hora"]);

Atravs do mtodo insert podemos utilizar alguns recursos avanados, que


podem ser obtidos atravs de uma sobrecarga, como dependncias, tempo de expirao
absoluto e tempo de expirao relativo. Dependncias associam o cache a algum objeto:
quando este objeto sofrer alterao, o cache expira. Tempo de expirao absoluto
aquele em que a expirao ocorrer em uma determinada data e hora, e o relativo, onde
a expirao ocorre aps o tempo informado, a partir da data de insero do valor no
cach.
Neste prximo exemplo definimos uma expirao absoluta e uma relativa ao
caching, que so os dois ltimos parmetros, respectivamente. Como a expirao
absoluta contm o valor MaxValue do objeto DateTime, significa que a expirao dever
ocorrer no tempo relativo: 5 segundos:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Cache("hora") Is Nothing Then
Cache.Insert("hora", DateTime.Now, Nothing,
DateTime.MaxValue, TimeSpan.FromSeconds(5))
End If
Label1.Text = Cache("hora")
End Sub

49
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
protected void Page_Load(object sender, EventArgs e)
{
if (Cache["hora"] == null)
{
Cache.Insert("hora", DateTime.Now, null,
DateTime.MaxValue, TimeSpan.FromSeconds(5));
}
Label1.Text = Convert.ToString( Cache["hora"]);
}

Ao final do tempo de expirao, o valor dever ser atualizado automaticamente.

Output Caching

Caching de pginas e controles so chamadas Output Caching. Vamos agora


colocar uma pgina inteira em cache, para isto crie um novo Web Form. Adicione um
controle Label ao formulrio e no evento On Load da pgina, faa, mais uma vez, a
exibio da data e hora no mesmo:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Label1.Text = DateTime.Now.ToString
End Sub

protected void Page_Load(object sender, EventArgs e)


{
Label1.Text = DateTime.Now.ToString();
}

A cache de pgina parametrizado atravs de uma diretiva de pgina, no arquivo


aspx ou ascx (Web Form ou User Control). Diretivas de pgina so as primeiras linhas do
arquivo e iniciam com o conjunto de caracteres <%@. Um Web Form possui por padro
uma diretiva Page, e um User Control uma diretiva Control. No exemplo de nosso Web
Form, adicionamos a diretiva OutPutCache logo abaixo da diretiva Page. Dois parmetros
so obrigatrios, Duration, que define o tempo de durao do cach, e VaryByParam, que

50
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
permite criar diferentes verses de cach para a pgina de acordo com parmetros.
VaryByParam vamos estudar a seguir, por isso, neste exemplo o valor deve ser none,
para no haver variao por parmetro:
<%@ Page Language="VB" AutoEventWireup="false"
CodeFile="Default.aspx.vb" Inherits="_Default" %>
<%@ OutputCache Duration="5" VaryByParam="none" >
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" />
<asp:Label ID="Label1" runat="server"
Text="Label"></asp:Label></div>
</form>
</body>
</html>

Execute a aplicao e atualize a pgina algumas vezes, observe que a data e


hora na pgina s so atualizadas aps 5 segundos, que foi o tempo que determinamos
para o cache. O diferencial agora que, ao invs de apenas uma nica varivel,
colocamos toda a pgina em cache. Vamos voltar ao nosso hipottico exemplo do site de
comrcio eletrnico. Falamos que a aplicao poderia necessitar colocar uma
determinada pgina, de um produto em promoo, em cache. Porm, como estamos
falando de aplicaes dinmicas, normalmente uma nica pgina programada para
exibir todos os produtos: a aplicao monta a pgina dinamicamente com o produto
desejado, colhendo informaes em banco de dados. Isto significa que nosso modelo de
cache no iria funcionar, pois o usurio seria condenado a ver apenas o produto que foi
alocado em cache primeira vez.
A soluo para este problema criar verses diferentes da pgina, de acordo
com parmetros diversos. Estudamos no primeiro curso o mecanismo de query string,
onde informaes so passadas anexadas a URL da pgina. O parmetro VaryByParam,
que j vimos ser obrigatrio na declarao da diretiva de OutputCache e que definimos

51
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
como none no nosso primeiro exemplo tem esta funo: criar uma verso diferente de
cache para cada valor diferente do parmetro passado na query string, tudo a fazer
preencher o atributo com o nome da varivel da query string. Vamos prtica: crie uma
nova aplicao ASP.NET contendo dois Web Forms: Default.aspx e Default2.aspx. Em
Default.aspx adicione dois controles HyperLink e defina a propriedade NavigateURL,
como ~/Default2.aspx?Versao=1 e ~/Default2.aspx?Versao=2 respectivamente, como
na imagem abaixo:

Estamos fazendo um redirecionamento para a pgina Default2.aspx, passando


uma varivel na query string de nome Verso. Cada redirecionamento passa um valor
diferente para a varivel. Na pgina Default2.aspx adicione um controle Label. Agora abra
o arquivo aspx, insira a diretiva de OutputCache como no exemplo abaixo. Colocamos um
valor maior de durao, para que tenhamos tempo de testar o efeito antes do cache
expirar, e definimos VaryByParam com o valor da varivel que a pgina recebe pela query
string:

52
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
<%@ Page Language="VB" AutoEventWireup="false"
CodeFile="Default2.aspx.vb" Inherits="Default2" %>
<%@ OutputCache Duration="30" VaryByParam="Versao" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server"
Text="Label"></asp:Label></div>
</form>
</body>
</html>

O ltimo passo , mais uma vez, atribuir o valor de data e hora ao label:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Label1.Text = DateTime.Now.ToString
End Sub

protected void Page_Load(object sender, EventArgs e)


{
Label1.Text = DateTime.Now.ToString();
}

Rode a aplicao, iniciando de Default.aspx, clique no primeiro Link e anote a


data e hora exibida em Default2.aspx. Utilize o boto voltar de seu navegador, clique no
segundo Link e novamente anote o valor de data e hora apresentado, que deve ser
diferente da primeira vez. Agora repita as operaes algumas vezes, voc vai notar que,
durante 30 segundos, a data e hora continuam diferentes entre si, mas iguais ao valor
informado na primeira vez que se navegou at a pgina. Isto porque o ASP.NET
armazenou em cache uma verso da pgina para cada diferente parmetro informado na
query string.

53
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
E se a pgina tiver mais de um parmetro? Sem problema, voc pode informar
mais de um valor de varivel em VaryByParam. Basta separ-los por ponto e vrgula.
Porm aqui deve ficar registrado um cuidado: o objetivo do recurso de caching otimizar
a aplicao. Se voc colocar em cache muitos parmetros de uma mesma pgina, com
uma grande variao de valores, as quantidades de verses que tero que ser alocados
em memria e consequentemente os recursos que sero consumidos podem, ao invs de
beneficiar, derrubar a aplicao.

Web Parts

Todas as sees de nossos cursos tratam de temas importantes e fundamentais


no desenvolvimento de aplicaes Web. Web Parts, ao contrrio, pode ser classificado
como no-fundamental ou dispensvel, mas um recurso poderoso, fcil e elegante que
voc no pode deixar de conhecer. Ao invs de explicar o que , vou falar de um exemplo
prtico. Se voc no esteve trancado em uma caverna nos ltimos anos, provavelmente
j acessou, ou ouviu falar, do iGoogle. O iGoogle um servio onde voc monta um
pgina personalizada, com os servios, informaes e funes que voc deseja, tudo de
maneira muito fcil: cliques do mouse e operaes de arrastar e soltar:

54
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Na parte superior voc escolhe o contedo que coloca na pgina, mas abaixo,
voc arrasta os contedos entre as regies, podendo tambm fech-los ou minimiz-los.
um tipo de aplicao em que o usurio gerencia seu contedo, a seu gosto, em tempo
de execuo. A funcionalidade do iGoogle no VS denominada Web Parts. O recurso
est disponvel nativamente no ASP.NET 3.5, e, ao contrrio do que voc pode imaginar,
muito fcil e intuito de usar: o VS traz quase tudo pronto, tudo a fazer configurar
controles, com pouca necessidade de escrita de cdigo. Examine, no VS, o guia Web
Parts da barra de ferramentas:

55
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Vamos ver Web Parts na prtica. Crie uma nova aplicao ASP.NET e adicione
pgina um controle WebPartManager. Este controle no traz qualquer funcionalidade para
a pgina e visualmente, em tempo de execuo no produz qualquer efeito, porm
fundamental para o funcionamento de Web Parts. Agora adicione sobre o Web Form dois
controles WebPartZone. Um WebPartZone um container de contedo, so as regies
onde o usurio poder adicionar os itens que deseja. Voc pode aplicar uma formatao
para o controle, acessando a opo Auto format na smart tag dos controles.
Coloque dentro do primeiro WebPartZone um controle Button e um controle
DropDownList e no segundo um controle TextBox e um controle ListBox. Se voc fez tudo
certo seu Web Form deve estar semelhante imagem abaixo:

56
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Note que o controle assume o layout do WebPartZone, e que agora exibido
dentro de um frame, para que oferea suporte a operaes de arrastar e soltar, minimizar
e maximizar. O WebPartManeger deve ser sempre primeiro controle da pgina. Rode a
aplicao. Neste ponto j possvel minimizar e restaurar um controle. Tambm
possvel fech-los, porm ainda no h suporte para reabrir um controle fechado. Voc
tambm no vai conseguir arrastar controles entre as zonas.

57
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Antes de fechar a aplicao, minimize dois controles, feche a aplicao e rode
novamente. Note que os controles permanecem na mesma condio que voc os deixou
antes de fechar o navegador! Como isso possvel? Em cursos de ASP.NET, quando
peo sugestes do que o ASP.NET fez para manter o estado dos controles, a resposta
sempre cookies. Na verdade no, o mesmo mecanismo utilizado na funcionalidade de
Membership e Roles: um banco de dados do SQL Server, inclusive, com o mesmo
schema. Alis, se voc utilizar ambos os recursos na aplicao, eles iro compartilhar o
banco de dados. Note na imagem abaixo a visualizao do banco de dados, lembre-se de
atualizar a pasta para que o mesmo seja exibido:

58
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Antes de adicionarmos mais funcionalidade a nossa aplicao, vamos entender o
funcionamento dos modos do Web Parts. Os modos definem que tipo controle o usurio
ter sobre o contedo do Web Parts. No modo Browse, que o padro e tambm o
modo que nosso exemplo se encontra, oferecida pouca interatividade: o usurio apenas
pode minimizar, restaurar ou fechar um contedo disponvel em uma zona. No modo
catalog, as possibilidades so maiores: o usurio pode fechar e restaurar contedo e
mesmo mud-los de uma zona para outra. No modo design possvel ao usurio
gerenciar as zonas da pgina, inclusive com operaes de arrastar e soltar, e, por ltimo,
no modo Edit, pode-se alterar as zonas, personalizando-as completamente.

CatalogZone e PageCatalogPart

Vamos agora aprimorar um pouco a aplicao, mudando o modo para Catalog.


Adicione um controle CatalogZone, este controle um container para controles
PageCatalogPart. Adicione um controle PageCatalogPart ao controle CatalogZone:

59
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Se voc executar a aplicao neste momento, notar que no existe qualquer
diferena, ainda no possvel gerenciar o contedo das zonas, o controle Page Catalog
sequer visvel em tempo de execuo. Isto porque necessrio alterar o modo do Web
Parts, e isto requer um pouco de cdigo:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As


System.EventArgs) Handles Me.Load
Dim WebPart As WebPartManager =
WebPartManager.GetCurrentWebPartManager(Page)
WebPart.DisplayMode =
WebPart.SupportedDisplayModes("Catalog")
End Sub

60
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
protected void Page_Load(object sender, EventArgs e)
{
WebPartManager WebPart =
WebPartManager.GetCurrentWebPartManager(Page);
WebPart.DisplayMode =
WebPart.SupportedDisplayModes["Catalog"];

O cdigo acima declara uma varivel do tipo WebPartManager, que recebe por
referncia o WebPartManager da pgina. Em seguida, seu modo alterado para Catalog.
Rode a aplicao agora, note que os controles Catalog Zone e Page Catalog agora esto
visveis. Faa alguns testes, feche um controle de uma zona, veja que ele adicionado ao
Page Catalog. Para restaurar o controle na zona original, ou em outra zona, basta marc-
lo, escolher a zona em Add to e clicar em Add. Imediatamente o controle adicionado
zona selecionada.

61
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Mas o mais interessante a possibilidade de arrastar os controles entre as zonas.
Para isso, basta clicar sobre o ttulo do controle, arrast-lo at a zona desejada e soltar o
boto do mouse:

Outro modo o Design, onde voc tem todas as operaes que os modos
Browse e Catalog, porm o Catalog Zone e consequentemente o Page Catalog no
exibido. Para colocar a aplicao em mode de Design, basta mudar o parmetro da
propriedade SupportedDisplayModes:

62
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim WebPart As WebPartManager =
WebPartManager.GetCurrentWebPartManager(Page)
WebPart.DisplayMode =
WebPart.SupportedDisplayModes("Design")
End Sub

protected void Page_Load(object sender, EventArgs e)


{
WebPartManager WebPart =
WebPartManager.GetCurrentWebPartManager(Page);
WebPart.DisplayMode =
WebPart.SupportedDisplayModes["Design"];

Modo Edit

O ltimo e mais completo modo que vamos estudar o Edit. Neste modo o
usurio tem total poder de personalizar o contedo das zonas. As funcionalidades so
muitas, por isso, vamos test-las em partes. Inicialmente adicione um controle EditorZone.
Este controle tambm um container para controles de edio, sendo eles
ApperanceEditorPart, que permite personalizar a aparncia, BehaviorEditorPart, que
admite personalizar o comportamento, LayoutEditorPart que aceita personalizar o
comportamento e finalmente, PropertyEditorPart, que comporta a personalizao de
propriedades.

ApperanceEditorPart

Adicione um controle EditorZone no seu Web Form, em seguida adicione um


controle ApperanceEditorPart dentro do EditorZone. Na tela abaixo, uma viso parcial do
Web Form em tempo de design, onde podemos ver o EditorZone e o
ApperanceEditorPart:

63
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Para que o modo de edio funcione preciso um pouco mais de configuraes e
cdigo. Inicialmente devemos ver se possvel a mudana de modo, em seguida
devemos mudar o modo:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As


System.EventArgs) Handles Me.Load
If WebPartManager1.Personalization.Scope =
PersonalizationScope.User AndAlso
WebPartManager1.Personalization.CanEnterSharedScope
Then

64
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
WebPartManager1.Personalization.ToggleScope()
End If

Dim WebPart As WebPartManager =


WebPartManager.GetCurrentWebPartManager(Page)
WebPart.DisplayMode =
WebPart.SupportedDisplayModes("Edit")
End Sub

A prxima autorizao no web.config. O modo Edit necessita de permisses


especficas para poder funcionar. O elemento abaixo deve ser adicionado dentro do
elemento system.web:
<webParts>
<personalization>
<authorization>
<allow users="*" roles="admin" verbs="enterSharedScope"/>
</authorization>
</personalization>
</webParts>

Pronto, agora voc j pode executar a aplicao. Note que cada controle ganhou
um novo item de menu, Editar:

65
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Ao clicar em Editar, o controle, e apenas o controle onde clicamos Editar, entra
em modo de edio de Aparncia, atravs do controle AppearenceEditor. Altere
informaes como Ttulo e Altura, clique em Aplicar:

66
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Veja imediatamente o resultado no controle que colocamos em modo de edio:

BehaviorEditorPart

Vamos agora testar o editor de comportamento, o BehaviorEditorPart. Para no


sobrecarregar a tela e tornar as coisas confusas, remova o AppearenceEditor do
EditorZone e adicione um BehaviorEditorPart. Rode a aplicao, escolha em controle e
clique em Editar no seu menu. Observe que o modo de comportamento traz diversas
opes:

67
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Adicionei um link para imagem do cone do ttulo no exemplo. Veja o resultado:

68
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
LayoutEditorPart

Remova o BehaviorEditorPart do EditorZone e adicione um LayoutEditorPart.


Rode a aplicao e clique em editar no menu de seu controle. Veja as opes:

69
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
A alterao de zona produz o mesmo efeito do CatalogZone e PageCatalogPar.

ASP.NET Ajax

Em nosso primeiro curso falamos de Web 2.0 e Ajax. Nesta seo vamos
recordar alguns conceitos. Para o usurio, Ajax significa uma experincia de uso da
aplicao melhor: o navegador dar respostas mais rpidas, estar ativo entre um post
back e outro e a tela estar sempre visvel. Em termos tcnicos, o Ajax significa
processamento mais veloz, menor utilizao de recursos e processamento assncrono.
Para entender mais, releia a parte de Ajax e Web 2.0 em nosso primeiro curso.
Do ponto de vista do desenvolvedor, existem dois grupos de recursos para
utilizao do Ajax no ASP.NET 3.5: o primeiro so os controles Ajax Extensions, que j
esto instalados no ambiente do VS 2008.O segundo grupo de recursos se chamam
ASP.NET AJAX Control Toolkit: trata-se de um conjunto de controles com funes mais
especficas que tem que ser instalado parte no VS.

AJAX Extensions

Inicialmente vamos estudar o AJAX Extensions. Estes so os controles oficiais do


ASP.NET AJAX e que permitem adicionar funcionalidades de processamento assncrono
a aplicaes ASP.NET 3.5, sendo de uso mais genrico e extremamente fceis de utilizar.

70
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Vamos ver qual a funo de cada controle:

ScriptManager: Controle indispensvel, que faz o Ajax funcionar na pgina. Todo


Web Form que utilizar Ajax tem que conter um ScriptManager.
ScriptManagerProxy: Substitui a ScriptManger em uma pgina de contedo
associada a uma Master Page, que deve conter um controle ScriptManager;
Timer: Um evento assncrono pode ser disparado por uma ao do usurio, como
um clique em um boto. Porm, quando queremos, por algum motivo, que o evento
seja disparado em determinado intervalo, utilizamos o controle Timer.
UpdatePanel: Este controle um container para qualquer controle ASP.NET. Os
controles em seu interior tero seu processamento assncrono. Na prtica, este o
controle que faz o ASP.NET Ajax funcionar.

71
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
UpdateProgress: Este controle permite dar um feedback ao usurio durante o
processamento da requisio. Normalmente, ao clicar em um boto, o usurio fica
sem saber realmente o que est acontecendo.

Vamos prtica. Crie uma nova aplicao ASP.NET sobre o Web Form criado,
adicione um controle ScriptManager e, em seguida, um controle UpdatePanel. Dentro do
UpdatePanel adicione um controle DropDownList e um controle Label.

Na Smart Tag do DropDownList, marque a opo Enable AutoPostBack para que


o controle cause post back a cada alterao de valor. Em seguida clique em Edit Items e
adicione algumas cores, como no exemplo abaixo:

72
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Adicione, porm fora do UpdatePanel, outro controle DropDownList e outro
controle Label. Defina os mesmos itens para este novo DropDownList, e tambm marque
o mesmo como AutoPostBack:

73
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Clique em ok e d um duplo clique sobre o DropDownList que se encontra dentro
do UpdatePanel. No manipulador de evento criado digite o seguinte cdigo:
Protected Sub DropDownList1_SelectedIndexChanged(ByVal
sender As Object, ByVal e As System.EventArgs)
System.Threading.Thread.Sleep(5000)
Label1.Text = DropDownList1.SelectedItem.Text
End Sub

protected void DropDownList1_SelectedIndexChanged(object


sender, EventArgs e)
{
System.Threading.Thread.Sleep(5000);
Label1.Text = DropDownList1.SelectedItem.Text;
}

Fao o mesmo para o DropDownList que est fora do UpdatePanel. Tome


cuidado de mudar o Label que vai receber a cor:

74
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Protected Sub DropDownList2_SelectedIndexChanged(ByVal
sender As Object, ByVal e As System.EventArgs) Handles
DropDownList2.SelectedIndexChanged
System.Threading.Thread.Sleep(5000)
Label2.Text = DropDownList2.SelectedItem.Text
End Sub

protected void DropDownList2_SelectedIndexChanged(object


sender, EventArgs e)
{
System.Threading.Thread.Sleep(5000);
Label2.Text = DropDownList2.SelectedItem.Text;
}

O cdigo acima causa um delay no servidor de 5 segundos, isto para simularmos


um processamento mais demorado por estarmos criando uma rotina simples com acesso
local. Rode a aplicao e altere valores nos DropDownLists. Note que no primeiro a
aplicao continua ativa e no h qualquer sinal de processamento ou travamento. Voc
pode inclusive alterar novamente um valor do DropDownList enquanto a cor no muda no
controle Label. No segundo DropDownList, que est fora do UpdatePanel e
consequentemente sem o AJAX, o processamento diferente: a pgina trava, o controle
s retornado ao usurio ao final do processamento.
Uma forma mais fcil de visualizar esta diferena de processamento em
aplicaes simples como a que utilizamos de exemplo observar o logo do Internet
Explorer na guia da pgina. No processamento sncrono ele muda para um crculo
animado, indicativo de que est aguardando o processamento. No processamento
assncrono, ele sequer muda:

75
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
UpdateProgress

O controle UpdateProgress tem por objetivo dar um feedback ao usurio durante


um processamento assncrono. O controle um container, internamento voc pode
colocar um gif animado, um flash, uma simples mensagem de texto ou o que voc
imaginar, lembrando que seu contedo somente ser exibido durante o post back
assncrono. O controle conectado diretamente ao UpatePanel, a partir de ento seu
funcionamento totalmente automtico.
Vamos ver um exemplo. Crie uma nova aplicao ASP.NET, no formulrio
principal adicione um controle ScritpManager, um controle UpdatePanel e internamente
um controle Button, em seguida adicione um controle UpdateProgress, em sua janela de
propriedades, defina a propriedade AssociatedUpdatePanelID com o valor UpdatePanel1,
como na imagem abaixo:

76
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Como dito, voc pode colocar o que quiser dentro do UpdateProgress. No meu
exemplo eu simplesmente coloquei um label com um texto e uma fonte diferenciada. D
um duplo clique sobre o boto, o cdigo desta vez apenas causa um atraso simulando um
processamento:

Protected Sub Button1_Click(ByVal sender As Object, ByVal


e As System.EventArgs) Handles Button1.Click
System.Threading.Thread.Sleep(5000)
End Sub

protected void Button1_Click(object sender, EventArgs e)


{
System.Threading.Thread.Sleep(5000);
}

Seu exemplo, em tempo de design, deve estar semelhante imagem abaixo:

77
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Rode a aplicao, clique no Button, observe que durante o processamento de
servidor, o contedo do UpdateProgress exibido, ao final do processamento ele se torna
invisvel:

78
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Timer

Nos exemplos anteriores, tnhamos sempre um post back causado por uma
interveno de um usurio, iniciando-se ento o processamento assncrono no servidor.
Porm, para resolver alguns problemas do dia-a-dia pode ser necessrio que este post
back seja causado automaticamente, durante determinado intervalo de tempo. Com esta
funo, temos o controle Timer.
Sua utilizao tambm simples: ele deve ser colocado no container do
UpdatePanel, e o cdigo de servidor a ser disparado deve ser atribudo ao seu evento
Tick. Vamos a um exemplo. Crie uma aplicao ASP.NET, adicione um controle
ScriptManager e um controle UpdatePanel na pgina. No Update Panel adicione um
controle Label e um Controle Timer, como na imagem abaixo:

Altere a propriedade Interval do Timer para 1000. Esta propriedade define, em


milissegundos, o intervalo de execuo do evento:

79
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
D um duplo clique sobre o controle Timer para abrir o seu manipulador de evento
Tick, adicione o cdigo abaixo para que, a cada intervalo, o horrio seja atualizado no
controle Label:
Protected Sub Timer1_Tick(ByVal sender As Object, ByVal e
As System.EventArgs) Handles Timer1.Tick
Label1.Text = DateTime.Now.ToString
End Sub

protected void Timer1_Tick(object sender, EventArgs e)


{
Label1.Text = DateTime.Now.ToString();
}

Execute a aplicao e observe a atualizao da data a cada segundo:

80
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Triggers

comum a aplicao ter controles diferentes para disparar o evento e exibir o


resultado, por exemplo. Um post back assncrono vai retornar informaes de ambos os
controles. Uma forma de otimizao com a utilizao de Triggers, atravs dos quais
podemos separar o contedo a ser atualizado do controle que disparou o evento. Para
voc entender na prtica como funciona, crie uma nova aplicao contendo um
ScriptManager e um UpdatePanel. Internamente ao UpdatePanel adicione um Controle
Label, em outra rea do Web Form e fora do UpdatePanel, adicione um controle Button,
como na imagem abaixo:

81
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
D um duplo clique sobre o controle Button para criar o manipulador de evento
OnClique, e adicione o seguinte cdigo para atualizar o controle label com a hora atual:
Protected Sub Button1_Click(ByVal sender As Object, ByVal
e As System.EventArgs) Handles Button1.Click
Label1.Text = DateTime.Now.ToString
End Sub

protected void Button1_Click(object sender, EventArgs e)


{
Label1.Text = DateTime.Now.ToString();
}

At aqui no h nenhuma novidade alm do fato do controle Button estar fora do


UpdatePanel. Vamos agora definir o Trigger para o evento. No controle UpdatePanel,
localize a propriedade Triggers:

82
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Clique no boto de reticncias, no UpdatePanelTrigger Collection Editor clique em
Add, selecione AsyncrPostBackTrigger. Em ControlID selecione Button1 e em EventName
escolha Click:

83
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Rode a aplicao.

ASP.NET AJAX Control Toolkit

Vamos agora falar do ASP.NET AJAX Control Toolkit. O ASP.NET AJAX Control
Toolkit, embora no seja um produto oficial da Microsoft, suportado por esta. Voc pode
encontrar informaes, tutoriais, exemplos e downloads do Toolkit em
http://www.asp.net/ajax/ajaxcontroltoolkit/. Tambm pode achar o ToolKit na seo de
downloads do site. Existem diversas opes, baixe inicialmente AjaxControlToolkit-
Framework3.5SP1-NoSource.zip, que contm os exemplos de utilizao. Em outro
momento, voc pode querer baixar AjaxControlToolkit-Framework3.5SP1.zip, que possui
todo o pacote, inclusive com os cdigos fonte, ou ainda AjaxControlToolkit-
Framework3.5SP1-DllOnly.zip, que tem apenas o assembly com os controles, til para
voc empregar em suas aplicaes. Tudo a fazer colocar o assembly na pasta Bin da
aplicao, adicionar os controles sua barra de ferramentas e utiliz-los.

84
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Depois de baixar o arquivo AjaxControlToolkit-Framework3.5SP1-NoSource.zip,
descompacte-o em algum diretrio qualquer. No VS, acesse o menu File, opo Open
Web Site, selecione a opo File System, selecione a pasta que foi descompactada e
clique em Open:

aberta uma aplicao ASP.NET com mais uma dezena de pastas. Cada uma
possui um exemplo de utilizao de um controle do ToolKit:

85
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Abra a pasta Bin, veja que dentro temos o AjaxControlToolkit.dll, como dito acima.
Este assembly possui todos os controles, ele tudo que voc vai precisar em outras
aplicaes que utilize o ToolKit. Antes de rodar a aplicao, vamos ver como adicionar os
controles sua caixa de ferramentas. Com os controles na Toolbox fica mais fcil utiliz-
los, basta arrast-los para o formulrio. Clique com o boto direito sobre o Toolbox e
selecione Add tab:

86
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
No cursor aberto acima, digite AJAX Control Toolkit:

Clique novamente com o boto direito sobre a Tookbox, selecione Choose Items:

87
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Clique em Browse. Voc deve navegar at encontrar a pasta Bin de sua aplicao
ASP.NET que baixou e abriu no VS. Encontrando a pasta selecione AjaxControlToolkit.dll
e clique em Open. Voc est de volta janela anterior. Observe, rolando a barra de
rolagem, que todos os controles marcados em azul sero adicionados barra de
ferramentas:

88
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Clique em Ok. Uma grande quantidade de controles adicionada guia Ajax
Control Toolkit de sua barra de ferramentas:

89
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
90
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Lembre-se que adicionamos os controles a uma aplicao que j possui exemplos
de utilizao de todos os controles. Isto porque no vamos estudar neste curso a
utilizao de cada uma dessas dezenas de controles, o que seria invivel. O importante
que voc agora tem acesso a implementao de cada um deles e j sabe como adicionar
os controles barra de ferramentas em seus projetos. Vamos agora observar alguns dos
exemplos prontos.
Um dos controles mais interessantes, e que j encontramos diversos sites que
utilizam recurso semelhante, o autocomplete, que capaz de sugerir opes enquanto
digitamos o texto. Rode a aplicao, no menu lateral clique em AutoComplete. No campo
digite algumas palavras e veja que a pgina apresenta algumas sugestes. Neste
exemplo, as sugestes so puramente aleatrias, mas, na vida real, voc pode, por
exemplo, programar o controle para fazer uma busca em um banco de dados trazendo,
por exemplo, nome de clientes.

91
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Observe tambm que em cada pgina de exemplos existem instrues de como
usar o controle, suas principais propriedades e configuraes.

Gerenciado sua Aplicao

Ao longo dos cursos fizemos vrias alteraes no arquivo web.config, que o


arquivo de configurao de uma aplicao ASP.NET: nele definimos forma de
autenticao e permisso, strings de conexo, permisses para o uso de Web Parts entre
outros. O VS possui uma ferramenta visual, que roda sobre o navegador, que permite que
as principais configuraes do web.config sejam feitas de uma forma mais amigvel. A
ferramenta, ASP.NET Configurator, est disponvel como o ltimo comando no Solution
Explorer:

Para test-la, crie uma aplicao nova, em que no tenham ocorrido alteraes
de configurao. Vamos ver um exemplo prtico do uso da ferramenta para a uma
configurao que j utilizamos: autenticao por formulrios, por isso logo que criar a
aplicao verifique no web.config que a autenticao (elemento authentication) tem seu
modo definido como Windows. Ao clicar em ASP.NET Configurator a ferramenta aberta
em um navegador:

92
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
As opes de configurao so divididas em trs grupos: Segurana,
configurao do aplicativo e Configurao do Provedor. Clique em Segurana, veja que
em Usurios o configurador informa que a autenticao atual Windows. Clique em
Selecionar tipo de autenticao:

93
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Na prxima etapa, voc pode optar por da internet ou de uma rede local. Veja
que o texto explica que na opo da Internet ser utilizada autenticao para os
formulrios, por isso, selecione esta opo e clique em Concludo.

94
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Abra o web.config e veja que a autenticao mudou para Forms.

95
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Distribuindo sua Aplicao

Depois de muito trabalho, sua aplicao ficou pronta: hora de colocar para
funcionar. Distribuir uma aplicao Web bastante diferente do que distribuir uma
aplicao Windows Forms. Nesta ltima criado um instalador, que disseminado para
todos os usurios. Estes executam o instalador e esto prontos para operar o sistema.
Numa aplicao Web, a instalao e configurao so feita apenas no servidor, a partir
da ela est pronta para qualquer usurio que tiver um navegador e um acesso ao
servidor por uma rede local ou pela internet.

96
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Aplicaes Web so executadas em servidores de internet, que nada mais do
que uma aplicao na forma de servio, que escuta uma determinada porta, esperando
requisies. Quando estas requisies so recebidas, o servidor de internet as processa e
devolve o resultado do processamento a quem fez a requisio. Aplicaes ASP.NET
devem rodar em servidores de internet IIS, em um sistema Operacional Microsoft. Existem
projetos, como o Mono, que portam aplicaes .NET para plataformas no Microsoft,
porm nesta situao existe uma srie de limitaes e restries. Os clientes das
aplicaes podem ser qualquer equipamento, mesmo com sistemas operacionais ou
navegadores no ligados Microsoft.
A publicao da aplicao consiste de duas partes principais: a publicao em si,
quando so preparados os arquivos para que sejam hospedados em um ambiente de
produo, e posteriormente a preparao do servidor. A publicao consiste em gerar os
arquivos necessrios para que a aplicao seja executada no servidor, onde voc vai
copi-los para o servidor (atravs de um servio de FTP por exemplo), ou ainda gerar um
instalador que dever ser executado no servidor, podendo este ser capaz de fazer as
configuraes necessrias. A configurao do servidor consiste em tarefas como preparar
a Internet Information Service, o servidor de internet da Microsoft, instalar e configurar o
servidor de banco de dados entre outras.

Publish Web Site

Para exemplificar, vou gerar uma publicao e instalar no IIS em um


equipamento rodando Windowx XP Professional. Instalar em um servidor com Windows
2003 Server um procedimento praticamente idntico. Crie uma nova aplicao
ASP.NET 3.5, d mesma o nome de OlaMundo. Na pgina Default.aspx criada pelo VS,
adicione um label com o texto Ol Mundo, em letras garrafais:

97
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Uma informao importante antes de continuarmos. Durante o desenvolvimento
de uma aplicao, precisamos depurar a mesma, que o processo de avaliar o cdigo
em tempo de execuo, checar valor de variveis, adicionar pontos de parada no cdigo
etc. Para que a depurao seja possvel, o ASP.NET insere diversos smbolos dentro da
aplicao. Estes smbolos consomem recursos de processamento e memria, recursos
estes que no so poucos.
A configurao para incluso dos smbolos de depurao feita atravs do
web.config. Por padro, a depurao est desabilitada. Toda vez que executamos uma
aplicao clicando em Start Debugging (a seta verde) ou teclamos F5, o ASP.NET inicia a
aplicao em modo de depurao. Se o valor para a depurao estiver definida com o
valor padro no web.config, ou seja, false, voc ver esta caixa de dilogo:

98
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Isto um alerta que a depurao est desabilitada. Se deixarmos a primeira
opo marcada, o web.config ser alterado pelo VS e a aplicao ir rodar em modo de
depurao. Note que logo abaixo da opo existe um alerta de que esta opo no deve
ser utilizada em ambientes de produo. Na verdade, durante todo o ciclo de
desenvolvimento da aplicao voc vai precisar da depurao. Porm, quando a
aplicao for para o ambiente de produo, importante que ela seja desabilitada. Voc
tambm pode alterar manualmente o modo de depurao, basta para isto alterar o
web.config. Isto feito no elemento compilation, atributo debug:

<compilation debug="false" strict="false" explicit="true">

Vamos agora continuar com a publicao de nossa aplicao. Clique com o boto
direito sobre o projeto e escolha a opo Publish Web Site:

99
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Voc ver a caixa de dilogo Publish Web Site:

100
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Clique no boto reticncias ao final do campo Target Location. Veja que o Visual
Studio lhe d diversas opes de publicao:
File System: simplesmente copia os arquivos para um diretrio no sistema de
arquivos;
Local IIS: publica a aplicao no IIS local, ou seja, em sua prpria mquina;
FTP Site: publica os arquivos em um servidor FTP, o que comumente utilizado
quando estamos hospedando em servidores comerciais de terceiros.
Remote Site: publica em um site Remoto.

Clique na Opo Local IIS, em seguida clique no boto Create New Virtual
Directory. Informe um alias, que o nome pelo qual a aplicao vai ser acessada pelo IIS,

101
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
e em Folder informe o local fsico onde voc quer que a aplicao seja publicada. Se a
pasta no existir, exibida uma mensagem perguntando se voc deseja criar a pasta.

Clique em Ok, confirme as prximas janelas at que voc veja na barra de status
do Visual Studio a mensagem: Publish succeeded:

Neste ponto voc deve ser capaz de acessar a publicao pelo IIS:

102
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Muitas coisas podem dar errado, porem o IIS uma aplicao fcil e intuitiva,
voc poder facilmente configur-lo. Para abrir o IIS acesse o painel de controle,
ferramentas administrativas, Internet Information Services. Localize o Web Site Ola
Mundo, clique com o boto direito em propriedades:

103
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Na guia, certifique-se de ter Default.aspx, que a pagina inicial de nossa
aplicao, como documento padro. Se ele no se encontra na lista, voc pode facilmente
adicion-lo. Isto necessrio para que o IIS tenha um ponto de referncia para iniciar a
aplicao quando ela acessada pelo alias.

104
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Na guia ASP.NET, certifique-se de estar definindo 2.0 em ASP.NET version. Voc
pode estar se perguntando: mas eu no fiz a aplicao em ASP.NET 3.5!. Certo, porm
o ASP.NET 3.5 roda sobre o servio do ASP.NET 2.0.

105
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Estes podem ser os problemas principais relacionados ao IIS. Aproveite e d uma
navegada nas demais opes de configurao de seu Web Site. Outro erro comum que
pode ocorrer o da imagem abaixo:

106
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Este erro pode ocorrer pelo fato de que o IIS no est configurado para trabalhar
com o ASP.NET. Normalmente ocorre se o IIS foi instalado depois do .NET. Para resolver
isto, basta executar o seguinte texto na prompt de comando do Windows:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe
/i

Antes de passarmos para o prximo assunto, vamos voltar caixa de dilogo


Publish Web Site. Vamos falar da primeira opo apenas: Alow this precompiled site to be
updatable:

107
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Se voc manteve esta opo marcada durante a publicao e abrir a pgina
Default.aspx, j publicada, ver que o contedo da mesma exatamente igual ao seu
contedo em tempo de projeto. J o seu arquivo Default.vb ou Default.cs no est mais
disponvel na publicao: seu contedo foi compilado dentro de um assembly: abra a
pasta Bin dentro da publicao, o assembly um arquivo com nome estranho e extenso
DLL. Faa agora um teste. Crie uma nova publicao, porm agora desmarque a opo
Alow this precompiled site to be updatable. Quando a publicao estiver pronta, abra
novamente o arquivo Default.aspx. Veja que agora, em vez do contedo do arquivo, voc
tem uma mensagem:
This is a marker file generated by the precompilation tool, and
should not be deleted!

A mensagem diz que o arquivo foi gerado pela ferramenta de pr-compilao e


no deve ser apagada. Agora, a apresentao da publicao est compilada, assim com

108
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
o cdigo de servidor. No modelo anterior era possvel alterar o layout da aplicao sem a
necessidade de pr-compilao. Neste modelo, preciso uma nova compilao.

Copy Web Site

Outra forma de publicar sua aplicao ASP.NET atravs do Copy Web Site, que
pode ser encontrado no Solution Explorer, no penltimo boto da barra de ferramentas,
que na imagem abaixo aparece assinalado em vermelho:

Esta opo abre uma interface interessante: de um lado os arquivos locais, do


outro voc poder ver os arquivos no local de publicao:

109
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Voc inicialmente deve clicar em Connect. As opes de conexo so
semelhantes opo de Publish Web Site:

110
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Depois de conectado, clique com o boto direito sobre a rea esquerda, e
selecione Copy Site to Remote. Os arquivos so ento publicados no local remoto. O
mais interessante desta ferramenta que, quando voc alterar sua aplicao, o utilitrio
mostra quais arquivos esto com verses diferentes da publicada remotamente.

111
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Note na imagem acima que Default.aspx est sinalizado com uma seta azul, e
seu Status changed, indicando que o arquivo foi modificado. A comandar Syncronize, o
VS envia para a publicao remota apenas os arquivos alterados.

Gerao de Instaladores

Uma ltima opo de publicao que vamos estudar a gerao de um programa


de instalao. Voc pode utilizar um software de gerao de instaladores de terceiros,
porm o VS capaz de criar um software de instalao para uma aplicao ASP.NET.
Para nosso exemplo, voc vai precisar adicionar um novo projeto a uma soluo que j
tem um projeto ASP.NET. Se seu Solution Explorer no est exibindo a soluo, consulte
na seo de Web Services de nosso curso como tornar a soluo visvel no Solution
Explorer. Feito isso, clique como boto direito sobre a soluo, selecione Add, opo New
Project:

112
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Localize e expanda o n Other Project Types, em Templates, selecione Web
Setup Project e clique em ok:

113
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
O Visual Studio cria um projeto de instalao. Observe a barra de ferramentas do
Solution Explorer com o projeto de Instalao Selecionado:

So diversos editores que nos permitem configurar e personalizar o instalador.


Atravs destas opes podemos alterar valores do registro do Windows, verificar
condies de instalao, incluir caixas de dilogos, entre outras. Vamos primeiramente
adicionar os arquivos necessrios para a gerao do instalador. Clique com o boto
direito na janela File System, selecione Add e em seguida Project Output:

114
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Na janela Add Project Outuput Group, selecione o projeto ASP.NET que deseja
instalar em Project, selecione Content Files e clique em Ok:

adicionado um novo item direita: Content Files from...

115
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Agora, com o projeto de instalao ainda selecionado no Solution Explorer,
localize na Janela de Propriedades a opo Localization. Encontre e altere para
portugus. Uma mensagem do VS alerta que em tempo de design o idioma continuar
sendo em ingls, j que a incluso dos pacotes de traduo ser includa na compilao.

116
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Observe que nesta janela voc deve preencher diversas informaes sobre a
aplicao, como produtor, autor, descrio etc. Para gerar o instalador, clique com o
boto direito sobre o projeto de instalao e selecione Build. Aguarde a mensagem Build
Succeed na barra de status e clique novamente com o boto direito sobre o projeto de
instalao. Desta vez selecione a opo Install:

O instalador ser executado:

117
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Para alterar as janelas do instalar, podendo incluir, excluir ou personalizar etapas,
utilize o User Interface Editor. O instalador fisicamente gerado dentro da pasta do
projeto.

------------------FIM DO MDULO II-----------------

118
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores

You might also like