Você está na página 1de 38

Desenvolvendo

aplicações Web com


ASP.NET

Prof. André Menegassi, Victor Gonçales e Rodolfo Marengo


O que é o .NET Framework?
• .NET é uma plataforma de software para desenvolvimento de
aplicações que conecta informações, sistemas, pessoas e dispositivos
através de tecnologias de uso pessoal, de negócios, de telefonia
celular a servidores corporativos, permitindo assim, o acesso rápido a
informações importantes onde elas forem necessárias.

• Permite desenvolver soluções/aplicativos como:


– Aplicativos Web
– Aplicativos Windows
– Aplicativos para Servidores
– Aplicativos Smart Client
– Aplicativos de Console
– Aplicativos de Banco de Dados
– Serviços Windows (aplicativos que rodam como serviços)
– Web Services e muito mais
O que é o .NET Framework?
• Toda e qualquer aplicação gerada em .NET, pode ser executada em qualquer
dispositivo ou plataforma que possua o .NET Framework.

• O .NET Framework implementa uma máquina virtual.

• Máquina virtual: Abstrair a necessidade do desenvolvedor de interagir com


o sistema operacional oferecendo um rico conjunto de ferramentas e
bibliotecas de objetos que permitem alta produtividade no desenvolvimento de
sistemas.

• O instalador da plataforma para o sistema operacional Windows pode ser


baixado no site da Microsoft, e é gratuito.
– http://msdn.microsoft.com/en-us/netframework/default.aspx

• Mono-Project (www.mono-project.com): versão do .NET Framework 4.0 para


ambientes:

• .NET Compact Framework para dispositivos que utilizam Windows Mobile.


Evolução do .NET Framework
2002 2003 2005 2006 2008 2010
Lançamento do Lançamento do Lançamento do Lançamento do Lançamento do Lançamento do
Framework 1.0 Framework 1.1 Framework 2.0 Framework 3.0 Framework 3.5 Framework 4.0

Visual Studio Visual Studio Visual Studio Visual Studio Visual Studio Visual Studio
.NET 2002 .NET 2003 .NET 2005 .NET 2005 .NET 2008 .NET 2010
WebMatrix WebMatrix Opções gratuitas de ferramenta de desenvolvimento da própria Microsoft
(http://www.microsoft.com/express/default.aspx).

Grande Evolução Pequenas Consideráveis Novos recursos Linq Project A IDE foi
no desenvolvimento melhorias melhorias de para interface (mapeamento reconstruída em
de tradicional de acesso a dados Windows (WPF) objeto-relacional) WPF.
software. (ADO.NET 2.0)
Novo sistema de Incorporação MS-
Esse primeiro Team Foundation comunicação ASP.NET AJAX ao
release foi pouco Server (TFS: (WCF) para Framework
conhecido e aplicação de aplicações
utilizado. metodologias de distribuídas SP1: Integração
gerência de projeto total com AJAX
ao desenvolvimento MS-ASP.NET Control ToolKit
apoiado pelo Visual AJAX (biblioteca
Studio.NET.) separada do
Framework)

XNA Game Studio


Arquitetura do .NET Framework
ASP.NET
• A plataforma .NET disponibiliza um recurso chamado ASP.NET, que é
utilizado para construir páginas Web dinâmicas que acessam recursos
do servidor.
• As páginas ASP.NET rodam sob o servidor Web da Microsoft, o
Internet Information Services (IIS).
• É a evolução do ASP Clássico.
• Páginas compiladas e não interpretadas.
• Independência de linguagem de programação (C#, VB.NET, J#...)
• Usa o conceito de formulários Web (muito semelhante ao conceito de
construção de aplicações com formulário para Windows).
• Trabalha com o modelo baseado em eventos.
• Cross Browser: Independência de navegador, gera HTML compatível
com os diversos browser.
• Suporte a depuração.
• Separação do script cliente e servidor.
• Visual Studio .NET: ambiente oficial.
Visual Studio .NET
• Criando um projeto WebApplication.
Visual Studio .NET
Visual Studio .NET – Criando uma página
Visual Studio .NET – Criando uma página
Como implementar uma página ASP.NET
• Colocando código no mesmo arquivo do conteúdo HTML
(misto)

• Colocando código numa sessão separada (code-block) no


arquivo de conteúdo (codefile) – OPÇÃO PADRÃO para
WebSite.
– CodeFile="Default.aspx.cs“

• Colocando código em um arquivo separado (code-


behind pages) – OPÇÃO PADRÃO para
WebApplication.
– CodeBehind="Default.aspx.cs"
Componentes de uma página ASP.NET
• Separação da implementação de interface com usuário da lógica de
programação.
• Uma página ASP.NET está associada a um arquivo com a extensão
.aspx que contém toda a implementação de interface com o usuário,
e também a um fonte de linguagem de alto-nível, como – VB.NET
(aspx.vb), C# (aspx.cs), entre outras.

• Nos formulários não são adicionados inputs HTML e sim


componentes/controles ASP.NET que têm propriedades, métodos e
eventos no servidor.
Processo de compilação e execução de uma página ASP.NET

default.aspx

Qual Linguagem?

Visual Basic
C# code .NET code

Compilador C# Compilador
Visual Basic .NET

JIT MSIL
compiler

Código
Nativo

Common Language Runtime


Linguagem de Programação C#
• Ver tutorial.
Controles básicos ASP.NET (server
(server--controls)
controls)
Os server-controls são
transformados (convertidos) em
elementos HTML (alguns
implementam Javascript) pelo .NET
Framework.

Por exemplo:
- TextBox = input Text
- DropDownList = select option
- Button = input submit
- Image = img

Exemplos online: http://www.w3schools.com/aspnet/aspnet_refwebcontrols.asp


Controles ASP.NET - Validators
• Os Validators em ASP.NET ajudam tratar as entradas de dados do
usuário.
• A página só é processada após todos os Validators ativos do
formulário passarem pela validação.
• Validação no Client Side e Server Side.
• Validação no Cliente depende de JavaScript (problema?)
• A classe Page mantém a propriedade IsValid do tipo bool. Retorna
true se as validações foram executadas com sucesso.
• Um Validator é sempre associado a um controle (prop.
ControlToValidade)
• Podemos definir grupos de validação.
• Propriedade CausesValidation dos botões.
Controles ASP.NET - Validators
• RequiredFieldValidator: Usado para garantir que o controle alvo
teve seu valor alterado (ou preenchido). Propriedade: ControlToValidade e
ErrorMessage;
• CompareValidator: Comparar o valor de um controle com o de outro
controle ou com uma constante. Propriedade: ControlToValidade e
ErrorMessage;
• RangeValidador: Usado para garantir que o controle alvo tenha seu
valor entre um mínimo e um máximo, e se é de um determinado tipo
de dados. Propriedades: ControlToValidade, ErrorMessage, MinimumValue,
MaximumValue e Type;
• RegularExpressionValidator: Usado para garantir que o controle alvo
tenha seu valor de acordo com a expressão regular informada. Propriedades:
ControlToValidade, ErrorMessage e ValidationExpression;
• CustomValidator: Usado para definir uma função customizada que efetua
uma validação.
• ValidationSumary: Sumarizar todas as mensagens de erro.
Ciclo de vida de uma página ASP.NET
• O ciclo de vida da página, ou page life cycle, é formado por sua (1)
instanciação, (2) execução ordenada de métodos específicos
denominados eventos, e por fim o (3) descarte da página da memória
do sistema (no servidor).
• Principais eventos: Page Init: Ocorre logo após a instanciação da
página e todos os controles terem sido
inicializados/recuperados;
Page Init
Page Load: Ocorre logo após o Page Init. Neste
Page Load momento é possível ter acesso a todos controles
da página. É útil para configurar propriedades de
controles, e conexões ao banco de dados e testar
Event Handling o IsPostBack da página;

Page Unload Event Handling: Os eventos associados aos


controles da página, quando a requisição vem de
um POST da mesma página;

Page Unload: Ocorre quando a página termina


todos os processamentos. Logo após é enviado
ao cliente: HTML, Javascript..... Não é possível
alterar valores dos controles de tela neste evento.
Evento Page_Load
• O evento Page Load ocorre toda vez que a página é carregada no
servidor e logo após é executado o evento que casou o postback na
página
• É útil para configurar propriedades de controles, e conexões ao
banco de dados.
• A cada vez que ocorre um POST na página, a informação na página
é remetida para o servidor Web e a página é executada novamente.
Cada ciclo é conhecido como um processamento (round trip).
• Em determinadas situações precisamos descobrir se é o primeiro
processamento (requisição) da página, ou se esta requisição foi
causada por uma requisição da própria página. No ASP.NET isso é
chamado de PostBack (submit).
• A propriedade da página Page.IsPostBack retorna um valor
boleano true que indica que os dados foram postados e false
indica que não (o que também pode indicar que é a primeira
execução da página).
Tratamentos de erros
• Na plataforma .NET esses erros são chamados exceções (ou
exceptions) e são tratados com as instruções try, catch e finally.
• A instrução finally é opcional. Se declarada, será executa sempre.
• Tipos de Exception:
http://msdn.microsoft.com/en-us/library/system.systemexception.aspx
• Exemplo:
public void MetodoTeste(string teste)
{
string resp;
try
{
Convert.ToInt32(teste)+1;
resp = "Funcionou";
}
catch (Exception e)
{
resp = "Erro: “ + e.Message.ToString();
}
finally
{
lResp.Text = resp;
}
}
Global.asax
Global. asax
• Cada aplicativo construído na arquitetura ASP.NET, pode conter um
arquivo chamado Global.asax (é um arquivo opcional);
• Se o arquivo não existir na aplicação, então ela assume um
comportamento padrão;
• O Global.asax é uma arquivo com as mesmas características de um
arquivo .aspx;
• Pode conter códigos, que serão executados em respostas a
eventos;
• O Global.asax trata eventos no nível da aplicação web e eventos
de variáveis de sessão ASP.NET;
• É compilado para MSIL junto com a aplicação;
• É capaz de tratar eventos da aplicação de forma global;
• É possível tratar erros ocorridos em toda aplicação;
• Manipular respostas ao usuário;
• Criar logs de acesso;
• Iniciar eventos no início de uma sessão.
Global Application Class
Class:: Global.
Global.asax
asax
• Principais eventos tratados do arquivo Global.asax:
• Application_Start: Evento invocado quando a primeira instância da
HttpApplicaton é criada, permitindo que objetos aqui criados sejam acessados
por todas as instâncias de HttpApplication;
• Session_Start: Invocado quando um novo usuário visita a aplicação ASP.NET;
• Application_BeginRequest: É invocado quando há um recebimento de
requisição para a aplicação. É o primeiro evento invocado por requisição;
• Application_AuthenticateRequest: Evento invocado quando o módulo de
segurança estabeleceu para o usuário uma identidade válida. Nesta etapa sua
credencial foi validade;
• Application_Error: Evento invocado quando um erro não tratado ocorre;
• Session_End: Evento invocado quando a sessão de um usuário expira, seja
por timeout, ou por desconexão;
• Application_End: Invocado quando a última instância da classe
HttpApplication é destruída. É invocado somente uma vez durante o ciclo de
vida da aplicação.
Mantendo o estado no ASP.NET
• Em qualquer desenvolvimento de sistemas Web pode ser aplicado
técnicas de persistência de informações entre as requisições do
usuário, como session, cookie, viewstate entre outras.

• HttpSessionState (Session)
– As variáveis de sessão são informações armazenadas pela
aplicação no servidor para a sessão de um determinado usuário;
– Cada usuário possui suas próprias variáveis de sessão;
– São destruídas no momento em que a sessão do usuário se
encerra, ou no seu timeout;
– As variáveis de sessões são globais dentro da sessão do
usuário.
Mantendo o estado no ASP.NET
• Cookie
– Trata-se de um pequeno arquivo de texto que é armazenado
na máquina do usuário;
– Usado, por exemplo, em sites de comércio eletrônico, para
exibir as preferências e características do usuário;
– Pode identificar o usuário mesmo dias depois de seu acesso a
página;
– O grande problema dos cookies é que o usuário simplesmente
pode desabilitar este recurso em seu navegador.
Mantendo o estado no ASP.NET
• ViewState
– Mantêm automaticamente os valores de controles de servidor
entre um postback e outro;
– Internamente funciona como um campo oculto (hidden) um
pouco mais sofisticado (__VIEWSTATE);
– O ViewState é mantido somente na página, ao sair da página
ele é perdido;
– Ao rodar uma aplicação ASP.NET sem qualquer controle verá
que é criado um campo oculto para o armazenamento do
ViewState;
– Os dados não são exibidos em texto plano, por questões de segurança;
– Pode-se ainda adicionar manualmente valores a um ViewState.
Mantendo o estado no ASP.NET
• QueryString
– A QueryString é um modo de passar informações entre páginas
através do próprio endereço do página;
– É um dos métodos mais utilizados para passar informações
entre páginas;
– meusite.com.br/produtos.aspx?ID=101;
– Tem como desvantagem a segurança; pode deixar a navegação
confusa para o usuário; é ilimitado, não podendo guardar
informações muito grandes.
Mantendo o estado no ASP.NET
• Cross Page Posting
– É um recurso frequentemente usado quando é necessário
capturar dados em uma página e processá-los em outra;
– Para acessar os dados da página anterior é necessário usar a
propriedade PreviousPage do objeto Page;
– Para acessar os controles da página anterior devemos utilizar o
método FindControl na propriedade PreviousPage.

• Server.Transfer
– Transfere a execução de uma página para outra página;
– A URL da página não é alterada.
ADO.NET: SQLDataSource
• Toda linguagem/plataforma de programação disponibiliza meios de
acesso e manipulação de dados em banco de dados relacional;
• No .NET Framework o padrão de acesso a dados é chamado
ADO.NET, visando não só aplicações locais, mas também a Internet
e dispositivos móveis;
• UDA – Universal Data Acess (Acesso universal a dados).
• Acesso a qualquer tipo de banco de dados que possua driver de
acesso .NET, ou driver ODBC ou OLEDB.
• O uso do ADO.NET é útil para escrever código para construir uma
camada de abstração de dados ou camada de objetos de negócio.
• Quando se deseja simplesmente
construir páginas Web que
conecte e trabalhe com dados,
sem escrever código
ADO.NET, é possível utilizar
SQLDataSource.
• O controle SQLDataSource faz
toda a implementação ADO.NET
necessária.
ADO.NET: SQLDataSource
• O controle SQLDataSource do ASP.NET gerencia as tarefas de
INSERÇÃO, RECUPERAÇÃO, ATUALIZAÇÃO e EXCLUSÃO em
páginas Web.

• CRUD: CREATE,
RETRIEVE, UPDATE
and DELETE

• O SQLDataSource pode
ser combinado com
controles data-bound
(DropDownList,
ListBox, GridView,
DataList e outros) para
manipulação e acesso a
dados.
WebUserControl
• Áreas que se repetem no site podem ser candidatas a serem User
Controls.
• Controle Web criado por um usuário.
• Possui extensão .ascx.
• Herda de System.Web.UI.UserControl.
• Simplificam a reusabilidade de código e componentes de interface
(UI) dentro de uma aplicação Web.
• Contém HTML, mas não as
tags <HTML>,<BODY> ou
<FORM>.
• Contém código para
gerenciar seus próprios
eventos.
• Podem agregar vários
controles em um
componente reusável.
MasterPage
• Permite criar Herança Visual para o Web Site.
• Manutenção centralizada, não é necessário mudar o código em
várias páginas, apenas em uma.
• Facilidade na criação do layout.
• Reaproveitamento de código.
Controles de navegação
• Menu – Permite criar um menu com links de maneira estática ou
dinâmica.

• TreeView: Permite criar uma árvore com links de maneira estática


ou dinâmica.
Controles de navegação
• SiteMapPath: Permite criar um menu de navegação baseado na
página que o usuário está acessando. É baseado em uma estrutura
XML (web.sitemap).
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="default.aspx" title="Principal" description="">
<siteMapNode url="Aluno\default.aspx" title="Aluno" description="" />
<siteMapNode url="Professor\default.aspx" title="Professor" description="" >
<siteMapNode url="Professor\relatorio.aspx" title="Relatórios" description="" />
</siteMapNode>
</siteMapNode>
</siteMap>
Themes,, Skins e CSS
Themes
• Themes (ou temas em português) permite a personalização da
aparência do website.
• Um tema é uma coleção de skins sendo que um skin descreve como
a aparência de um controle deve ser exibida.
• Um Skin pode definir atributos de folha de estilos, imagens, cores e
assim por diante...
• O site possuindo múltiplos temas os seus usuários poderão escolher
a aparência do site.
• Diferenças entre Themes e CSS
– A CSS trata usualmente com código HTML, não podemos aplicar um CSS a um controle de
servidor específico;
– Os temas podem definir muitas propriedades de um controle ou página e não apenas
estilos;
– Os temas podem incluir gráficos;
– Themes e Skins podem ser aplicados a todos os controles ASP.NET sem esforço algum;
– Você pode incluir arquivos CSS em temas o qual pode ser aplicado como parte da estrutura
Theme mas não pode fazer o contrário;
– Somente um tema pode ser aplicado a uma página. Você não pode aplicar múltiplos temas
a uma página.
Globalization e Localization
• Globalization: É o processo de tornar uma aplicação compatível com
diferentes idiomas.
– Datas, Horas,Valores monetários, etc...

• Localization: É o processo de criar e configurar uma aplicação para um


idioma específico. A aplicação pode ser sensíveis a uma cultura.
– Culture/UICulture - É a combinação do idioma falado e a sua localização
geográfica. Isso inclui a forma de representar as datas, horas, e valores
monetários.
– O ASP.NET permite configurar a cultura da página adicionando as
diretivas culture=“xx-XX" e uiCulture =“xx-XX“.
– É possível configurar a aplicação toda adicionando a cultura
diretamente no web.config.
– Uma cultura é representa da seguinte forma:
– en-US - Inglês falado nos EUA
– en-GB - Inglês falado na Inglaterra
– en-AU - Inglês falado na Austrália
– fr-FR - Francês falando na França
– pt-BR - Português falado no Brasil
Código Javascript em páginas ASP.NET
• Programação no lado do cliente: eventos como onclick, onblur,
onchange, e outros, podem ser programados em diversos objetos da
página, tal como botões, imagens, links e outros objetos.

• Para adicionar eventos aos controles ASP.NET podemos usar a


propriedade Attribute do objeto. Esta propriedade mantém uma lista
dos atributos adicionados ao controle.

• Button1.Attributes.Add("onclick", “alert('Fui clicado.')");

• <input type="submit" name="Button1" value="Button"


onclick=“alert('Fui clicado.');" id="Button1" />
Código Javascript em páginas ASP.NET
• Ao invés de inserir todo o código através da prop. Attributes podemos apenas inserir uma
chamada de função;
• Existem 2 métodos na classe Page.ClientScript para a geração de código Javascript, são
os seguintes: RegisterClientScriptBlock (gera o script imediatamente após a tag
<form>); e RegisterStartupScript (gera o script imediatamente antes do da tag
</form>);
• Parâmetros:
• type – Tipo do objeto onde o bloco será registrado. Na maioria das vezes será a
página .ASPX.
• key – Palavra-Chave que permite obter as funções programaticamente.
• script – Código JavaScript;
• addScriptTags – Este parâmetro indica se a função automaticamente incluirá as tags
<script></script>.
• Exemplo:
string msg = "Fui Clicado.";
string js = "<script language='javascript'> " +
" function MessageBox() { "+
" alert('" + msg + "'); " +
"} "+
"</script>";
Page.ClientScript.RegisterStartupScript(Page.GetType(), "MessageBox", js);

Button1.Attributes.Add("OnClick","MessageBox();");
Web.config
Web. config
• É um arquivo no formato XML.
• É usado para manter informações sobre a configuração da
aplicação, tais como, string de conexão, páginas de erro, modo de
compilação, globalização, informações sobre versões de assemblies
referenciados, e outros valores padrões, etc.
• Armazena valores e parâmetros que sejam comuns a toda nossa
aplicação.
• Case Sensitive.
...
<system.web>
...
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm“> </customErrors>
<compilation debug="true">
<globalization requestEncoding="iso-8859-15" responseEncoding="iso-8859-15" culture="pt-BR" />
...
</system.web>

Você também pode gostar