Você está na página 1de 45

Programa de Educao

Continuada a Distncia

Curso Programando
ASP.NET 3.5: Acesso a Dados
e Recursos Avanados

Aluno:

EAD - Educao a Distncia


Parceria entre Portal Educao e Sites Associados
Curso Programando
ASP.NET 3.5: Acesso a Dados e
Recursos Avanados

MDULO I

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.

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

MDULO I
Login
CreateUserWizard
Controle Login e PasswordRecovery
Controle ChangePassword
LoginStatus e LoginName
LoginView
Solucionando problemas de Login com o Sql Server
Navegao
Arquivo SiteMap
Web Services
Consumindo um Web Service
Consumindo um Web Service de Terceiros

MDULO II
Caching
Output Caching
Web Parts
CatalogZone e PageCatalogPart
Modo Edit
ApperanceEditorPart
BehaviorEditorPart
LayoutEditorPart
ASP.NET Ajax
AJAX Extensions
UpdateProgress
Timer
Triggers

3
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
ASP.NET AJAX Control Toolkit
Gerenciado sua Aplicao
Distribuindo sua Aplicao
Publish Web Site
Copy Web Site
Gerao de Instaladores

MDULO III
Acesso a Dados
Preparando o Ambiente
Anexando o Banco de Dados NorthWind
Principais Namespaces e Classes do ADO.NET
A classe SQLConnection
A classe SQLCommand
A classe SQLDataReader
Classe SqlParameter
Classe SqlTransaction
Classes DataSet e DataTable
Juntando Tudo
Controles Visuais

MDULO IV
Relacionando Controles
DetailsView
FormView
GridView Avanado
ListView e DataPager
LINQ

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

Login

No curso anterior estudamos autenticao por formulrios. Vimos que o


ASP.NET facilitou a autenticao de usurios deixando todo o trabalho, que no ASP
clssico tinha de ser feito manualmente, de forma quase que implcita. Porm em
uma aplicao real, tratar de usurios como um todo requer muito mais esforo de
programao: preciso abordar aspectos como criao de usurios, recuperao de
senhas, troca de senhas entre outros.
O ASP.NET mais uma vez tornou as coisas mais fceis: um conjunto de
controles prontos, que voc pode encontrar na guia Login da barra de ferramentas,
traz todas as funcionalidades relacionadas a login. Vamos ver quais controles
existem e do que trata cada um:
Login: controle de login de usurios;
LoginView: controle interessante que permite exibir contedo diferenciado
para usurios autenticados e no autenticados;
PasswordRecovery: controle de recuperao de senha;
LoginStatus: mostra a situao do login ao usurio;
LoginName: mostra o nome do usurio autenticado;
CreateUserWizard: um Wizard que permite a criao de um usurio passo a
passo;
ChangePassword: permite a troca de senha do usurios;

Para estudarmos os controles na prtica, crie uma nova aplicao ASP.NET


e monte uma estrutura de pginas, conforme a imagem abaixo:

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

Vamos iniciar com o controle CreateUserWizard para a criao de novos


usurios. Arraste um controle para o Web Form NovoUsuario.aspx:

6
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Na Smart Tag do controle, em Step, voc pode visualizar as duas etapas de
criao de usurios: Sign Up for Your New Account e Complete. Voc pode
personalizar o controle diretamente no template em cada uma destas etapas, para
isso basta clicar em Edit Templates na Smart Tag. O controle possui ainda uma
quantidade enorme de propriedades, por isso no podemos falar de todas aqui.
Muitas permitem sua personalizao com relao a comportamento, formato de
botes e textos. Para este ltimo item, procure principalmente por propriedades com
o sufixo text, como ContinueButtonText.
Vamos rodar a aplicao, definindo NovoUsuario.aspx como pgina inicial.
Preencha as informaes e clique em Create User:

Se voc no definiu uma senha com um mnimo de 7 caracteres, sendo um


no alfanumrico (como @,#,% etc), a criao do usurio ir falhar, e voc ver uma
mensagem como na imagem acima. O padro para a senha pode ser alterado
atravs de propriedades. Para resolver o problema de login informe uma senha com
os requisitos solicitados e clique novamente em Create User. Se tudo correu bem, o
usurio criado e a mensagem de criao com sucesso exibida. Se voc receber

7
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
uma mensagem de erro do SQL Server, leia na prxima seo como pode
solucionar estes problemas.

Neste momento voc j est apto a se autenticar no sistema, pois o usurio


j est criado. Porm, aonde este usurio foi gravado? O ASP.NET utiliza um
arquivo de dados do Sql Server, armazenado localmente em sua aplicao, para
gravar as informaes de usurios e permisses. Para visualiz-lo, localize a pasta
App_Data no Solution Explorer, clique com o boto direito sobre a mesma e escolha
a opo Refresh Folder, observe que exibido o arquivo ASPNETDB.MDF.

8
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
O banco de dados criado automaticamente pelo ASP.NET na primeira vez
que um recurso de Login integrado utilizado. Se voc quiser apagar todos os
usurios criados at o momento, basta excluir o banco de dados, na prxima
operao, ele ser novamente criado, obviamente que sem nenhuma informao.
Se voc quiser entender melhor a estrutura utilizada pelo ASP.NET para
armazenamento destas informaes, basta clicar com o boto direito sobre o banco
de dados e escolher a opo Open. O mesmo ser aberto no Server Explorer, onde
voc poder navegar na sua estrutura.

Controle Login e PasswordRecovery

Vamos agora conhecer o controle Login. Para isso adicione um controle ao


Web Form Login.aspx:

9
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Este controle tambm tem uma srie grande de propriedades, porm uma de
destaque a DestinationPageUrl, onde voc deve informar a pgina de destino de
redirecionamento da aplicao em caso de login com sucesso. O item de verificao
Remember me next time, se marcado, armazena o nome do usurio em um cookie
para o prximo login. Experimente executar um login com um usurio criado atravs
do controle CreateUserWizard. Acontece eventualmente de o usurio esquecer a
senha, e, normalmente, ele vai se dar conta disso ao tentar efetuar um login. Por
isso, vamos colocar nosso controle PasswordRecovery junto tela de login, abaixo
do controle Login:

10
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
O funcionamento deste controle requer alguns esclarecimentos: ele requer o
nome do usurio, apresenta a pergunta secreta e solicita a resposta. Havendo uma
resposta positiva o controle envia a senha para o e-mail cadastrado na criao da
conta. Porm, aqui temos dois detalhes importantes: primeiro, o controle no
recupera a senha, ele gera uma nova senha, isto porque, por padro, a senha
quando criada armazenada na forma de hash. Um hash uma forma de
criptografia irreversvel, ou seja, o sistema no consegue, mesmo tendo o algoritmo
de criptografia e o resultado desta criptografia, chegar ao valor original, ou seja, a
senha. Ao efetuar um login, o sistema pega a senha digitada pelo usurio,
transforma em hash e compara com o resultado armazenado no banco de dados, se
os valores coincidirem significa que a senha estava correta. Isto torna o mecanismo
mais seguro, porm, no caso de perda de senha, a nica opo a gerao de uma
nova senha.
Se voc executar a recuperao de senha, sua senha anterior ser perdida,
voc s vai conseguir acesso ao sistema se conseguir recuperar a nova senha
gerada. Como a senha enviada por e-mail, voc deve ter cadastrado um e-mail
vlido. A outra questo importante que temos que configurar um servidor smtp
vlido para que o ASP.NET consiga efetuar o envio da senha ao e-mail cadastrado.

11
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Isso deve ser feito atravs do arquivo de configurao web.config, como no exemplo
abaixo:
<system.net>
<mailSettings>
<smtp from="fulano@fulano.com.br">
<network
host="smtp.fulano.com.br"
port="25"
userName="usuario"
password="123456"
/>
</smtp>
</mailSettings>
</system.net>

Voc pode incluir esta configurao logo aps o n </system.net>, quase ao


final do seu web.config. Lembre-se que os dados acima so fictcios, voc deve
utilizar um servidor smtp de algum servio seu. Lembre-se tambm que o web.config
sensvel a maisculas e minsculas. Agora voc pode rodar a aplicao para
recuperar a senha. Na primeira etapa informe o nome do usurio, na segunda etapa
voc deve responder a pergunta secreta cadastrada na criao do usurio:

12
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Na terceira e ltima etapa voc vai ser informado que o e-mail foi enviado,
ou uma mensagem de erro caso alguma configurao impea o envio da
mensagem. Abaixo um exemplo de e-mail recebido com nova senha. Lembre-se que
a partir do momento que foi solicitada a troca, o login s poder ser efetuado com a
nova senha:

As senhas geradas normalmente so bem complexas e difceis, formadas


por muitos caracteres no alfanumrico. Isto pode ser resolvido com uma troca de
senha.

Controle ChangePassword

Vamos estudar agora o controle que nos permite trocar a senha. Abra a
pgina TrocarSenha.aspx e acione ao mesmo um controle ChangePassword:

13
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Este controle no possui grandes mistrios, basta informar a senha atual, a
nova senha e confirm-la. Vamos fazer uma pausa para esclarecimentos antes de
conhecermos os demais controles. Rode a sua aplicao e observe que, mesmo
sem criar um usurio ou efetuar um login, voc consegue navegar livremente entre
todas as pginas. Isto porque no definimos as opes de autenticao e
autorizao em nosso web.config. Voc deve estar lembrado no primeiro curso,
quando estudamos autenticao com formulrios, que era necessrio informar ao
ASP.NET qual era a forma de autenticao utilizada, qual era a pgina de login e
quais pginas tem acesso livre, independente de login.
Estas configuraes ainda so necessrias, mesmo que estejamos
utilizando controles prontos, o ASP.NET deve ser informado sobre nossas
necessidades de autenticao e autorizao. Se voc no se lembra dos elementos
e de como ele so necessrios, d uma nova olhada no primeiro curso. De qualquer
forma, vou colocar aqui as configuraes necessrias, mas no vou explicar em
detalhes o que cada elemento significa.
Para indicar que nossa aplicao utiliza autenticao por formulrios, voc
deve configurar o seu web.config da seguinte forma:
<authentication mode="Forms">
<forms name=".Login"
loginUrl="Login.aspx"
defaultUrl="default.aspx" />
</authentication>
<authorization>
<deny users="?"/>
</authorization>

Voc j deve encontrar o elemento authentication em seu web.config e s


precisa alter-lo para ficar como no exemplo. Isto vai liberar o acesso pgina de
login, para que o usurio consiga se autenticar. Porm a pgina NovoUsuario.aspx
deve ter livre acesso, para que novos usurios possam se cadastrar no sistema. Isto
feito atravs de um elemento authorization no web.config:

14
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
<location path="NovoUsuario.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>

Este elemento pode vir aps o n </system.net>, prximo ao final do


arquivo. Neste ponto sua aplicao, com exceo das pginas de login e de criao
de usurios, s estaro acessveis mediante login.

LoginStatus e LoginName

Vamos agora estudar dois outros controles: LoginStatus e LoginName. Login


status permite criar um link para fazer Login ou Logoff da aplicao, conforme o
status do usurio. J o controle LoginName apresenta o nome do usurio logado.
Adicione um controle LoginStatus e um controle LoginName pgina Default.aspx,
definindo esta ltima como pgina incial. Execute a aplicao, faa o login e observe
o efeito na pgina:

15
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Experimente adicionar os controles a pgina NovoUsuario.aspx, e acesse a
mesma sem efetuar login. Note que agora LoginStatus tem em seu label Logon, e se
clicado redireciona pgina de Login. O controle LoginName no exibe nada, pois
no h usurio autenticado.

LoginView

O ltimo controle que vamos estudar o LoginView. Este controle possui


dois containers, de visualizao mutuamente exclusiva: uma para quando o usurio
est autenticado, outra para quando o usurio no efetuou login. Para testar o
controle, vamos adicion-lo pgina NovoUsuario.aspx e definir contedos
diferentes para cada container, em seguida vamos acessar a pgina primeiramente
sem efetuar login, e em seguida efetuando login.
Mos obra. Abra a pgina NovoUsurio.aspx e adicione o controle
LoginView pgina. Na Smart Tag do controle, defina view como
LoggedinTemplate, e adicione um controle LoginName ao seu container, como na
imagem abaixo:

16
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Agora altere a opo view na Smart Tag para AnonymousTemplate e
adicione um controle Login ao seu container. Rode a aplicao. Acesse a pgina
diretamente e depois acesse efetuando primeiramente a pgina de login. Note que
para usurios no autenticados, apresentada a opo de efetuar login no sistema.
Para usurios autenticados, exibido o nome do usurio.

Solucionando problemas de Login com o Sql Server

Para que as funcionalidades de Membership e Roles funcionem, o ASP.NET


necessita do Sql Server instalado e configurado, caso contrrio, ao tentar utilizar o
recurso, voc poder ter mensagem de erro relacionada a acesso ao Sql Server,
como no exemplo abaixo:

Inicialmente certifique-se de estar com uma instncia do Sql Serve instalada.


Voc pode baixar uma verso gratuita do Sql Server 2005 ou 2008, denominada

17
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Express, em www.microsoft.com/sql. Se voc est utilizando uma instncia remota
do Sql Server, configurada em web.config, necessrio certificar-se de que o
mesmo est habilitado para receber conexes remotas. Por padro, conexes
remotas esto desabilitadas. Para habilitar conexes remotas localizar o aplicativo
SQL Server Surface Area Configuration no menu do prprio Sql Server. Localize a
opo Conexes Remotas e as habilite, como na imagem abaixo:

O utilitrio solicitar que o servio DataBase Engine do Sql Server seja


reiniciado. Voc pode fazer isso de diversas formas, porm as mais acessveis so
atravs do Sql Server Management Studio, a ferramenta de administrao do Sql
Server, ou nas ferramentas administrativas do sistema operacional, opo Servios.

Navegao

18
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Aplicaes web do mundo real normalmente possuem certa complexidade,
podendo conter dezenas ou at milhares de pginas diferentes. Sob o ponto de vista
do usurio, a aplicao deve ser capaz de oferecer recursos de navegao
apropriados, de modo que usurio saiba em que local da aplicao ele se encontra,
como pode mudar para uma pgina da mesma seo, ou mesmo mudar de seo,
acessar a sua conta, ver seus pedidos entre outros.
Mais uma vez o ASP.NET 3.5 nos trs recursos avanados de navegao
atravs de controles prontos. Tudo a fazer colocar estes controles em nossas
pginas e configur-los. A navegao no ASP.NET 3.5 pode ser configurada atravs
de trs controles: SiteMapPath, TreeView e Menu, que podem ser encontrados na
guia Navigation da barra de ferramentas. Outra grande vantagem destes controles
que os mesmos podem operar integrados, utilizando um nico arquivo de
configurao: voc faz uma alterao no arquivo e a mesma refletiva em toda a
estrutura de navegao da aplicao.
Nesta seo, primeiramente vamos entender o que cada um dos trs
controles, depois vamos montar a estrutura de um site fictcio, montar um arquivo de
configurao de navegao e finalmente colocar os controles em prtica.
Vamos ver a funo de cada controle:
SiteMapPath: Mostra a posio da pgina atual em relao estrutura
organizacional do site;
TreeView: Mostra o menu de navegao em forma de rvore, com ns
expansveis que podem conter outros ns;
Menu: Apresenta uma estrutura de navegao em forma de menus.

Para voc entender melhor, vamos pegar um exemplo real e mostrar onde
cada um destes controles poderia ser utilizado. A imagem abaixo foi capturada do
site do Portal Educao, assinalei onde. Se fssemos contratados para desenvolver
o site do Portal, poderamos aplicar cada um dos controles de navegao:

19
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Vamos agora estrutura de nossa aplicao de exemplo: um hipottico site
de comrcio eletrnico. Crie uma aplicao ASP.NET 3.5 nova, uma Master Page. A
prxima etapa a criao do arquivo de configurao. A configurao feita atravs
de um arquivo web.sitemap, que nada mais do que um arquivo com elementos
XML que devem representar a estrutura do site. Acesse o menu WebSite, Add New
Item, selecione o template Site Map e clique em Add.

20
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Agora monte uma estrutura com os Web Forms como no exemplo abaixo,
no se esquecendo de incluir, em cada pgina criada, a Master Page:

21
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Se voc no lembra o que ou como criar uma Master Page, hora de
recordar o primeiro curso. Abra sua Master Page, monte uma estrutura como na
imagem mais abaixo: um controle Menu, logo abaixo um controle SiteMapPath e na
Lateral um controle TreeView, aplique uma autoformatao para cada um destes
controles. Em seguida, na parte superior adicione um controle SiteMapDataSouce,
que pode ser encontrado na guia Data da barra de ferramentas, este controle tem
por objetivo ligar o arquivo de configurao que web.sitemap com os controle Menu
e Treeview. A ligao do controle SiteMap com o arquivo de configurao feita
automaticamente.
Vamos s configuraes necessrias. Clique no SiteMapDataSource, altere
a propriedade ShowStartingNode para false, isto vai fazer com que o n raiz, a
pgina inicial da aplicao, no seja exibida nos controles TreeView e Menu, o que
torna a funcionalidade destes controles mais elegante. Clique no controle Menu,
localize a propriedade DataSourceID e defina como SiteMapDataSource1. Faa o
mesmo no controle TreeView.
Utilizei um elemento table para dar um posicionamento aos controles. Se
voc tiver dificuldade em montar a estrutura da imagem, logo aps a tela
apresentado o contedo da pgina master, tudo o que voc precisa fazer substituir
o cdigo existente pelo cdigo do exemplo:

22
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
<%@ Master Language="VB" CodeFile="MasterPage.master.vb"
Inherits="MasterPage" %>

<!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>
<table border="0" cellpadding="0" cellspacing="0" >
<tr>
<td colspan="2" style="height: 38px">
<asp:Menu ID="Menu1" runat="server" Orientation="Horizontal"
DataSourceID="SiteMapDataSource1" BackColor="#FFFBD6"
DynamicHorizontalOffset="2" Font-Names="Verdana" Font-Size="0.8em"
ForeColor="#990000" StaticSubMenuIndent="10px">
<StaticSelectedStyle BackColor="#FFCC66" />
<StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
<DynamicHoverStyle BackColor="#990000" ForeColor="White" />
<DynamicMenuStyle BackColor="#FFFBD6" />
<DynamicSelectedStyle BackColor="#FFCC66" />
<DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px"
/>
<StaticHoverStyle BackColor="#990000" ForeColor="White" />
</asp:Menu>
</td>
</tr>
<tr>

23
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
<td colspan="2">
<asp:SiteMapPath ID="SiteMapPath1" runat="server" Font-
Names="Verdana" Font-Size="0.8em" PathSeparator=" : ">
<PathSeparatorStyle Font-Bold="True" ForeColor="#990000" />
<CurrentNodeStyle ForeColor="#333333" />
<NodeStyle Font-Bold="True" ForeColor="#990000" />
<RootNodeStyle Font-Bold="True" ForeColor="#FF8000" />
</asp:SiteMapPath>
</td>
</tr>
<tr>
<td style="width: 164px" ><br />
<asp:TreeView ID="TreeView1" runat="server"
DataSourceID="SiteMapDataSource1" ImageSet="BulletedList4"
ShowExpandCollapse="False">
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
<SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD"
HorizontalPadding="0px"
VerticalPadding="0px" />
<NodeStyle Font-Names="Tahoma" Font-Size="10pt" ForeColor="Black"
HorizontalPadding="5px"
NodeSpacing="0px" VerticalPadding="0px" />
</asp:TreeView>
</td>
<td >

<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">


</asp:contentplaceholder>
</td>
</tr>
</table>
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server"
ShowStartingNode="False" />
</div>
</form>
</body>
</html>

Arquivo SiteMap

Vamos agora tratar do arquivo de configurao. Este arquivo, que tem uma
estrutura em XML, determina o funcionamento de todos os controles de navegao
que adicionamos a nossa aplicao. O arquivo que criamos anteriormente apresenta
em seu interior um esqueleto de configurao:

24
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0"
>
<siteMapNode url="" title="" description="">
<siteMapNode url="" title="" description="" />
<siteMapNode url="" title="" description="" />
</siteMapNode>
</siteMap>

As duas primeiras linhas dizem respeito ao formato e verso do arquivo e


no devem ser alteradas. Cada n deste arquivo representa um elemento de nosso
site, podendo ser uma pgina aspx ou at mesmo uma pasta. Elementos
hierarquicamente inferiores devem estar contidos dentro dos elementos pai.
Podemos ter uma representao lgica, ou seja, que ser exibida para o usurio,
diferente da representao fsica em que de fato o site foi montado. Tudo depende
de como vamos criar nosso arquivo Site Map. No nosso exemplo vamos imitar, na
estrutura lgica, a estrutura fsica.
Antes de montarmos o arquivo para o site inteiro, vamos estudar uma
pequena parte do mesmo, a fim de facilitar a compreenso:
<siteMapNode url="" title="Eletrnicos" description="Setor de Eletrnicos" >
<siteMapNode url="Eletronicos/Audio.aspx" title="udio" description="udio" />
<siteMapNode url="Eletronicos/Video.aspx" title="Vdeo" description="Vdeo" />
</siteMapNode>

Cada elemento possui trs atributos: a URL, que o endereo para


navegao ao recurso, um ttulo que ser exibido no controle, e uma descrio, que
ser mostrada atravs de um Tool Tip. Note que o primeiro elemento no tem URL,
isto porque se trata de uma pasta na nossa estrutura fsica. Na verdade este
elemento foi criado com fins de agrupar elementos comuns. Se voc observar a
estrutura criada para informtica, ver que a mesma tem um nvel a mais que a
estrutura eletrnica, e que existe uma pgina pai para a estrutura denominada
Informatica.aspx, que, em uma aplicao real, seria a pgina principal do setor de
informtica, podendo conter, por exemplo, ofertas especficas do setor.
Voltando ao exemplo anterior, note que o primeiro elemento SiteMapNode
s fechado na quarta linha, ao contrrio dos dois elementos centrais, que so
fechados ao final do prprio elemento (note a barra ao final da linha). Isto significa

25
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
que os dois elementos centrais so ns filhos. Na exibio nos controles sero
mostrados aps (ou subordinados) ao n pai. Entendidos estes aspectos, voc j
pode montar o arquivo para toda a aplicao, confrontando-o se necessrio com o
modelo abaixo:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0"
>
<!--Pgina Inicial: raiz -->
<siteMapNode url="Default.aspx" title="Home" description="Pgina
Inicial">
<!--Eletrnicos-->
<siteMapNode url="" title="Eletrnicos" description="Setor de
Eletrnicos" >
<siteMapNode url="Eletronicos/Audio.aspx" title="udio"
description="udio" />
<siteMapNode url="Eletronicos/Video.aspx" title="Vdeo"
description="Vdeo" />
</siteMapNode>
<!--Informtica-->
<siteMapNode url="Informatica/Informatica.aspx" title="Informtica"
description="Setor de Informtica" >
<!--Estaes de trabalho-->
<siteMapNode url="" title="Estaes de Trabalho" description="Setor
de Estaes de Trabalho" >
<siteMapNode url="Informatica/EstacoesTrabalho/Completos.aspx"
title="Completos" description="Computadores Completos" />
<siteMapNode url="Informatica/EstacoesTrabalho/CPU.aspx" title="CPUs"
description="Apenas CPUs" />
</siteMapNode>
<!--Notebooks-->
<siteMapNode url="" title="Notebooks" description="Setor de
Notebooks" >
<siteMapNode url="Informatica/Notebooks/Athlon.aspx" title="Athlon"
description="Notebooks Athlon" />
<siteMapNode url="Informatica/Notebooks/Pentium.aspx" title="Pentium"
description="Notebooks Pentium" />
</siteMapNode>
<!--Fecha o n da Informtica-->
</siteMapNode>
<!--Fecha o n da Pgina Inicial -->
</siteMapNode>
</siteMap>

O XML se tornou um padro em formato de arquivos de troca de


informaes, porm, s vezes tratar arquivos XML sem uma ferramenta adequada
pode ser um tanto complexo. Voc pode usar algum editor de XML existente no
mercado para criar e manter seus arquivos web.sitemap. Existem tambm algumas
ferramentas desenvolvidas especificamente para isto, como o ASP.NET 2.0 Web

26
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Menu Editor, de autoria de Dave Sussman, que pode ser localizado em
http://www.ipona.com/. Trata-se de uma ferramenta simples, porm funcional,
gratuita e desenvolvida em C# utilizando Windows Forms. fornecida juntamente
com o cdigo fonte. Abaixo, a imagem mostra o editor carregado com o arquivo
web.sitemap que criamos nos pargrafos anteriores:

Rode a aplicao, observe que voc pode navegar em todas as pginas


utilizando TreeView e Menu:

27
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 no SiteMapPath, a navegao vertical, mostrando
apenas o n atual e as razes dos ns anteriores. Veja, por exemplo, que em
Notebooks no uma pgina navegvel, j que a raiz de seu n no possua uma
URL.

Web Services

Um dos grandes problemas do mundo da tecnologia diz respeito


interoperabilidade entre sistemas. Sistemas so desenvolvidos utilizando
arquiteturas, plataformas, linguagens, modelos e bancos de dados diferentes, porm
de uma forma ou de outra estes sistemas precisam interagir, trocar dados e
informaes. O XML veio como um padro para a troca de informaes. Em formato
texto qualquer sistema pode facilmente ser adaptado para ler e gerar arquivos neste
formato, alm de poder ser entendido at por humanos.
Porm, um formato de troca de informaes padronizado no suficiente,
necessria ainda uma arquitetura onde estas informaes possam ser trocadas: os
Web Services. O web service trafega sobre HTTP (ou HTTPS), o que torna a

28
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
arquitetura natural e comum para a internet: normalmente um Web Service no
encontra problemas de bloqueios em firewalls ou de configurao de portas TCP. O
protocolo utilizado pelo servio o SOAP (Simple Object Access Protocol), definido
pela W3C. Este protocolo especifica padres de envelopamento da mensagem,
mecanismos de erros entre outros. Por trafegar sobre HTTP, geralmente Web
Services podem rodar sobre os mesmos servidores Web que rodam as aplicaes
Web comuns.
Quando h necessidade de se consumir um Web Service, necessrio
primeiramente conhec-lo: quais mtodos esto disponveis, quais parmetros so
necessrios e quais os valores de retorno? O WSDL (Web Services Description
Language) tem esta funo: descrever o Web Service. Criar e consumir um Web
Service extremante simples: o Visual Studio cria toda a estrutura necessria para o
funcionamento do servio, voc tem que implementar somente aquilo que
especfico do seu Web Service.
Para conhecermos estes conceitos na prtica vamos agora implementar um
Web Service, depois criar uma aplicao para consumir o servio prestado por ele.
Finalmente, iremos consumir o servio de um Web Service qualquer, disponvel na
internet. Depois criar um novo Web Service. Clique em New Web Site, porm ao
invs de selecionar ASP.NET Web Site, selecione ASP.NET Web Service:

29
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Veja que o VS cria a estrutura necessria para o servio: Service.vb (ou
Service.cs): onde implementaremos nossas classes e mtodos. Service.asmx o
arquivo padro do Web Service:

Abra o arquivo Service.vb (ou Service.cs). Aps a incluso da referncia no


topo do arquivo, o mesmo j traz criada uma classe, Service, e dentro desta classe

30
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
uma Funo: HelloWord. Esta funo nada mais do que um exemplo de um
servio que estar disponvel para quem consumir o servio.

Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols

<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
_
Public Class Service
Inherits System.Web.Services.WebService

<WebMethod()> _
Public Function HelloWorld() As String
Return "Hello World"
End Function

End Class

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
public Service () {

//Uncomment the following line if using designed components


//InitializeComponent();
}

[WebMethod]
public string HelloWorld() {
return "Hello World";
}

Voc pode implementar servios dentro de um Web Service da mesma


forma que declara procedimentos e funes, a no ser pelo atributo WebMethod
includo junto ao cabealho da rotina: este atributo obrigatrio para que a rotina
esteja visvel e assim possa ser consumida. Procedimentos sem estes atributos so
considerados de uso interno do servio.

31
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
A aplicao criada tudo o que voc precisa para execut-la. Porm, para
dar um pouco mais de sentido ao nosso estudo, vamos apagar o mtodo HelloWorld
e implementar um novo mtodo, que recebe uma temperatura em grau Fahrenheit e
converte para grau Celsius:
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols

<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
_
Public Class Service
Inherits System.Web.Services.WebService

<WebMethod()> _
Public Function ConverteparaCelsius(ByVal F As Double) As Double
Return (F - 32) / 1.8
End Function
End Class

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
public Service () {

//Uncomment the following line if using designed components


//InitializeComponent();
}

[WebMethod]
public double ConverteparaCelsius(double F)
{
return (F - 32) / 1.8;
}

Agora voc j pode rodar a aplicao. Execute a mesma tendo como pgina
inicial o arquivo Service.asmx:

32
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
O que voc v inicialmente no o Web Service, tampouco seu WSDL,
trata-se de uma pgina de informaes do Web Service. Para visualizar seu WSDL,
clique sobre o link Descrio de Servio. Este link na verdade um atalho para a
URL http://localhost/WebSite15/Service.asmx?WSDL, que traz a WSDL de nosso
Web Service:

33
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Examine as informaes, note que so todas referentes ao Web Service
criado e ao mtodo ConverteparaCelsius disponibilizado. Agora volte pgina
inicial, clicando no link que possui o nome do mtodo, ConverteparaCelsius: voc
redirecionado a uma pgina onde pode testar o mtodo:

34
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Preencha um valor no campo e clique em chamar: a aplicao retorna o
resultado, porm sem o empacotamento da mensagem, apenas o resultado:

35
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Consumindo um Web Service

Um Web Service produzido para prestar algum servio a terceiros, e no a


prpria aplicao. Vamos ver agora como consumir o Web Service criado. Para isso
vamos adicionar uma aplicao ASP.NET soluo criada. Inicialmente verifique se
o seu Visual Studio est exibindo a soluo. Na imagem abaixo a soluo o item
na raiz do Solution Explorer:

36
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Se sua aplicao no exibe a soluo, clique no menu Tools, options,
Projects and Solutions, General. Localize e marque a opo Always show solution,
como na imagem abaixo:

Agora voc pode adicionar um novo projeto soluo. Clique com o boto
direito no item da soluo no Solution Explorer, Add, New Web Site. Mantenha o
nome padro.

37
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Agora clique com o boto direito sobre o Web Site criado e selecione Add
Web Reference:

Nosso objetivo criar uma referncia ao servio criado para que possamos
consumi-lo. Na primeira etapa da tela Add Web Reference, clique em Web services
in this solution:

38
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Em seguida deve ser exibido o Web Service Service, que criamos
anteriormente. Clique sobre o nome do servio.

39
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Ainda dentro da tela exibida a pgina asmx do servio. Clique em Add
Reference para finalizar a tela e criar as referncias:

40
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Note que no campo Web Reference name podemos criar um apelido para o
Web Service, em nosso exemplo mantivemos o nome padro oferecido pelo VS.
Examine o projeto e veja que foram criados alguns arquivos contendo referncias e
descries do Web Service. Vamos agora, finalmente, consumir o servio. Abra o
Web Form default.aspx e monte uma pequena interface sobre ele, contendo um
controle TextBox, um Button e um Label, como na imagem abaixo:

41
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 no controle Button e adicione o cdigo abaixo. Tudo que
feito criar um instncia do servio, em seguida invocamos a funo
ConverteparaCelsius, que exibido em um controle Label:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim conversao As New localhost.Service
Label1.Text = conversao.ConverteparaCelsius(TextBox1.Text)
End Sub

protected void Button1_Click(object sender, EventArgs e)


{
localhost.Service conversao = new localhost.Service();
double valor = Convert.ToDouble(TextBox1.Text);
Label1.Text = Convert.ToString( conversao.ConverteparaCelsius
(valor));
}

Rode a aplicao e faa alguns testes:

Consumindo um Web Service de Terceiros

Vamos agora experimentar consumir um servio de terceiros, hospedado em


algum lugar ignorado, desenvolvido sob uma plataforma desconhecida. O primeiro
passo encontrar o Web Service. Existem diversas ferramentas especializadas em
buscar este tipo de aplicao. Alguns Web Services so gratuitos, outros devem ser

42
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
pagos, outros so solues especficas que no esto disponveis publicamente.
Vou utilizar o Web Service cujo WSDL que se encontra no endereo
http://webservices.daehosting.com/services/TemperatureConversions.wso?WSDL.
Para criar uma referncia a um servio em sua aplicao, voc vai precisar do
endereo de seus WSDL, pois se lembre: este arquivo possui todas as informaes
necessrias para que possamos consumir os servios. Este Web Service
especificamente vai nos disponibilizar um servio de... Surpresa!!! Converso de
temperaturas. Pena que no fomos os primeiros a ter esta ideia.
A Web em geral algo muito dinmica, se no momento de fazer o teste o
servio no estiver mais disponvel, faa uma pesquisa e localize um servio
semelhante. Mo obra! Crie uma nova aplicao ASP.NET, no aproveite a
mesma soluo para evitar confuso. Clique com o boto direito sobre a mesma e
selecione Add Web Reference, em URL coloque o endereo do WSDL do servio.

Clique em Go. O VS apresenta a pgina de entrada do servio, veja que


existem diversos mtodos de converso disponveis. Clique em Add Reference.

43
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Monte uma interface semelhante ao exemplo de consumo de nosso Web
Service:

D um clique sobre o boto e escreva o seguinte cdigo:

44
Este material deve ser utilizado apenas como parmetro de estudo deste Programa. Os crditos deste contedo so dados aos seus respectivos autores
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim conversao As New
com.daehosting.webservices.TemperatureConversions
Label1.Text = conversao.FahrenheitToCelcius(TextBox1.Text)
End Sub

protected void Button1_Click(object sender, EventArgs e)


{
com.daehosting.webservices.TemperatureConversions conversao = new
com.daehosting.webservices.TemperatureConversions();
decimal valor = Convert.ToDecimal(TextBox1.Text);
Label1.Text = Convert.ToString(
conversao.FahrenheitToCelcius(valor));
}

O cdigo bem semelhante ao nosso exemplo, assim como o resultado de


converso deve ser igual, a no ser que algum tenha errado na frmula. Atravs do
intellisense do VS voc pode verificar que existem diversos outros mtodos de
converso disponveis neste servio. Um ltimo ponto a respeito de Web Services:
um simples caractere transmitido atravs de um Web Service, empacotado atravs
do protocolo SOAP e conduzido atravs de HTTP, vai se transformar em uma
quantidade de informaes surpreendentemente maior, ou seja, a tecnologia deve
ser utilizada quando realmente existem requisitos para o negcio para qual ela foi
criada: interoperabilidade.

----------------FIM DO MDULO I-----------------

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

Você também pode gostar