Você está na página 1de 11

ASP.

NET
Michael Schuenck dos Santos Curso de Sistemas de Informao Centro Universitrio Luterano de Palmas (CEULP/ULBRA) Caixa Postal 15.064 91.501-970 Palmas TO Brasil
michael@ulbra-to.br

1. Introduo
ASP.NET (Active Server Pages.NET) compe a forma de se criar pginas da Internet utilizando-se a plataforma .NET. Esta plataforma prov uma srie de servios, atravs de classes existentes no Microsoft .NET Framework. Com ele, possvel a construo no apenas de pginas Web, mas tambm, de aplicativos desktop, aplicativos para dispositivos mveis, objetos de negcios, web services, etc. Pode-se dizer que a plataforma .NET similar plataforma Java, que tambm oferece diversos servios. Dentre suas principais diferenas, destacam-se as seguintes caractersticas: a plataforma Java utiliza a linguagem de programao Java e seus aplicativos so hbridos (compilados e interpretados, caracterstica que permite que os aplicativos sejam multi-plataforma); enquanto que em .NET, pode-se utilizar Visual Basic.NET, C++, JScript.NET ou C# (que estar sendo utilizada neste curso), e os aplicativos gerados so compilados em uma linguagem chamada MSIL (Microsoft Intermediate Language). No caso das pginas ASP.NET, sua compilao realizada no momento em que elas so chamadas pela primeira vez atravs do browser, que apresenta o contedo final em HTML (Hypertext Markup Language). A execuo de pginas ASP.NET requer a utilizao do IIS (Internet Information Server), alm da instalao do .NET Framework SDK. As pginas ASP.NET podem ser escritas utilizando-se editores de textos planos, tal como Bloco de Notas e Vi. Porm, existem vrias ferramentas que auxiliam o desenvolvimento de pginas ASP.NET. Algumas das ferramentas de maior destaque so: ?? Microsoft ASP.NET We b Matrix - um software especfico para construo de aplicativos para a Web que utilizam a plataforma .NET. bastante leve (1,3 Mb), apesar de prover muitos recursos de desenvolvimento. uma ferramenta gratuita, podendo ser baixada em http://www.asp.net/webmatrix/. ?? Macromedia Dreamweaver MX seguindo a tradio de suas verses anteriores, este software suporta vrias tecnologias (ASP, ASP.NET, JSP, PHP, CSS, Java, XML, entre outras). Uma verso para teste pode ser encontrada em http://www.dreamweaver.com. ?? Microsoft Visual Studio .NET considerado pela Microsoft, o seu principal ambiente de desenvolvimento, suportando a criao de solues baseadas na plataforma .NET, incluindo-se aplicativos desktop, ASP.NET, web services, classes, aplicativos para dispositivos mveis, entre outros. Sua pgina na Internet http://msdn.microsoft.com/vstudio/.

2. ASP.NET, HTML e C#
As pginas ASP.NET produzem arquivos de extenso .aspx. Normalmente, elas so divididas em duas sees principais: HTML e, no nosso caso, C# (C Sharp) [Payne 2001]. Assim, o cdigo C# colocado dentro do elemento script , antes do cdigo HTML propriamente. necessrio ainda, que seja explicitada a linguagem que est sendo utilizada, o que feito com uso da diretiva Page Language, que adicionada no incio do cdigo da pgina. Um exemplo simples de uma pgina ASP.NET o seguinte:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <%@ Page Language="C#" %> <script runat="server"> void limpar(object sender, EventArgs e) { Label2.Text = " "; } </script>

Cdigo ASP.NET

<html> <body> <form runat="server"> <div align="center"> <asp:Label id="Label1" runat="server" font-size="Large" font-bold="True"> Pgina de Exemplo</asp:Label> <asp:Label id="Label2" runat="server">Esta uma pgina de exemplo, onde exemplificada a diviso entre o cdigo HTML e ASP.NET</asp:Label> Cdigo HTML <asp:Button id="Button1" onclick="limpar" runat="server" text="Limpar"/> </div> </form> </body> </html>

Figura 1. Diviso do cdigo de uma pgina ASP.NET

Nota-se, que o elemento script possui um atributo runat , que possui o valor server. Isto significa que todo o contedo deste elemento estar sendo executado no servidor [Payne 2001]. Isto necessrio pelo fato de ser o servidor, o lugar onde est instalado o .NET framework (o cliente no necessariamente o ter instalado). A linguagem C# possui muitas semelhanas com as linguagens C, C++ e Java. Assim, o cdigo case-sensitive (existe diferena entre letras maisculas e minsculas), e declaraes de variveis, operadores e estruturas de controle so utilizados praticamente da mesma maneira que nestas linguagens. Por exemplo, para se declarar uma varivel do tipo inteiro, basta escrever o seguinte:
int variavel;

A forma do cdigo ASP.NET se comunicar com o cdigo HTML atravs de funes que so invocadas por controles de servidor (que sero visto adiante, em detalhes), por meio do evento onclick. Outra forma desta comunicao acontecer ocorre no momento em que a pgina carregada, por meio da funo Page_Load. 2.1 Tipos de dados de C# Os tipos de dados suportados por C# so apresentados na tabela abaixo [Payne 2001]:

Tabela 1: Tipos de dados do C#

Tipo byte sbyte int uint long ulong short ushort decimal double float bool char string

Descrio Inteiro de 1 bit sem sinal (0 a 255). Inteiro com sinal de 8 bits (-127 a 128). Inteiro de 32 bits com sinal (-2.147.483.648 a 2.147.483.147). Inteiro de 32 bits sem sinal (0 a 4.294.967.295). Inteiro com sinal de 64 bits (-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807). Inteiro sem sinal de 64 bits (0 a 18.446.744.073.709.551.615). Inteiro com sinal de 16 bits (-32.768 a 32.767). Inteiro sem sinal de 16 bits (0 a 65.535). -45 308 Ponto flutuante decimal de 128 bytes (? 1.5 x 10 a ? 1.7 x 10 ). Este tipo tem uma preciso de 28 casas decimais. -45 308 Ponto flutuante binrio de 8 bytes (? 1.5 x 10 a ? 1.7 x 10 ). Este tipo tem uma preciso de 15 casas decimais. -45 38 Ponto flutuante binrio de 4 bytes (? 1.5 x 10 a ? 3.4 x 10 ). Este tipo tem uma preciso de 7 casas decimais. Tipo de dados booleano, ou seja, pode ser apenas true ou false. Um nico caractere unicode de 16 bits. Unicode com at 1 gigabyte de caracteres. Dentre os tipos de dados nativos do C#, este o nico cuja passagem (a funes ou mtodos) feita por referncia, ou seja, o que passado no seu valor, mas um ponteiro indicando o local da memria em que se encontra aquela varivel.

2.2 Estruturas de controle de C# As principais estruturas de controle de C# so as seguintes: ?? if ... else if ... else estruturas de deciso simples, em que a clusula if ocorre apenas uma vez, a clusula else if pode ocorrer nenhuma ou vrias vezes e a clusula else opcional.
if (condio1) { instrues1; } else if (condio2) { instrues2; } else { instrues3; }

?? switch case - estruturas de deciso caracterizadas pela possibilidade de uma varivel possuir vrios valores. A clusula switch ocorre uma vez, a clusula case pode ocorrer de uma a vrias vezes, e default opcional.

switch (varivel) { case 1 valor que a varivel pode assumir: instrues1; break; case 2 valor que a varivel pode assumir: instrues2; break; case 3 valor que a varivel pode assumir: instrues3; break; default: instrues para condies no previstas explicitamente; }

?? for - estrutura de repetio caracterizada pela existncia de trs parmetros: um valor inicial, uma condio para parada das iteraes, e a quantidade de incrementos ou decrementos a cada iterao.
for (int i=0; i>valor; i++) { instrues; }

?? foreach esta estrutura de repetio uma variao do for. Sua diferena est no fato de ser necessrio apenas especificar uma varivel inteira e a coleo (array) cujos registros sero percorridos.
foreach (int i in vetor) { instrues; }

?? while - estrutura de repetio que realiza as operaes desejadas enquanto a condio especificada for verdadeira.
while (condio) { instrues; }

?? do ... while - estrutura de repetio semelhante anterior, com o diferencial de que as condies so verificadas no final da execuo, permitindo as operaes especificadas sejam executadas pelo menos uma vez.
do { instrues; } while (condio);

2.3 Operadores de C# Os principais operadores de C# so apresentados a seguir [Payne 2001]:

Tabela 2: Operadores do C#

Categoria Aritmticos Atribuio Concatenao Criao de Objetos Igualdade/Diferena Incremento/Decremento Lgicos Primrios Relacionais

Operadores +, -, *, /, % =, +=, -=, *=, /=, <<=, >>=, &=, ^=, |= + New ==, != ++, -&, ^, |, &&, ||, ~, ! typeof, sizeof, checked, unchecked <, >, <=, >=, is

Tendo sido apresentada a linguagem C#, sero apresentados adiante, os formulrios da Web, com os quais, C# interage de forma a ser utilizado em pginas Web.

3. Formulrios da Web
Os formulrios da Web constituem a principal forma de interao entre o usurio e uma pgina Web. Dentro deles, esto contidos recursos para captao de dados, tais como caixas de texto, caixas de listas e botes. sobre estes controles que, geralmente, so realizadas as operaes que caracterizam uma pgina dinmica (aquela que no apenas exibe informaes estticas, mas permitem interaes e realizam algum processamento). Com a tecnologia ASP.NET, possvel construir aplicativos Web com facilidades semelhantes s da construo de aplicativos desktop, com Delphi ou C++ Builder, por exemplo. Ou seja, possvel acessar o contedo dos componentes dos formulrios e associar eventos ao cdigo (no nosso caso, em C#). Em se tratando de aplicativos Web, esta tarefa era permitida apenas por JavaScript, que por outro lado, no constitua, isoladamente, um recurso para comunicao com um servidor, outra caracterstica tambm oferecida por ASP.NET. ASP.NET suporta o uso de elementos HTML, desde que possuam o atributo passando a serem chamados de controles de servidor HTML. Isto se deve ao fato de ASP.NET ser baseada no servidor, caso contrrio, ele no poderia enxergar os controles [Payne 2001]. Os controles normalmente possue m atributos, especficos para cada um, que permitem sua alterao de vrias formas. Como estes controles so, na verdade, alguns dos elementos HTML, eles no sero apresentados aqui, mas podem ser encontrados nas ferramentas de desenvolvimento.
runat= server ,

Existem ainda, os controles de servidor da Web, que so semelhantes aos controles de servidor HTML. Eles foram criados para serem utilizados especificamente por pginas ASP.NET e podem representar elementos de interface mais complexos, tal como calendrios [ASP.NET 2003]. Sua utilizao feita da seguinte maneira:
<asp:NomeDoControle id=nome runat=server>

Eles podem possuir vrios outros atributos, dependendo do tipo de controle e da necessidade do desenvolvedor. Estes controles so colocados no cdigo entre as tags do cdigo HTML, dentro de um formulrio (representado pelo controle form). Os principais controle de servidor da Web so apresentados na tabela a seguir [ASP.NET 2003].

Tabela 3: Controles de servidor da Web

Nome Button Calendar CheckBox CheckBoxList DataGrid DataList DropDownList Image Label LinkButton ListBox RadioButton

Descrio Boto Calendrio grfico que permite a navegao e escolha de datas Caixa para selecionar ou no um item Grupo de caixas de seleo que normalmente esto relacionadas entre si Mecanismo para exibio de dados em forma de linhas e colunas, sendo possvel a classificao e edio Mecanismo parecido com o DataGrid, porm, com menos recursos Lista para escolha de uma das opes. Bastante til quando se quer que as opes sejam extradas de um banco de dados. Exibio de uma imagem Texto que no pode ser editado diretamente Um boto com aparncia de link Lista para escolha de uma ou mais opes. Caixa para selecionar ou no um item. Dentre os RadioButtons pertencentes a um RadioButtonList , apenas um pode ser selecionado. Continer de RadioButtons. Controle para exibio de colees de dados em controles de servidor HTML. Para cada registro, os dados so exibidos no controle especificado. Tabela Clula de uma linha da tabela Linha de uma tabela Caixa para insero de dados pelo usurio

RadioButtonList Repeater

Table TableCell TableRow TextBox

Agora que foram apresentados os formulrios da Web e a linguagem C#, possvel explicar o cdigo escrito na figura 1. As linhas 2 6 contm o cdigo referente s funes que sero utilizadas para manipular a pgina, que devem estar dentro das tags script . A linha 3 contm o cabealho da funo limpar, que no retorna nada de sua execuo (void), e cujos parmetros so requeridos por vrios mtodos para tratar de eventos (apenas a funo page_load no os requer). A linha 4 tem a funo de definir um espao como sendo o texto do controle de servidor da Web do tipo label, cujo id Label2, e definido na linha 14. Entre as linhas 8 e 19 encontra-se o cdigo HTML, com seus elementos html e body. Entre as linhas 10 e 17, est o formulrio da Web desta pgina. As linhas 12 e 14 possuem dois controles label, com seus respectivos atributos configurados. Finalmente, na linha 16 colocado um button, que responsvel por invocar a funo limpar, quando um usurio clicar nele.

4. Trabalhando com Bancos de Dados


Para acessar e modificar dados, o ASP.NET utiliza ADO.NET (ActiveX Data Objects .NET), que uma interface de programao para acesso a dados. Esta tecnologia representa a sucesso de ADO, que era utilizado pelas pginas ASP tradicionais [Payne 2001]. Entre suas principais diferenas, destacam-se o fato de ser compatvel com XML e

o fato de suas comunicaes serem baseadas em XML (texto), fazendo com que no existam problemas na comunicao sob firewalls (que no bloqueiam arquivos texto). ASP.NET utiliza algumas classes especficas para manipulao de dados com ADO.NET [Microsoft 2003]: System.Data, System.Data.OleDb , System.Data.SqlTypes e System.Data.SqlClient . A classe System.Data.OleDb contm objetos para prover acesso a SGBDs (Sistemas Gerenciadores de Bancos de Dados) diversos, tal como Access, SQL Server e Oracle, dentre outros. Existe ainda, System.Data.SqlClient , que se diferencia por fornecer objetos para acesso a SQL Server, exclusivamente. Logo, apesar de possuir objetos com funcionalidades idnticas, suas aes so otimizadas em relao OleDb. Seus principais objetos so apresentados na tabela a seguir [Microsoft 2003].
Tabela 4: Objetos da classe System.Data.OleDb

Objeto OleDbCommand OleDbConnection OleDbDataAdapter OleDbDataReader

Funo Representa uma instruo SQL a ser executada sobre uma fonte de dados Representa a conexo com a fonte de dados Define a conexo e os comandos de dados que sero usados para manter a comunicao entre o DataSet e o conjunto de dados Define um conjunto de dados somente leitura e com leitura somente para frente.

Dois armazenamentos de dados se destacam em ADO.NET: o DataReader (System.Data.OleDb.DataReader) e DataSet (System.Data.DataSet ). O primeiro pode ser considerado um objeto leve, permitindo acesso simples a um armazenamento de dados. Ele coloca somente uma linha na memria por vez, no oferece tantas funcionalidades quanto o DataSet , de somente leitura, e no permite voltar aos registros j lidos (o que pode ser feito atravs do mtodo read ). O segundo foi criado para assumir o lugar do RecordSet do ADO. caracterizado por armazenar todas as linhas de uma seleo na memria, incluindo restries, relacionamentos e vrias tabelas de uma vez. Isto proporciona vantagens como a manipulao de dados com mais rapidez, possibilitando a execuo de leitura, escrita e stored procedures, alm do envio e recebimento de informaes [Payne 2001]. Por outro lado, este tipo de armazenamento no recomendado quando se trabalha com grande nmero de acessos simultneos. O exemplo abaixo mostra a utilizao do DataReader, cujos dados so colocados em um controle DataGrid.
1 2 3 4 5 6 7 8 9 10 11 12 13 <%@ Page Language="C#" %> <%@ import Namespace="System.Data" %> <%@ import Namespace="System.Data.OleDb" %> <script runat="server"> void Page_Load(Object obj, EventArgs e) { OleDbConnection Conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Michael\\ASP.NET\\bdNoticia.mdb"); OleDbCommand Comando = new OleDbCommand("select * from tb_noticia", Conexao); OleDbDataReader DataReader; Conexao.Open(); DataReader = Comando.ExecuteReader();

14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

if (DataReader != null) { DataGrid.DataSource = DataReader; DataGrid.DataBind(); DataReader.Close(); } } </script> <html> <body> <form runat="server"> <asp:DataGrid id="DataGrid" runat="server"/> </form> </body> </html>

Figura 2. Exemplo da utilizao de DataReader

Da mesma forma do anterior, o exemplo abaixo apresenta um DataGrid, porm, que utiliza dados de um DataSet .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <%@ Page Language="C#" Debug="true" %> <%@ import Namespace="System.Data" %> <%@ import Namespace="System.Data.OleDb" %> <script runat="server"> void Page_Load(Object obj, EventArgs e) { OleDbConnection Conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Michael\\ASP.NET\\bdNoticia.mdb"); OleDbDataAdapter Adapter = new OleDbDataAdapter("select * from tb_noticia", Conexao); DataSet Ds= new DataSet(); Conexao.Open(); Adapter.Fill(Ds, "tb_noticia"); if (Ds != null) { DataGrid.DataSource = Ds; DataGrid.DataBind(); } } </script> <html> <body> <form runat="server"> <asp:DataGrid id="DataGrid" runat="server"/> </form> </body> </html>

Figura 3. Exemplo da utilizao de DataSet

Para ambos os exemplos, a sada a seguinte:

Figura 4. Sada dos exemplos das figuras 2 e 3

Tendo sido apresentados os mecanismos para acesso a dados relacionais, a prxima seo apresentar a forma de acesso a dados XML (eXtensible Markup Language).

5. Trabalhando com XML


A XML [XML 2003] um padro da W3C (World Wide Web Consortium) para representao de dados. Possui um formato simples e muito til para o intercmbio de dados, o que conseguido atravs da caracterstica de marcao da linguagem. Por isto, ASP.NET agrega meios para manipulao deste tipo de dados. XmlTextReader um objeto que representa um mecanismo rpido e simples para acesso a documentos XML [Payne 2001]. Um exemplo simples de sua utilizao apresentado a seguir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <%@ Page Language="c#" %> <%@ import Namespace="System.Xml" %> <script runat="server"> void page_load(Object o, EventArgs e){ XmlTextReader reader = new XmlTextReader(Server.MapPath("documento.xml")); while (reader.Read()) { Response.Write(reader.Value + "<br/>"); } reader.Close(); } </script> <html><body> </body></html>

Figura 5. Exemplo do acesso a documentos XML utilizando XmlTextReader

Na linha 5 criado um objeto XmlTextReader que carrega o arquivo Entre as linhas 6 e 8, so exibidos os contedos dos elementos de cada elemento.
documento.xml .

ASP.NET oferece inmeros outros objetos e mtodos para manipulao de documentos XML, que podem ser encontrados na documentao do .NET Framework SDK.

6. Orientao a Objetos
Ao contrrio de ASP, ASP.NET uma linguagem orientada a objetos. Esta caracterstica j foi observada nas sees anteriores, quando foram utilizados os objetos das namespaces providas pelo .NET Framework, para acessar dados relacionais e XML. Porm, possvel ainda, que o desenvolvedor crie as classes que desejar (o que geralmente contribui para o reuso de cdigo). Para a criao de classes, pode -se utilizar qualquer uma das linguagens suportadas por .NET. A sintaxe das classes criadas em uma namespace (mecanismo sob o qual, podese reunir vrias classes) utilizando-se C# do tipo do exemplo apresentado na figura abaixo.
1 2 3 4 5 6 7 8 9 10 11 12 13 namespace NomeDaNamespace { using System; using System.Data; public class NomeDaClasse { private int atributo; public int somar(int valor1, int valor2) { return valor1 + valor2; } } }

Figura 6. Exemplo da composio de uma namespace

Para que a namespace possa ser utilizada, necessrio compil-la utilizando-se o compilador de C#, que acompanha a instalao do .NET Framework, com algumas opes particulares, tal como a necessidade de se gerar um arquivo .dll, que colocado no diretrio bin abaixo do diretrio que contm as pginas ASP.NET que a utilizaro [Payne 2001]. Supondo que o nome do arquivo contendo a namespace se chame classe.cs, o comando a ser executado o seguinte:
csc /target:library /out:.\bin\classe.dll classe.cs

significa C Sharp Compiler, (Compilador de C Sharp) e possui vrias opes que podem ser utilizadas. Alguns exemplos de opes a criao de arquivos executveis e a opo de poder ser utilizado, ou no, por outros aplicativos. Quando a namespace criada for utilizada em uma pgina ASP.NET, deve -se importar a namespace, tal como era feito na com a namespace System.Data, nas figuras 2 e 3, por exemplo.

csc

10

Referncias Bibliogrficas
Payne, Chris. Aprenda em 21 dias ASP.NET. Rio de Janeiro: Campus, 2001. Microsoft .Net Framework SDK Documentation. Microsoft [2003]. ASP.NET Web: The Official Microsoft ASP.NET Site : Home Page . Disponvel em : <http://www.asp.net> acesso em: 13 de outubro de 2003. World Wide Web Consortium. Extensible Markup Language (XML). Disponvel em <http://www.w3.org/XML/>. Acesso em 10/04/2003.