Desenvolvendo Aplicações Web com ASP.NET

38
Desenvolvendo Desenvolvendo Prof. André Menegassi, Victor Gonçalese Rodolfo Marengo aplicações Web com aplicações Web com ASP.NET ASP.NET

Transcript of Desenvolvendo Aplicações Web com ASP.NET

Page 1: Desenvolvendo Aplicações Web com ASP.NET

Desenvolvendo Desenvolvendo

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

Desenvolvendo Desenvolvendo aplicações Web com aplicações Web com

ASP.NETASP.NET

Page 2: Desenvolvendo Aplicações Web com ASP.NET

O que é o .NET Framework?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 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

Page 3: Desenvolvendo Aplicações Web com ASP.NET

O que é o .NET Framework?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.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.

Page 4: Desenvolvendo Aplicações Web com ASP.NET

Evolução do .NET Framework Evolução do .NET Framework

20022002 20032003 20052005 20062006 20082008 20102010Lançamento do Framework 1.0

Lançamento do Framework 1.1

Lançamento do Framework 2.0

Lançamento do Framework 3.0

Lançamento do Framework 3.5

Lançamento do Framework 4.0

Visual Studio .NET 2002

Visual Studio .NET 2003

Visual Studio .NET 2005

Visual Studio .NET 2005

Visual Studio .NET 2008

Visual Studio .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 foiGrande Evolução no desenvolvimento de tradicional de software.

Esse primeiro release foi pouco conhecido e utilizado.

Pequenas melhorias

Consideráveis melhorias de acesso a dados (ADO.NET 2.0)

Team Foundation Server (TFS: aplicação de metodologias de gerência de projeto ao desenvolvimento apoiado pelo Visual Studio.NET.)

Novos recursos para interface Windows (WPF)

Novo sistema de comunicação (WCF) para aplicações distribuídas

MS-ASP.NET AJAX (biblioteca separada do Framework)

XNA Game Studio

Linq Project(mapeamentoobjeto-relacional)

Incorporação MS-ASP.NET AJAX ao

Framework

SP1: Integraçãototal com AJAXControl ToolKit

A IDE foireconstruída emWPF.

Page 5: Desenvolvendo Aplicações Web com ASP.NET

Arquitetura do .NET FrameworkArquitetura do .NET Framework

Page 6: Desenvolvendo Aplicações Web com ASP.NET

ASP.NETASP.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.

Page 7: Desenvolvendo Aplicações Web com ASP.NET

Visual Studio .NETVisual Studio .NET

• Criando um projeto WebApplication.

Page 8: Desenvolvendo Aplicações Web com ASP.NET

Visual Studio .NETVisual Studio .NET

Page 9: Desenvolvendo Aplicações Web com ASP.NET

Visual Studio .NET Visual Studio .NET –– Criando uma páginaCriando uma página

Page 10: Desenvolvendo Aplicações Web com ASP.NET

Visual Studio .NET Visual Studio .NET –– Criando uma páginaCriando uma página

Page 11: Desenvolvendo Aplicações Web com ASP.NET

Como implementar uma página ASP.NETComo 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“– CodeFile="Default.aspx.cs“

• Colocando código em um arquivo separado (code-behind pages) – OPÇÃO PADRÃO para WebApplication.– CodeBehind="Default.aspx.cs"

Page 12: Desenvolvendo Aplicações Web com ASP.NET

Componentes de uma página ASP.NETComponentes 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.

Page 13: Desenvolvendo Aplicações Web com ASP.NET

Processo de compilação e execução de uma página ASP.NETProcesso de compilação e execução de uma página ASP.NET

C# codeVisual Basic

.NET code

Qual Linguagem?

CompiladorVisual Basic .NET

Compilador C#

default.aspx

Código

Nativo

MSILJITcompiler

Common Language Runtime

Page 14: Desenvolvendo Aplicações Web com ASP.NET

Linguagem de Programação C#Linguagem de Programação C#

• Ver tutorial.

Page 15: Desenvolvendo Aplicações Web com ASP.NET

Controles básicos ASP.NET (Controles básicos ASP.NET (serverserver--controlscontrols))

Os server-controls são transformados (convertidos) em elementos HTML (alguns implementam Javascript) pelo .NET Framework.

Por exemplo: - TextBox = input Text

- DropDownList = select option

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

- DropDownList = select option

- Button = input submit

- Image = img

Page 16: Desenvolvendo Aplicações Web com ASP.NET

Controles ASP.NET Controles ASP.NET -- ValidatorsValidators

• 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 • 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.

Page 17: Desenvolvendo Aplicações Web com ASP.NET

Controles ASP.NET Controles ASP.NET -- ValidatorsValidators

• 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 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.

Page 18: Desenvolvendo Aplicações Web com ASP.NET

Ciclo de vida de uma página ASP.NETCiclo de vida de uma página ASP.NET

Page Page InitInit

• 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 Load: Ocorre logo após o Page Init. Neste

Page Page UnloadUnload

EventEvent HandlingHandling

Page Page LoadLoad

Page Load: Ocorre logo após o Page Init. Neste 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 o IsPostBack da página;

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.

Page 19: Desenvolvendo Aplicações Web com ASP.NET

Evento Evento Page_LoadPage_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).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).

Page 20: Desenvolvendo Aplicações Web com ASP.NET

Tratamentos de errosTratamentos 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;}

}

Page 21: Desenvolvendo Aplicações Web com ASP.NET

Global.Global.asaxasax

• 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;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.

Page 22: Desenvolvendo Aplicações Web com ASP.NET

Global Application Global Application ClassClass: Global.: Global.asaxasax

• 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 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.

Page 23: Desenvolvendo Aplicações Web com ASP.NET

Mantendo o estado no ASP.NETMantendo 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.

Page 24: Desenvolvendo Aplicações Web com ASP.NET

Mantendo o estado no ASP.NETMantendo 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.

Page 25: Desenvolvendo Aplicações Web com ASP.NET

Mantendo o estado no ASP.NETMantendo 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.

Page 26: Desenvolvendo Aplicações Web com ASP.NET

Mantendo o estado no ASP.NETMantendo 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.

Page 27: Desenvolvendo Aplicações Web com ASP.NET

Mantendo o estado no ASP.NETMantendo 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.

Page 28: Desenvolvendo Aplicações Web com ASP.NET

ADO.NET: ADO.NET: SQLDataSourceSQLDataSource• 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.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ódigoADO.NET, é possível utilizar SQLDataSource.

• O controle SQLDataSource faz toda a implementação ADO.NET necessária.

Page 29: Desenvolvendo Aplicações Web com ASP.NET

ADO.NET: ADO.NET: SQLDataSourceSQLDataSource• 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.

Page 30: Desenvolvendo Aplicações Web com ASP.NET

WebUserControlWebUserControl

• Á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.

Page 31: Desenvolvendo Aplicações Web com ASP.NET

MasterPageMasterPage

• 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.

Page 32: Desenvolvendo Aplicações Web com ASP.NET

Controles de navegaçãoControles 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 • TreeView: Permite criar uma árvore com links de maneira estática ou dinâmica.

Page 33: Desenvolvendo Aplicações Web com ASP.NET

Controles de navegaçãoControles 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>

</siteMapNode></siteMap>

Page 34: Desenvolvendo Aplicações Web com ASP.NET

ThemesThemes, , SkinsSkins e CSSe CSS

• 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.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.

Page 35: Desenvolvendo Aplicações Web com ASP.NET

GlobalizationGlobalization e e LocalizationLocalization

• 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.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

Page 36: Desenvolvendo Aplicações Web com ASP.NET

Código Código JavascriptJavascript em páginas ASP.NETem 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" />

Page 37: Desenvolvendo Aplicações Web com ASP.NET

Código Código JavascriptJavascript em páginas ASP.NETem 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();");

Page 38: Desenvolvendo Aplicações Web com ASP.NET

Web.Web.configconfig

• É 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.• 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>