Fundamentos Do ASP

download Fundamentos Do ASP

of 46

Transcript of Fundamentos Do ASP

  • 8/6/2019 Fundamentos Do ASP

    1/46

    17

    2Fundamentos do ASP.NETASP.NET a nova verso da tecnologia Active Server Pages utilizada paradesenvolver pginas Web com contedo dinmico. Ao mesmo tempo em queASP.NET possui sintaxe compatvel com o ASP 3.0, tambm possui um novo

    modelo de programao orientado a objeto. As pginas ASP.NET so compiladas,e no interpretadas como nas verses anteriores, e podem ser implementadasutilizando-se Visual Basic.NET, C# (l-se C Sharp) e JScript.NET. Os exemplosdeste livro esto em Visual Basic.NET.

    Por meio do ASP.NET pode-se utilizar todos os recursos disponveis no Frame-work .NET, como o ambiente de runtime CLR, o tipo comum de dados e abiblioteca de classes .NET. Em vez de se limitar aos seis objetos ASP clssicos,o ASP.NET dispe de uma ampla variedade de componentes teis que podemser utilizados ou estendidos. Alm disso, possvel utilizar componentes desen-

    volvidos utilizando a tecnologia COM/COM+, embora aspectos de desempenhodevam ser considerados.

    O ASP.NET possui dois modelos de programao:

    Web Forms: utilizado para construir pginas Web baseadas em formulrios.Pode-se utilizar controles de Servidor para a criao de elementos de interface,program-los e reutiliz-los dentro da aplicao.

    Web Services:utilizado para acessar componentes remotamente. Ao usar WebServices, pode-se expor interfaces para acessar dados ou regras de negcio,

    que podem ser manipulados por clientes ou outras aplicaes. Web Servicespermite a troca de dados em um cenrio cliente-cliente ou servidor-servidor,usando protocolos-padro como HTTP e XML para transportar dados.

  • 8/6/2019 Fundamentos Do ASP

    2/46

    18

    Por que uma nova verso ASP?A seguir, algumas razes que motivaram a implementao de uma nova versoASP.

    Cdigo com estruturao confusa

    No ASP possvel a utilizao de cdigos HTML, Script, componentes e outroselementos misturados na pgina, dificultando o desenvolvimento, a manutenoe a reutilizao de cdigo. O ASP.NET oferece o recurso chamado de Code Be-hind, que possibilita colocar a parte de design da pgina e a parte de cdigo emdois arquivos distintos. O design pode ser feito em paralelo com a programao.Por outro lado, tambm possvel colocar o cdigo dentro da prpria pgina dedesign, se o desenvolvedor assim desejar.

    Baixa produtividade

    No ASP necessrio escrever cdigo para praticamente tudo, como, por exemplo,para manter o estado dos campos de um formulrio ou validar a entrada de dadosdo usurio. O ASP.NET introduz um modelo de componente, com controlesbaseados no servidor e orientados a eventos, o que torna a programao similar maneira como feita no Visual Basic.

    Pginas interpretadas

    No ASP as pginas so interpretadas, ou seja, cada linha do arquivo lida, inter-pretada e transformada em HTML, o qual enviado para o browser que solicitoua pgina. No ASP.NET as pginas so compiladas em um executvel (DLL), oque pode acarretar um ganho significativo de performance. Alm disso, pode-seutilizar qualquer linguagem que suporte o Framework .NET. O Visual Studio.NEToferece o VB.NET, C# e o C++ como opes de instalao. No ASP possvelutilizar somente linguagens de script, como o VbScript e o JScript.

    Diversidade de browsers

    Com a utilizao de dispositivos diferentes para acesso Internet, como PDAs,aparelhos de TV, console de jogos, celulares, entre outros, surge a necessidadede considerar diferentes sadas para uma mesma aplicao, como, por exemploutilizando formato HTML, WML, XML e HDML. O ASP.NET oferece ummodelo de programao unificado para o desenvolvimento de aplicaes paraPCs e dispositivos mveis. Utilizando controles especiais e extenses do ASP.NET, pode-se desenvolver aplicaes que podero ser acessadas por meio dediferentes dispositivos. Para o desenvolvimento de aplicaes para dispositivosmveis, deve-se utilizar o Mobile Internet Toolkit, que pode ser baixado emhttp://www.msdn.microsoft.com/vstudio/device/mitdefault.asp.

    Alm desses pontos, pode-se destacar a necessidade de ferramentas melhorespara depurao de cdigo e layout das pginas, recursos limitados de segurana,dificuldades na distribuio e configurao da aplicao, falta de suporte paraWeb Farm e cache do lado do servidor.

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    3/46

  • 8/6/2019 Fundamentos Do ASP

    4/46

  • 8/6/2019 Fundamentos Do ASP

    5/46

    21

    Figura 2.1 Tela inicial do We Matrix.

    Arquitetura do ASP.NET

    Figura 2.2 Viso geral da arquitetura do ASP.NET.

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    6/46

    22

    Nas verses anteriores do ASP, a pgina era interpretada sempre que requisitada(com exceo das pginas armazenadas no cache do servidor, que j foram inter-pretadas). No modelo ASP.NET, o cdigo compilado para MSIL, transformandoa pgina em um objeto, armazenando-o no cache do servidor e tornando-o dis-ponvel para ser executado. A pgina compilada quando criada ou alterada,porm a compilao s ocorre realmente quando a pgina solicitada. Mesmo quea pgina no possua nenhum recurso ASP.NET e tenha apenas HTML comum,ainda assim ela ser compilada dentro do modelo .NET.

    Quando uma pgina ASP.NET requisitada, o servidor Web direciona a req-uisio para o executvel aspnet_wp.exe, para que a requisio seja atendida.O resultado devolvido para o servidor Web, que, por sua vez, o envia para obrowser que solicitou a pgina.

    A verso compilada em MSIL fica armazenada em uma DLL dentro deDrive:\WINNT\Microsoft.Net\Framework\v.1.x\Temporary ASP.NET files\.Pode-sevisualizar o contedo dessa DLL no MSIL Disassembler, digitando ILDASMna linha de comando, como mostrado na figura 2.3.

    O ASP.NET utiliza uma extenso de arquivo diferente de suas verses anteriores(.aspx em vez de .asp) e possui um ambiente de execuo totalmente separado(o Asp.dll no foi modificado). Isso significa que pginas .asp e .aspx podemcoexistir em um mesmo ervidor e em uma mesma aplicao.

    Figura 2.3 Visualizando informao do assembly com o ILDasm.

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    7/46

    23

    Pginas ASP.NETUma pgina ASP.NET um arquivo texto com a extens .aspx, como no exemploa seguir:

    Figura 2.4 Estrutura de uma pgina ASP.NET.

    Essa pgina destaca os elementos mais comuns encontrados em uma pginaASP.NET:

    Linha Descrio

    1 Diretiva que especifica parmetros de compilao da

    pgina.

    2-8 Bloco de Declarao de Cdigo, onde podem ser colocadas a funcionalidade

    da pgina e rotinas de tratamento de eventos.

    14 Texto esttico.

    15 Declarao de um formulrio Web, utilizando o controle de servidor

    form.16 Bloco de Gerao de Cdigo, onde pode ser inserido cdigo ASP.NET no

    meio de cdigo HTML.

    18-24 Cdigo contendo os controles de servidor (HTML e Web).

    Com a introduo de controles executados no servidor (Server Controls), aspginas ASP sofreram uma mudana na maneira de serem programadas. O novomodelo utiliza a programao orientada a eventos, dessa forma, os eventos queacontecem em um controle no cliente podem ser detectados pelo servidor e umaao pode ser tomada em resposta ao evento. Alm disso, no ASP.NET uma

    pgina representada por uma instncia da classe Page, que automaticamentecriada toda vez que feita a requisio da pgina.

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    8/46

    24

    Classe Page

    Toda pgina ASP.NET solicitada compilada como um objeto da classe Page, ea instncia dessa classe armazenada no cache do servidor, mesmo que a pgina

    contenha somente texto HTML. A classePage funciona como um container paratodos os controles que fazem parte da pgina solicitada, disponibilizando seusmtodos, propriedades e eventos, os quais podem ser acessados diretamente emuma pgina ASP.NET, como, por exemplo: Validate em vez de Page.Validate.

    Namespace: System.Web.UI

    Assembly: System.Web (System.Web.dll)

    Construtor

    New Page ()

    Cria uma nova instncia da classe Page.

    Propriedades pblicas

    A classe Pagepossui as seguintes propriedades pblicas, alm das propriedadesherdadas da classe Control.

    Application

    Retorna uma referncia a um objeto do tipoApplication (HttpApplicationState).Public ReadOnly Property Application As HttpApplicationState

    Cache

    Retorna uma referncia a um objeto do tipo Cache. Uma instncia da classeCache criada para cada aplicao, e ela permanece disponvel durante todoo ciclo de vida desta. O Cachepode ser utilizado para armazenar valores entrerequisies de pginas, os quais sero visveis para todos os usurios. NoASP.NET, pode-se utilizar o cache do servidor tanto para armazenamentoda sada de uma pgina dinmica, por meio da diretiva @OutPutCache, comopara o armazenamento de valores especficos.

    Public ReadOnly Property Cache As Cache

    Exemplo:

    Cache(txt1) = txtName.value

    ClientTarget

    Define ou retorna um valor que permite alterar a deteco automtica de browser. Pode ser utilizado para especificar os recursos suportados pelobrowser, os quais devem ser considerados para gerar a sada da pgina (porexemplo, se o browser suporta DHTML). O valor definido nessa propriedade

    deve corresponder ao valor especificado na seo do arquivode configurao Web.Config. Ao definir um valor para essa propriedade, adeteco automtica de browser desabilitada.

    Public Property ClientTarget As String

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    9/46

    25

    EnableViewState

    Define ou retorna um valor indicando se a pgina (e todos os controlescontidos nela) deve manter o seu estado (View State) entre requisies da

    pgina (True) ou no (False) (default = True).Overrides Public Property EnableViewState As Boolean

    ErrorPage

    Define ou retorna a pgina que deve ser carregada, caso seja detectado umerro (Exception) no tratado.Public Property ErrorPage As String

    ID

    Define ou retorna um identificador da instncia da classe Page da pginaem execuo.Overrides Public Property ID As String

    IsPostBack

    Indica se a pgina est sendo recarregada aps um round-trip (ida e voltaao servidor) ou se est sendo carregada pela primeira vez, permitindo o usodo evento Page_Load para definir valores iniciais para os controles.Public ReadOnly Property IsPostBack As Boolean

    Valor Descrio

    True Indica que a pgina foi carregada aps um round-trip.

    False Indica que a pgina est sendo carregada pela primeira vez ou por meio

    do boto Refresh .

    Exemplo:

    IsPostBack

    Sub Page_Load(Src As Object, E As EventArgs)if not isPostBack then

    response.write (Primeira execuo da pgina)end if

    End Sub

    IsValid

    Indica se a validao efetuada pelos controles de validao ocorreu com sucesso(True). Caso a pgina no possua controles de validao, retornar True.Public ReadOnly Property IsValid As Boolean

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    10/46

    26

    Request

    Retorna uma referncia ao objeto Request (HttpRequest).Public ReadOnly Property Request As HttpRequest

    Response

    Retorna uma referncia ao objeto Response (HttpResponse).Public ReadOnly Property Response As HttpResponse

    Server

    Retorna uma referncia ao objeto Server (HttpServerUtility).Public ReadOnly Property Server As HttpServerUtility

    Session

    Retorna uma referncia ao objeto Session (HttpSessionState).Overridable Public ReadOnly Property Session As HttpSessionState

    SmartNavigation

    Define ou retorna um valor indicando que o recurso Smart Navigation esthabilitado (True) ou no (False). Smart Navigation um recurso suportadopelo browser Internet Explorer 5 (ou superior), que oferece funcionalidadesde navegao, tais como: persistncia da posio da barra de rolagem entrepginas, persistncia do foco em elementos da pgina durante a navegao

    e armazenamento do ltimo estado da pgina no histrico do browser. Orecurso Smart Navigation pode ser habilitado pelo atributo SmartNavigationda diretiva @Page.Public Property SmartNavigation As Boolean

    Trace

    Retorna uma referncia ao objetoTraceContext, que mostra detalhes de execuoda pgina, caso este tenha sido habilitado. A depurao (Tracing) pode serhabilitada por meio da diretiva @Page: .

    Public ReadOnly Property Trace As TraceContext

    User

    Obtm informaes sobre o usurio que est fazendo a requisio da p-gina. Retorna um objeto do tipo IPrincipal (System.Security.Principal) que possuia propriedade Identity.Public ReadOnly Property User As IPrincipal

    Identity expe as seguintes propriedades:

    Propriedade Descrio

    AuthenticationType Retorna o tipo de autenticao: None, Windows, Forms ou Pass-

    port.

    IsAuthenticated Retorna true se o usurio foi autenticado com sucesso, caso contrrio,

    false.

    Name Retorna o nome do usurio autenticado.

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    11/46

    27

    Exemplo:

    response.write (Usurio = & user.identity.name)response.write (Tipo de autenticao = & user.identity.AuthenticationType)if (user.identity.isAuthenticated) then

    response.write (
    Usurio autenticado.)else

    response.write (Usurio no autenticado.)end if

    Validators

    Retorna uma coleo contendo todos os controles de validao da pgina.Public ReadOnly Property Validators As ValidatorCollection

    Visible

    Define ou retorna um valor indicando se o objeto Page ser renderizado, ouseja, se a pgina estar visvel (True = default) ou no (False).Overrides Public Property Visible As Boolean

    Exemplo das propriedades da classe Page

    Livro ASP.NET

    Sub Page_Load(Src As Object, E As EventArgs)response.write (
    Propriedades da Classe Page)response.write (
    Cache = & Convert.ToString(Page.Cache))response.write (
    ClientTarget = & Convert.ToString(Page.ClientTarget))response.write (
    EnableViewState = & Convert.ToString(Page.EnableViewState))response.write (
    SmartNavigation = & Convert.ToString(Page.SmartNavigation))response.write (
    User = & Convert.ToString(Page.User))

    End Sub

    Propriedades protegidas

    A classe Pagepossui a seguinte propriedade protegida, alm das propriedadesprotegidas herdadas da classe Control:

    Context

    Retorna o objeto HttpContext associado pgina.Overrides Protected ReadOnly Property Context As HttpContext

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    12/46

    28

    Mtodos pblicos

    A classe Pagepossui os seguintes mtodos pblicos, alm dos mtodos pblicosherdados das classes Control e Object:

    DesignerInitialize

    Utilizado por ferramentas de desenvolvimento (RAD) para inicializar valoresda instncia da classe Page.

    GetPostBackClientEvent

    Retorna uma string que representa a funo script cliente que originou oenvio (postback) do formulrio.Public Function GetPostBackClientEvent( ByVal controle As Control, _

    ByVal argumento As String) As String

    Parmetro Descrio

    controle Controle que recebe o envio (postback) do evento cliente.

    argumento Argumento passado para o mtodo IPostBackEventHandler.RaisePostBackEv-ent.

    GetPostBackClientHyperlink

    Retorna o nome da funo do lado cliente e o ID do controle do servidorque processou a funo.Public Function GetPostBackClientHyperlink(ByVal controle As Control,

    _ByVal argumento As String) As String

    Parmetro Descrio

    controle Controle do servidor que processar o envio (postback).

    argumento Argumento passado para o controle do servidor.

    GetPostBackEventReference

    (Sobrecarregado)

    Retorna uma referncia funo do lado cliente que pode ser inserida emum manipulador de evento cliente.

    Prottipo 1:Overloads Public Function GetPostBackEventReference(_

    ByVal controle As Control) As String

    Parmetro Descrio

    controle Controle do servidor que processar o envio (postback).

    Prottipo 2:

    Overloads Public Function GetPostBackEventReference(ByVal controle As Control, _

    ByVal argumento As String) As String

    Parmetro Descrio

    controle Controle do servidor que processar o envio (postback).

    argumento Argumento passado para o controle do servidor.

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    13/46

    29

    GetTypeHashCode

    Retorna um cdigo, por meio de uma funo hash, gerado para objetosPage em tempo de execuo. Esse cdigo nico para o objeto Page dentro

    da hierarquia de controles (default = 0).Overridable Public Function GetTypeHashCode() As Integer

    IsClientScriptBlockRegistered

    Retorna um valor indicando se o bloco de script cliente est registrado (True)ou no (False) na pgina. Blocos de script so emitidos no topo da pginaASP.NET. Para emitir blocos de script no rodap da pgina, deve-se utilizarblocos de script startup.Public Function IsClientScriptBlockRegistered( ByVal chave As String) As Boolean

    Parmetro Descriochave Chave do script cliente.

    IsStartupScriptRegistered

    Retorna um valor indicando se o bloco de script startup cliente j estregistrado (True) ou no (False) em uma pgina. Utilizado antes da chamadado mtodo Page.RegisterClientScriptBlockpara evitar que o script seja registradonovamente. Blocos de script startup so emitidos no rodap da pginaASP.NET e devem ser utilizados na inicializao da pgina. Pelo fato de

    serem inseridos no rodap da pgina, os elementos a que o bloco de scriptfaz referncia necessariamente tero sido carregados antes de o script serexecutado. Para emitir blocos de script no topo da pgina, deve-se utilizarBlocos de script.Public Function IsStartupScriptRegistered( ByVal chave As String) As Boolean

    Parmetro Descrio

    chave Chave do script startup cliente.

    MapPath

    Retorna o caminho fsico para um caminho virtual (absoluto ou relativo)correspondente no servidor.Public Function MapPath(ByVal virtualPath As String) As String

    Parmetro Descrio

    virtualPath Especifica o caminho virtual a ser mapeado para um caminho fsico. Se

    o caminho inicia com (/) ou (\), assume ser um caminho virtual absoluto.

    Caso contrrio, assume ser um caminho relativo ao diretrio fsico no qual

    o arquivo .aspx est sendo processado.

    RegisterArrayDeclaration

    Declara um array utilizando linguagem de script em uma pgina. Pode serusado para que o elemento renderizado por um controle de servidor sejainserido em um array no script do lado cliente.

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    14/46

    30

    Esse array permite tratar elementos do mesmo tipo de maneira uniforme,facilitando o acesso a estes. Por exemplo, os controles de validao utilizamum array chamado Page_Validators.

    Public Sub RegisterArrayDeclaration(ByVal NomeArrayAs String, _

    ByVal ValorArray As String)

    Parmetro Descrio

    nomeArray Nome do array no qual o valor ser declarado.

    valorArray Valor a ser colocado no array.

    RegisterClientScriptBlock

    Insere blocos de script no cliente que podem ser utilizados pelos controlesde servidor.Overridable Public Sub RegisterClientScriptBlock(ByVal chave As String, _

    ByVal scriptAs String)

    Parmetro Descrio

    chave Chave nica que identifica o bloco de script.

    script Contedo do script que ser inserido no cliente.

    Exemplo:

    Sub Page_Load( sender as Object,e as EventArgs)Script que ser enviado para o clienteDim strScript as String = function SubOk() {strScript += alert(O boto foi clicado !!);}If(Not IsClientScriptBlockRegistered(Script1))

    RegisterClientScriptBlock(Script1, strScript)End If

    End Sub

    RegisterHiddenField

    Insere um campo oculto (hidden) em um formulrio. O campo ser enviadopara a pgina quando o controle HtmlForm for renderizado.Overridable Public Sub RegisterHiddenField(ByVal nomeCampoOculto As String, _

    ByVal valorCampoOculto As String)

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    15/46

    31

    Parmetro Descrio

    nomeCampoOculto Nome do campo oculto a ser criado.

    valorCampoOculto O valor a ser associado propriedade value do campo oculto.

    Exemplo:

    Sub Page_Load(sender As Object, e As EventArgs)RegisterHiddenField(NomeCampoOculto, Valor do Campo)

    End sub

    RegisterOnSubmitStatement

    Usado para acessar o evento cliente OnSubmit em uma pgina.Public Sub RegisterOnSubmitStatement(ByVal chave As String, _

    ByVal scriptAs String)

    Parmetro Descrio

    chave Chave nica que identifica o bloco de script.

    script Bloco de script que ser acionado no evento OnSubmit.

    Exemplo:

    Sub Page_Load(sender As Object, e As EventArgs)RegisterOnSubmitStatement(submit, document.write(O evento Submit foi disparado !!))End sub

    RegisterRequiresPostBack

    Registra um controle, exigindo o tratamento de envio para o servidor (post-back).Public Sub RegisterRequiresPostBack(ByVal controle As Control)

    RegisterRequiresRaiseEvent

    Registra um controle, exigindo que um evento seja disparado quando ocontrole for processado na pgina.Overridable Public Sub RegisterRequiresRaiseEvent( _

    ByVal controle As IPostBackEventHandler)

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    16/46

    32

    RegisterStartupScript

    Registra blocos de script startup em uma pgina, evitando que blocosduplicados de cdigo de script sejam enviados ao cliente.

    Overridable Public Sub RegisterStartupScript(ByVal chave As String, _ByVal scriptAs String)

    Parmetro Descrio

    chave Chave nica que identifica o bloco de script.

    script Contedo do bloco de script.

    RegisterViewStateHandler

    Utilizado para persistir o View State de uma pgina. Normalmente somenteo objeto HtmlForm chama esse mtodo.

    Public Sub RegisterViewStateHandler()

    Validate

    Faz com que todos os controles de validao contidos em uma pgina executemsuas validaes. Esse mtodo executado pelos controles que possuem apropriedade CausesValidation com valor True.Overridable Public Sub Validate()

    VerifyRenderingInServerForm

    Utilizado para confirmar se um controle que requer um formulrio (HtmlForm)foi devidamente inserido nele. Se o controle no estiver entre as tags deformulrio, uma exceo ser gerada.Overridable Public Sub VerifyRenderingInServerForm(ByVal controle As Control)

    Mtodos protegidos

    A classe Pagepossui os seguintes mtodos protegidos, alm dos mtodos prote-gidos herdados das classes Control, TemplateControl e Object:

    CreateHtmlTextWriter

    Cria um objeto objpara renderizar o contedo da pgina.Overridable Protected Function CreateHtmlTextWriter(ByVal objAs TextWriter) As

    HtmlTextWriter

    DeterminePostBackMode

    Determina o tipo de solicitao feito para a pgina.Overridable Protected Function DeterminePostBackMode() As NameValueCollection

    LoadPageStateFromPersistenceMedium

    Carrega as informaes de estado para o objeto Page. Esse mtodo deve sersobreescrito para que o estado possa ser carregado com outra fonte que noseja um campo oculto.Overridable Protected Function LoadPageStateFromPersistenceMedium() As Object

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    17/46

    33

    RaisePostBackEvent

    Notifica o controle que causou o envio de que ele deve atender a umevento.

    Overridable Protected Sub RaisePostBackEvent(ByVal sourceControl As IPostBack-EventHandler, ByVal eventArgument As String)

    SavePageStateToPersistenceMedium

    Salva qualquer informao de View State da pgina por meio do objetoespecificado em viewState.Overridable Protected Sub SavePageStateToPersistenceMedium(ByVal viewState As

    Object)

    Eventos

    A classe Pagepossui os seguintes eventos pblicos herdados das classes Template-Control e Control, listados pela ordem de execuo:

    Init

    Ocorre quando a pgina inicializada. o primeiro passo no ciclo de vidada pgina e qualquer informao de inicializao pode ser colocada nesseevento. Informao de View State no est disponvel nesse evento (poisainda no foi gerada), assim como o acesso a outros controles da pgina nodeve ser feito, pois estes ainda no esto disponveis durante esse evento

    (herdado da classe Control).Load

    Ocorre toda vez que a pgina carregada. Utilize a propriedade IsPostBack para verificar se a primeira vez que a pgina carregada (herdado daclasse Control).

    DataBinding

    Ocorre quando o mtodo DataBind chamado na pgina. O mtodo DataBindvincula uma fonte de dados ao controle (herdado da classe Control).

    PreRender

    Ocorre antes que qualquer sada seja enviada para o browser. Mudanas noestado do controle (View State) podem ser atualizadas durante esse evento(herdado da classe Control).

    Unload

    Ocorre toda vez que o processamento da pgina finalizado. Qualquer aofinal como fechar arquivos, fechar conexes com banco de dados ou descartar

    objetos pode ser feita durante esse evento (herdado da classe Control).Dispose

    Ocorre quando o objeto Page liberado da memria (herdado da classeControl).

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    18/46

  • 8/6/2019 Fundamentos Do ASP

    19/46

    35

    NomeEndereo

    Sintaxe de controle de servidor Web

    Utilizada para declarar Controles de Servidor Web.

    Exemplo:

    Sintaxe de controle HTML

    Utilizada para declarar controles HTML que sero processados no servidor.Distingue-se de uma tag HTML-padro por meio do atributo runat=server.

    Exemplo:

    Sintaxe de Data Binding:

    O cdigo declarado dentro da tag executado somente quando o mtodoDataBind do container chamado.

    Exemplo:

    Sintaxe de objeto:

    Utilizado para declarar e criar instncias de objetos.

    Exemplo:

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    20/46

    36

    Sintaxe de comentrio:

    Utilizada para comentar ou desabilitar o cdigo dentro dos blocos de gerao decdigo da pgina (tags ). O contedo dessa tag no processado. Para co-

    mentar o cdigo dentro dos blocos de declarao de cdigo ()deve-se utilizar o estilo de comentrio da linguagem de programao que estiversendo empregada. Por exemplo, para o VB.NET, deve-se utilizar um caracterede aspas simples para comentar uma linha de cada vez.

    Exemplo:

    Sintaxe de Server-Side Include:

    Permite a incluso de contedo contido em outro arquivo, em qualquer lugarna pgina ASP.NET. Por default, essa tag pode ser utilizada somente a partir dearquivos com as extenses .shtml, .shtm, .stm, .asp, .asa, .asax e .aspx. Pode-sealterar essas extenses por meio do Internet Services Manager.

    Um arquivo pode ser includo por meio de seu caminho fsico ou virtual.

    Parmetro Descrio

    tipoCaminho O tipo do caminho do arquivo. Pode ser File ou Virtual.

    file Indica que o parmetro nomeArquivo um caminho relativo a partir do

    diretrio contendo o arquivo com a diretiva include. O arquivo include pode

    estar no mesmo diretrio ou em um subdiretrio, porm no pode estar em

    um diretrio acima do arquivo que contm a diretiva include.

    virtual Indica que o parmetro nomeArquivo um caminho virtual a partir do

    diretrio virtual da aplicao.

    nomeArquivo O nome do arquivo cujo contedo ser includo na pgina corrente. Deve

    conter a extenso do arquivo e deve estar definido entre aspas ().Exemplo:

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    21/46

    37

    Principais diretivas de pginaAs diretivas de pgina definem parmetros opcionais utilizados pelo ASP.NET para o processamento das pginas e User Controls. Podem ser inseridas em

    qualquer lugar na pgina com a seguinte sintaxe:

    As seguintes diretivas podem ser utilizadas:

    @ Page

    Define parmetros especficos de compilao e processamento para a pgina.Principais atributos:

    Atributo Descrio

    AspCompat Se True, permite o acesso a componentes COM com modelo de thread

    single-threaded apartment(STA) (VB 6.0) (default = false).Buffer Habilita (true) ou desabilita (false) o buffer da pgina (default = true).

    ClientTarget Indica para que tipo de browser os elementos da pgina devem ser ren-

    derizados.

    Debug Utilizada para colocar a pgina em modo de debug (default = false).

    EnableViewState Habilita (true) ou desabilita (false) o controle de estado dos elementos da

    pgina (default = true).

    ErrorPage Especifica a pgina de erro.

    Explicit Obriga (true) ou no (false) a declarao de variveis (default = false).

    Inherits Indica a classe utilizada pela pgina.

    Language Especifica a linguagem utilizada na pgina nas tags .Src Especifica o arquivo contendo o cdigo-fonte.

    Trace Habilita (true) ou desabilita (false) o rastreamento para a pgina (default =

    false).

    @ Control

    Define parmetros especficos de compilao e processamento para o UserControl (.ascx).

    Da mesma forma que a diretiva @ Page, possui uma srie de atributos:Atributo Descrio

    AutoEventWireup Indica se os eventos da pgina esto ligados automaticamente

    (default=True).

    ClassName Especifica o nome da classe da pgina.

    CompilerOptions String contendo as opes de compilao para a pgina.

    Debug Indica se a pgina deve ser compilada com smbolos de debug.

    Description Descrio da pgina.

    EnableViewState Indica se o View State do User Control ser mantido entre solicitaes

    (True = default).

    Explicit Determina se a pgina ser compilada utilizando o comando Option Explicitdo Visual Basic.

    Inherits Define a classe de code-behind do User Control.

    Language Especifica a linguagem utilizada na pgina.

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    22/46

    38

    Atributo Descrio (cont.)

    Strict Determina se a pgina ser compilada utilizando o comando Option Strict

    do Visual Basic.

    Src Especifica o nome do arquivo-fonte da classe code-behind do User Con-

    trol.

    WarningLevel Indica o nvel de advertncia do compilador (0 a 4).

    @ Import

    Importa um namespace para uma pgina. Caso a diretiva@Import seja utilizadano arquivo Global.asax, o namespace ser importado para toda a aplicao,e suas classes estaro disponveis para todas as pginas. O namespace im-portado pode ser parte do Framework .NET ou um namespace definido pelousurio. No preciso importar um namespace para utilizar seus objetos.

    A importao apenas facilita o acesso ao objeto, porm se pode referenciaro objeto utilizando seu namespace completo, como, por exemplo: Dim obj asSystem.IO.File.

    Exemplo:

    Os seguintes namespaces so importados automaticamente para todas aspginas ASP.NET:

    System System.Collections

    System.Collections.Specialized

    System.Configuration

    System.IO

    System.Text

    System.Text.RegularExpressions

    System.Web

    System.Web.Caching

    System.Web.Security

    System.Web.SessionState

    System.Web.UI

    System.Web.UI.HtmlControls

    System.Web.UI.WebControls

    @ Implements

    Indica que a pgina ou User Control implementar uma interface espec-fica.

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    23/46

    39

    @ Assembly

    Vincula um assembly pgina corrente durante a compilao, tornandotodas as classes do assembly disponveis para serem utilizadas na pgina.

    Caso a diretiva seja utilizada em um arquivo Global.asax, as classes estarodisponveis para toda a aplicao.

    A referncia a um assembly feita em tempo de compilao (early binding).A partir do momento que a pgina referenciando o assembly for compilada,o assembly carregado e fica disponvel para toda a aplicao, permitindovnculo tardio (late binding).

    Atributo Descrio

    Name Uma string que representa o nome do assembly a ser vinculado na pgina.

    A extenso do arquivo no deve ser includa.

    Src O caminho do arquivo do assembly a ser vinculado.

    No possvel utilizar os atributos Name e Src na mesma diretiva @Assembly.Para utiliz-los, deve-se utilizar uma diretiva para cada atributo.

    Os assemblies armazenados no diretrio /Bin, abaixo do diretrio raiz daaplicao, so automaticamente importados para a aplicao. Para impedirque isso acontea, deve-se retirar a seguinte linha do arquivo Web.config:

    O arquivo Web.config tambm pode ser utilizado para importar um assemblypara uma aplicao.

    Exemplo:

    @ OutputCache

    Define a poltica de cache para a pgina ou User Control, permitindo o arma-

    zenamento da sada da pgina ou User Control no cache do servidor, ou seja,a sada gravada em disco rgido na localizao especificada em Location. Ocache de sada pode ser utilizado para se obter ganhos de performance empginas muito acessadas.

    Atributo Descrio

    Duration Tempo (em segundos) em que a pgina armazenada no cache.

    Location Especifica o local de armazenamento da sada (Any, Client, Downstream,

    None, Server).

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    24/46

  • 8/6/2019 Fundamentos Do ASP

    25/46

    41

    Exemplo de Code Behind:

    Primeiro deve ser criado o arquivo com o Code Behind (MeuFonteCodeBe-hind.vb):

    Option Strict OffImports SystemImports System.Web.UIImports System.Web.UI.WebControlsImports System.Web.UI.HtmlControls

    Public Class MeuCodeBehind: Inherits PagePublic Nome As TextBoxPublic spnSpan1 As HtmlGenericControlPublic Sub SubmitBtn_Click(Sender As Object, E As EventArgs)

    spnSpan1.InnerHtml = Ol, & Nome.Text & .End SubEnd Class

    E em seguida, pode-se utilizar o cdigo em uma pgina ASP.NET, como aseguir:

    Nome:

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    26/46

    42

    Aplicao ASP.NETUma aplicao ASP.NET o conjunto de todos os arquivos, pginas, handlers,mdulos e cdigos executveis que podem ser acessados por meio de um di-

    retrio virtual e seus subdiretrios em um servidor Web. Aplicaes ASP.NETso entidades totalmente separadas, ou seja, cada aplicao tratada dentro deum domnio de aplicao do CLR (runtime). Isso significa que cada aplicaopode manter suas prprias caractersticas de processamento e configuraes, pormeio dos arquivos Global.asax e Web.Config.

    Cache de AssemblyUma aplicao ASP.NET utiliza o diretrio \bin chamado de Cache de Assem-bly, para armazenar os arquivos compilados (DLLs) utilizados. Cada aplicao

    tem seu prprio diretrio, ou pode herdar um de seu diretrio-pai. Os assembliescolocados nesse diretrio ficam automaticamente disponveis para a aplicao.

    O arquivo Global.asax um arquivo opcional com a finalidade de armazenar informaes ou objetosque sero utilizados globalmente pela aplicao. O Global.asax deve residir nodiretrio raiz da aplicao e possui sintaxe e utilidade similar ao arquivo Global.asp do ASP 3.0. O Global.asax um arquivo em formato-texto que obedece smesmas regras de compilao e execuo de um arquivo .aspx. Quando compi-lado, transformado em IL como classe derivada de HttpAplication.Os arquivos Global.asa e Global.asax podem existir em uma mesma aplicao,e as informaes contidas no arquivo Global.asa somente sero visveis parapginas com extenso .asp e vice-versa.

    Por segurana, o arquivo Global.asax no pode ser executado a partir dobrowser.

    Partes do arquivo Global.asax

    Um arquivo Globa.asax pode ser composto dos seguintes elementos: Diretivas de aplicao: especifica parmetros opcionais de compilao e

    execuo das pginas ASP.NET.

    Blocos de cdigo: define os mtodos e propriedades que faro parte da classeHttpApplication, que gerada como resultado da compilao do arquivo Global.asax.

    Declaraes : declarao e criao de objetos.

    Diretivas Server-Side: inclui o contedo de um arquivo especificado no

    arquivo Global.asax.

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    27/46

    43

    Diretivas de aplicao

    Trs tipos de diretivas podem ser utilizadas:Application,Import eAssembly.

    @Application

    Define atributos especficos da aplicao utilizados pelo compilador.

    Sintaxe:

    Atributo Descrio

    Description Descrio em formato-texto da aplicao. Esse valor ignorado pelo parser

    e compilador do ASP.NET.

    Inherits Nome da classe a ser derivada. Por padro, o arquivo Global.asax

    compilado como uma classe derivada de HttpApplication, porm pos-

    svel especificar, por meio desse atributo, uma outra classe, desde queela tambm seja derivada da classe HttpApplication.

    Exemplo:

    @Import

    Ver descrio dessa diretiva na pgina 38.

    @Assembly

    Ver descrio dessa diretiva na pgina 39.

    Blocos de cdigo

    Blocos de cdigo permitem a definio de variveis, mtodos e eventos que faroparte da classe HttpApplication, resultado da compilao do arquivo Global.asax.

    Sintaxe:

    Cdigo

    Atributo Descrio

    runat Especifica que o cdigo ser executado no servidor.

    language A linguagem utilizada no bloco de cdigo corrente. Se no for especificada,

    a linguagem default ser utilizada (definida no arquivo de configurao da

    aplicao).

    src O nome do arquivo contendo o cdigo. Quando utilizado, qualquer cdigo

    dentro do bloco ignorado.

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    28/46

    44

    Declaraes

    A tag pode ser utilizada para declarar e criar objetos de aplicaoe sesso. A tag pode ser utilizada de trs diferentes formas, dependendo do

    tipo do objeto a ser criado:

    Atributo Descrio

    id Identificador nico dentro da pgina para o objeto a ser criado e usado

    para referenciar o objeto no cdigo.

    runat Especifica que o cdigo ser executado no servidor.scope Escopo do objeto a ser criado (default=pipeline).

    pipeline Disponvel somente dentro da solicitao (request).

    application Disponvel para toda a aplicao e o objeto armazenado dentro da coleo

    HttpApplicationState.

    session Disponvel dentro da sesso e o objeto armazenado dentro da coleo

    HttpSessionState.

    class Classe da qual ser criada uma instncia.

    progID Identificador programtico do componente (COM) a ser instanciado.

    classID CLSID do componente (COM) a ser instanciado.

    Os atributos class, progID e classId so mutuamente exclusivos e geram um erroquando declarados dentro de uma mesma tag .

    Exemplo:

    Eventos do Global.asax

    O arquivo Global.asax suporta os eventos expostos pela classe HttpApplication,alm dos eventos j suportados nas verses anteriores. Os eventos podem serdeclarados da seguinte maneira:

    Application_EventName (Argumentos do Evento)

    A seguir descreveremos os eventos disponveis que podemos utilizar no global.asax:

    Application_Start

    Ocorre na primeria vez em que o usurio solicita uma pgina da aplicao.

    Application_End

    Ocorre quando o servio Web parado no servidor.

    Session_Start

    Ocorre quando um novo usurio solicita uma pgina da aplicao, ou seja,quando uma sesso de usurio iniciada.

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    29/46

    45

    Session_End

    Ocorre quando a sesso de usurio encerrada por timeout de sesso (de-fault=20 minutos) ou pela execuo do mtodoAbandon (Session.Abandon).

    Application_AcquireRequestState

    Ocorre quando o ASP.NET obtm o estado corrente associado solicitaocorrente.

    Application_AuthenticateRequest

    Ocorre quando a identidade do usurio estabelecida. Pode ser usado paraexecutar qualquer cdigo antes que o usurio seja autenticado.

    Application_AuthorizeRequest

    Ocorre quando a autorizao do usurio verificada. Pode ser utilizado paraexecutar qualquer cdigo antes de o usurio ter autorizao para um recurso,como, por exemplo, autorizao para acesso a uma URL.

    Application_BeginRequest

    Ocorre toda vez que uma solicitao feita ao servidor Web.

    Application_Disposed

    Ocorre quando a cadeia de execuo de uma solicitao foi completada.

    Application_EndRequest o ltimo evento a ser executado no atendimento a uma solicitao.

    Application_Error

    Ocorre quando um erro no tratado encontrado.

    Application_PostRequestHandlerExecute

    Ocorre quando um handler ASP.NET (pgina ou Web Service) termina seuprocessamento. o primeiro evento disponvel aps o handler concluir seutrabalho.

    Application_PreRequestHandlerExecute

    Ocorre antes do incio de execuo de um handler ASP.NET.

    Application_PreSendRequestContent

    Ocorre antes do envio de contedo para o cliente.

    Application_PreSendRequestHeaders

    Ocorre antes do envio de cabealhos HTTP para o cliente.

    Application_ReleaseRequestState

    Ocorre depois que o ASP.NET termina a execuo de todos os handlers.

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    30/46

    46

    Application_ResolveRequestCache

    Ocorre quando o ASP.NET completa um evento de autorizao deixandoos mdulos de cache atenderem solicitao, em vez da pgina ou Web

    Service.Application_UpdateRequestCache

    Ocorre quando o ASP.NET termina a execuo de um handler com a finalidadede deixar que mdulos de cache armazenem respostas que sero utilizadaspara solicitaes subseqentes a partir do cache.

    Exemplo:

    O seguinte exemplo ilustra como utilizar o evento Error para gravar informaode erro no Log de eventos do NT:

    Dim NomeLog As String = LogTesteAplicacaoSub Application_Start(ByVal sender As Object, ByVal e As EventArgs)

    Cria eventoIf (Not EventLog.SourceExists(NomeLog)) Then

    EventLog.CreateEventSource(NomeLog, NomeLog)End If

    End Sub

    Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)Dim strMensagem As String = Url & Request.Path & Erro: & Me.Error.ToString() Cria entrada no log de eventosDim Log As New EventLog()Log.Source = NomeLogLog.WriteEntry(strMensagem, EventLogEntryType.Error)

    End Sub

    Diretivas Server-Side Include

    Como em uma pgina ASP.NET comum, a incluso de contedo contido emoutro arquivo permitida no arquivo Global.asax e realizada por meio datag Include. Para mais detalhes sobre a sintaxe veja a pgina 36.

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    31/46

    47

    Arquivo Web.ConfigO arquivo Web.Config um arquivo-texto em formato XML utilizado paraarmazenar informaes de configurao do servidor Web, tais como habilitar o

    estado de sesso (session state), session timeout, buffering, linguagens default,ou mesmo armazenar outras informaes de configurao personalizadas, cujospares de chaves/valores podem ser criados e inseridos no arquivo. No ASP 3.0essas configuraes eram feitas por meio do Internet Information Server (IIS), oque dificultava o acesso programtico a estas. No ASP.NET possvel copiar aconfigurao do servidor Web com seu cdigo e contedo, como tambm alteraressas configuraes via FTP.

    Da mesma maneira que o arquivo Global.asax, o Web.Config no um arquivoexigido para que a aplicao funcione. Caso ele no seja encontrado na hierarquia

    de diretrios da aplicao, ser utilizado um arquivo chamado Machine.Config(WINNT\Microsoft.NET\Framework\verso\CONFIG\Machine.config), comconfiguraes predefinidas que servem para todo o servidor Web. Pode-se criarvrios arquivos de configurao (todos chamados Web.config), os quais podemser colocados em diferentes diretrios da aplicao, e suas configuraes teroefeito sobre o diretrio corrente e seus respectivos subdiretrios. Arquivos deconfiguraes em diretrios-filho herdam configuraes definidas em diretrios- pai, e tambm podem alterar ou sobrepor essas configuraes. Esse sistemahierrquico de herana de configuraes baseado no caminho do diretrio

    virtual, e no no caminho fsico.Da mesma maneira que o arquivo Global.asax, por segurana, o arquivo Web.Config no pode ser acessado via browser.

    Estrutura do arquivo Web.Config

    O arquivo Web.Config segue regras de sintaxe XML. Toda informao de configu-rao deve ficar entre as tags e ,que so agrupadasem duas reas principais: seo de declarao do handler e seode definio de configurao do handler. Um handler uma classe

    .NET que implementa a interface IConfigurationSectionHandler.

    < handler_1>

    configurao do handler_1< handler_2>

    configurao do handler_2

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    32/46

    48

    Configuraes-padro do ASP.NETO ASP.NET possui os seguintes handlers-padro que podem ser utilizados paradefinir as configuraes no arquivo Web.Config:

    Seo Descrio

    Configura mdulos de HTTP dentro de uma aplicao, os quais par-

    ticipam no processamento de cada solicitao. Utilizaes comuns

    incluem segurana e conexo.

    Mapeia URLs de entrada em classes IHttpHandler. Os subdiretrios noherdam essas configuraes. Responsvel tambm pelo mapeamento

    de URLs de entrada em classes IHttpHandlerFactory. Os dados repre-sentados nas sees so hierarquicamente

    herdados por subdiretrios.

    Configura o estado de sesso.

    Define as configuraes de globalizao de uma aplicao. Define as configuraes de compilao de uma aplicao.

    Configura o rastreamento de uma aplicao.

    Configura o modelo de processamento do ASP.NET no servidor

    Web.

    Define as configuraes do componente de capacidades do brows-

    er.

    Exemplo de arquivo Web.Config:

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    33/46

    49

    Acessando informaes de configurao nas pgi-

    nasPode-se acessar as configuraes definidas no arquivo Web.Config, a partir de

    uma pgina, por meio dos objetos intrnsecos ASP.NET. A seguinte linha decdigo d acesso ao atributo cookieless da seo :

    Dim nocookies As Boolean = Session.IsCookieless

    Ou por meio do mtodo GetConfig da coleo ConfigurationSettings:

    Dim config As NameValueCollection = ConfigurationSettings.GetConfig(mysection)Response.Write(O valor da chave um & config(key_one) &
    )

    Configuraes de aplicao armazenadas na seo podem seracessadas da seguinte forma:

    Dim dsn As String = ConfigurationSettings.AppSettings(dsn)

    Gerenciamento de estado da aplicaoPginas ASP.NET so baseadas no protocolo HTTP, e dessa forma no persisteo estado entre solicitaes (stateless). Para resolver esse problema, o ASP.NEToferece as seguintes alternativas:

    Gerenciamento de estado no lado Cliente

    Nenhuma informao de estado mantida no servidor entre as solicitaes. A

    informao fica armazenada na pgina ou no computador-cliente.

    Cookies

    Arquivo-texto armazenado no computador do usurio que pode conter at 4.096bytes. O cookie um dos mtodos utilizados pelo ASP.NET para identificar asesso do usurio. Para trabalhar com cookies, necessrio utilizar a classeHttpCookie para armazen-los, e as classes HttpResponse e HttpRequestpara envi-lose receb-los, respectivamente.

    Exemplo:

    L o cookie armazenado no clienteIf Request.Cookies(UserName) = Null Then

    Dim cookie As New HttpCookie(NomeUsuario)cookie.Values.Add(NomeUsuario, Isabela)...Envia o cookie para o clienteResponse.AppendCookie(cookie)

    End If

    Campos ocultos (Hidden)

    Campos ocultos no ficam visveis na pgina e podem ser utilizados para ar-mazenar informaes especficas da pgina. O contedo de um campo oculto enviado na coleo Form. O ASP.NET possui o controleHtmlInputHiddenque oferecefuncionalidade para campos ocultos.

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    34/46

    50

    View State

    Recurso utilizado pelo ASP.NET para descrever o estado de um controle de ser-vidor em um dado momento. utilizado para persistir os valores dos controles,

    por exemplo, contedos de caixa de texto e seleo de botes de rdio entre oenvio e retorno de uma pgina (postback). O ASP.NET automaticamente moni-tora o View State. Isso significa que se voc preencher um formulrio HTMLe clicar em submit, os valores ainda estaro na pgina quando esta voltar doprocessamento no servidor.

    O ASP.NET implementa o View State incorporando campos HTML ocultos napgina sempre que um controle de servidor for utilizado (runat=server). Almdisso, pode-se armazenar valores no View State por meio do objeto StateBag, daseguinte maneira:

    ViewState(Nome da varivel) = valor

    O StateBag descartado assim que o usurio deixa a pgina. Os valores somantidos desde que o Post seja feito para a mesma pgina.

    Query Strings

    Possibilita o envio de pequenos volumes de dados de uma pgina para outra. Paramais detalhes, consultar a propriedade HttpRequest.QueryString, na pgina 75.

    Gerenciamento de estado no lado Servidor

    O gerenciamento de estado no servidor pode ser feito por meio dos objetosintrnsecosApplication (HttpApplicationState) e Session (HttpSessionState). Alm disso, pode-se fazer o gerenciamento de estado da aplicao utilizando o banco dedados. O armazenamento de estado em um banco de dados especialmente tilpara a manuteno do estado em um perodo de tempo maior ou quando o estadodeve ser persistido mesmo que o servidor Web tenha que ser reinicializado. Oarmazenamento em banco normalmente utilizado em conjunto com cookies.

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    35/46

    51

    Depurando pginas ASP.NETO suporte para depurao e tratamento de erros, chamados de excees, foisignificativamente melhorado no ASP.NET. Pode-se utilizar ferramentas de

    depurao e rastreamento, como o CLR Debugger e o Trace. O rastreamento acoleta de informaes sobre a pgina baseado nas solicitaes feitas para esta. Ja depurao refere-se execuo passo-a-passo do cdigo, com a possibilidadeda definio de breakpoints e visualizao do contedo de variveis.

    Alm disso, pode-se definir pginas de erro personalizadas, como tambm utilizara estrutura de tratamento de excees Try e Catch.

    Try e CatchAs instrues Try e Catch so utilizadas para capturar erros e trat-los dentro da pgina. Pode-se tambm utilizar a palavra-chave Throw para gerar erros per-sonalizados, da mesma maneira que o comando err.raise era utilizado no VisualBasic 6.0.

    Sintaxe:Try

    [ bloco de cdigo onde poder ocorrer um erro ][ Catch [ exceo [ As type

    ] ] [ When expresso ]

    [ bloco de tratamento do erro] ][ Exit Try ]...[ Finally

    [ bloco a ser executado incondicionalmente] ]End Try

    Exemplo:

    cria o objeto OleDbCommand aquiTry objCmd.Connection.OpenCatch objEx as OleDbException Trata exceo de OleDbCatch objEx as Exception

    Trata exceo genricaEnd Try

    As excees so agrupadas hierarquicamente. A classe Exception (System) aclasse-base para todas as excees. Todas as excees so mapeadas em classes.NET.

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    36/46

    52

    Pgina de erro personalizadaPara especificar uma pgina de erro-padro para uma aplicao ASP.NET, necessrio incluir a seguinte linha no arquivo Web.Config no diretrio raiz da

    aplicao:

    O atributo mode especifica quando a pgina de erro personalizada ser exi-bida:

    Valor Descrio

    On A pgina de erro ser exibida quando ocorrer um erro.Off A pgina de erro no ser exibida (default).

    Remoteonly A pgina de erro ser exibida somente para as estaes, enquanto no

    servidor ser exibida a pgina de erro default do ASP.NET que fornece

    informaes de depurao.

    Pode-se definir tambm pginas diferentes para cada erro, como a seguir:

    Alm disso, possvel especificar pginas de erro individuais para cada pgina,utilizando o atributo ErrorPage da diretiva @Page no incio da pgina:

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    37/46

    53

    TraceO trace um recurso do ASP.NET para coleta de informaes sobre a execuoda pgina, como tempos de execuo, objetos utilizados, cabealhos HTTP e

    variveis do servidor. Essas informaes podem ser exibidas na prpria pgina ouem uma pgina separada. Pode-se tambm inserir comandos de trace nas pginas,da mesma maneira que oResponse.writeera utilizado nas verses anteriores. Porm,com o trace, no necessrio remover manualmente essas informaes para queelas no fiquem visveis para o usurio, basta simplesmente desabilitar o trace.

    O objeto Trace (classe TraceContext) oferece mtodos e propriedades para o ras-treamento de execuo de cdigo. Pode-se utiliz-lo da seguinte forma em umapgina ASP.NET:

    Trace.Write (categoria, mensagem) ou

    Trace.Warn (categoria, mensagem)

    Parmetro Descrio

    categoria (String) Utilizada para agrupar ou identificar informaes de rastreamen-

    to.

    mensagem (String)Mensagem a ser exibida.

    As mensagem gravadas com Trace.Warn aparecero em vermelho na pgina detrace.

    Rastreamento no nvel de pgina

    O rastreamento no nvel de pgina pode ser ativado por meio do atributo Traceda diretiva @Page:

    O rastreamento no nvel de pgina sobrepe a configurao de rastreamentodefinida no arquivo Web.Config.

    Quando a pgina executada, uma tabela adicionada ao rodap dela contendoinformaes de rastreamento da pgina, como: Id da sesso, hora em que asolicitao foi processada, tempo de execuo de cada parte da pgina (o que

    til para otimizaes), rvore contendo os controles instanciados na pgina,coleo Cookies, cabealhos HTTP e coleo ServerVariables.

    Essas mesmas informaes esto disponveis por meio do utilitrio trace.axdquando o rastreamento no nvel de aplicao est habilitado.

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    38/46

    54

    Rastreamento no nvel de aplicao

    Para habilitar o recurso de rastreamento para uma aplicao ASP.NET inteira, necessrio incluir a seguinte linha no arquivo Web.Config no diretrio raiz

    da aplicao:

    Atributo Descrio

    Enabled Habilita (true) ou desabilita (false)o rastreamento (default=False).

    PageOutput

    True Se a informao de rastreamento exibida na prpria pgina e na

    pgina trace.axd.

    False Se for exibida somente na pgina trace.axd (default).

    RequestLimit Nmero de solicitaes a serem armazenadas no servidor com

    informaes de rastreamento (default=10).

    TraceMode Indica a ordem de exibio das informaes de rastreamento.

    SortByTime Exibe ordenando pela ordem de processamento (default).

    SortByCategory Exibe ordenando alfabeticamente e agrupada por categorias definidas

    pelo usurio.

    LocalOnly true se a pgina trace.axd est disponvel somente no servidor; false,

    caso contrrio (default).

    Para acessar as informaes de ratreamento, deve-se utilizar o utilitrio trace.axd.Para acess-lo basta digitar o caminho:

    http://host/Nome da Aplicao/trace.axd

    Figura 2.6 Informaes de rastreamento do utilitrio trace.axd.

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    39/46

    55

    DebugO Framework .NET oferece a ferramenta de debug CLR Debugger (\Micro-soft.NET\FrameworkSDK\GuiDebug\DbgCLR.exe), que aproveita a natureza

    compilada das pginas ASP.NET e oferece recursos de depurao de cdigo,como a utilizao de breakpoints e a visualizao do contedo de variveise expresses.

    Para utilizar o CLR Debugger, deve-se seguir os seguintes passos:

    1. Habilite o modo de debug da pgina a ser depurada, definindo o atributoDebug da diretiva @Page, como mostrado a seguir:

    Ou no arquivo Web.Config:

    2. Dentro do CLR Debugger, clique no menu File...Open File e selecione apgina a ser depurada.

    3. No menu Tools, clique em Debug Processes e selecione o processo Aspnet_wp.exe (marque a opo Show system processes).

    4. Clique em Attach e em seguida Close.

    5. Insira os breakpoints nos pontos desejados da pgina, clicando na margemesquerda da janela do CLR Deugger.

    6. Execute a pgina ASP.NET a ser depurada a partir do browser. Quando umbreakpoint for atingido, o debugger ser chamado.

    Figura 2.7 Tela da ferramenta de debug do Framework .NET.

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    40/46

  • 8/6/2019 Fundamentos Do ASP

    41/46

  • 8/6/2019 Fundamentos Do ASP

    42/46

    58

    SeguranaO ASP.NET trabalha em conjunto com o Internet Information Server (IIS) paradar suporte aos servios de autenticao, autorizao e personificao (Imperson-

    ation). Alm disso, o ASP.NET suporta segurana baseada em Roles. As classesde segurana do Framework .NET so encontradas nos namespaces System.Web.Security e System.Web.Principal. O ASP.NET oferece tambm recursos de criptografia,assinatura digital, hashing e autenticao de mensagens. O namespace System.Security.Cryptography fornece as classes que implementam esses mecanismos.

    AutenticaoA autenticao a identificao do usurio que fez a solicitao, validandosuas credenciais, que podem ser seu nome e sua senha. O ASP.NET suporta os

    seguintes tipos de autenticao:

    Forms

    Permite que aplicaes forneam sua prpria pgina de login e realizem a veri-ficao de credenciais. O ASP.NET redireciona a solicitao no autenticada paraessa pgina. A pgina submetida, a aplicao autentica a solicitao por meiodo objeto FormsAuthentication (classe FormsAuthentication) e o sistema cria um cookiecontendo as credenciais necessrias autenticao do usurio. As solicitaessubseqentes do browser automaticamente incluiro o cookie.

    A autenticao Forms implementada da seguinte forma: Habilitar o acesso annimo no IIS.

    Configurar a seo e no arquivo Web.Config.O acesso dos usurios annimos no deve ser permitido:

    Atributo Descrio

    LoginUrl Solicitaes no autenticadas sero redirecionadas para esta pgina.

    Name Nome do cookie de autenticao.

    Path Caminho do cookie de autenticao.

    Protection Opes de proteo dos dados do cookie. Este pode ser All, None, Encryp-

    tion, Validation.Timeout Tempo de expirao do cookie de autenticao em minutos.

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    43/46

    59

    Captulo 2 Fundamentos do ASP.NET

    Criar pgina de login, onde o usurio ser validado, o cookie ser gerado ea solicitao do usurio ser redirecionada. Por exemplo, o seguinte cdigode autenticao poderia ser usado na pgina de login:

    If FormsAuthentication.Authenticate(txtUserName.Value,txtUserPass.value) ThenFormsAuthentication.RedirectFromLoginPage(txtUserName.Value, chkPersistCookie.Checked)Else

    Response.Redirect(logon.aspx, false)End If

    O mtodoAuthenticate do objeto FormsAuthentication retornar True se o nomedo usurio e a senha combinarem com o usurio e a senha configurados noarquivo Web.Config.

    Windows

    Na autenticao Windows o IIS realiza a autenticao comunicando-se dire-tamente com o sistema operacional para validar as credenciais do usurio. Aautenticao repassada ao ASP.NET. A autenticao Windows requer o mnimode codificao.

    O IIS utiliza trs tipos diferentes de autenticao:

    Tipo Descrio

    Basic O nome do usurio e a senha so transmitidos em cada solicitao. O

    IIS mapeia o nome do usurio e a senha para um conta no servidor Web,

    produzindo um token de acesso que utilizado para verificar o acesso aosrecursos por meio das listas de controle de acesso (ACL).

    Digest Semelhante autenticao Basic, porm a senha do usurio no transmitida

    como texto aberto. Requer browser que suporte autenticao Digest.

    Integrada (NTLM) O usurio no entra com seu nome e senha. Em vez disso, aps o browser

    entrar em contato com o servidor, as informaes criptografadas de nome

    do usurio e a senha que o usurio utilizou para se logar na estao so

    enviados para autentic-lo no servidor. Requer que o browser seja o Internet

    Explorer.

    Exemplo de configurao de autenticao Windows:

    Os caracteres especiais tm o seguinte significado:

    Caractere Descrio

    * Representa todos os usurios ou todos os grupos.

    ? Significa acesso annimo. Para a autenticao do tipo Windows, ser

    interpretada como a conta de acesso annima (IUSR_NOME_DO_COM-PUTADOR).

  • 8/6/2019 Fundamentos Do ASP

    44/46

    60

    Passport

    Autenticao baseada no servio Passport da Microsoft. Funciona de maneirasemelhante autenticao Forms, porm toda a funcionalidade fornecida pelo

    Passport. Cria um cookie de autenticao que utilizado para autorizao. Podeser utilizado quando se necessita de uma autenticao nica entre aplicaes ousites. Mais informaes em www.passport.com.

    A autenticao Passport implementada da seguinte forma:

    1. Instalar o Passport SDK.

    2. Registrar-se no servio Passport Microsoft.

    3. Configurar o arquivo Web.Config:

    None

    A autenticao None (default) utilizada quando no h necessidade de imple-mentar segurana para a aplicao. Oferece ganho de performance para a aplicaoe permite implementar autenticao customizada.

    Configurao:

    AutorizaoAutorizao o processo que verifica se um usurio autenticado tem acesso aum determinado recurso. O ASP.NET oferece dois tipos de autorizao:FileAutho-rization(autorizao no nvel de diretrio e arquivo), que realizada pela classeFileAuthorizationModule e ativada quando a autenticao do tipoWindows. A classeFileAuthorizationModule responsvel por autorizar o acesso do usurio baseado naslistas de controle de acesso (ACLs); UrlAuthorization(autorizao no nvel de URL),realizada pela classe UrlAuthorizationModule, a qual responsvel por autorizar o

    acesso baseado na Url da solicitao. Os elementos deny e allow no Web.Configcontrolam quais usurios tm acesso a quais recursos.

    Exemplo de configurao de UrlAuthorization:

    ASP.NET Guia do Desenvolvedor

  • 8/6/2019 Fundamentos Do ASP

    45/46

    61

    PersonificaoA personificao (Impersonation) permite ao ASP.NET executar pginas com aidentidade do usurio que fez a solicitao, ou seja, o ASP.NET restringir ou

    negar o aceso baseado nas permisses desse usurio. A personificao no maisimplementada por default no ASP.NET, como nas verses anteriores do ASP.

    Figura 2.8 Fluxo de segurana utilizando personificao.

    Captulo 2 Fundamentos do ASP.NET

  • 8/6/2019 Fundamentos Do ASP

    46/46