Você está na página 1de 15

07/12/2014

online.unip.br/imprimir/imprimirconteudo

.NETFrameworkVersion:2.0,3.5

VisogeralsobredociclodevidadoaplicativoASP.NET
DentrodoASP.NET,vriosprocessosquedevemocorrerparaumaplicativoserinicializadoesolicitaes
deprocessos.Adicionalmente,ASP.NETapenasumapeadaarquiteturadoservidorWebqueserveas
solicitaesfeitaspelosnavegadores.importanteentenderociclodevidadapginaparaquevocpossa
escreverocdigonoestgiodociclodevidaapropriadoparaoefeitoquepretende.
CiclodeVidadoAplicativoemGeral
AtabelaseguintedescreveosestgiosdosciclosdevidadoaplicativoASP.NET.
Estgio

Descrio
OciclodevidadeumaplicativoASP.NETiniciasecomumasolicitaoenviada
pelonavegadorparaoservidorWeb(paraaplicativosASP.NET,tipicamente
IIS).ASP.NETumaextensoISAPIsoboservidorWeb.QuandoumservidorWeb
recebeumasolicitao,eleexaminaoNomedoArquivoextensodoarquivo
solicitado,determinaquaisISAPIextensodeveidentificadordesolicitaoeem
seguida,passaasolicitaoparaoapropriadoextensoISAPI.ASP.NETmanipula
extensesdenomesdearquivosqueforammapeadasparaisso,como.aspx,
.ascx,.ashx,e.asmx.

Observao:
Usuriossolicitamum IfaNomedoArquivoextensonothasbeenmappedtoASP.NET,thenASP.NET
recursodoaplicativo willnotRecebertheSolicitar.Issoimportantedeseentenderparaaplicativos
doservidorWeb.
queusamautenticaoASP.NET.Porexemplo,pelofatodearquivos.htm
tipicamentenoseremmapeadosparaASP.NET,ASP.NETnoirexecutar
verificaodeautenticaoeautorizaoparaarquivos.htm.Portanto,mesmo
queoarquivocontenhaapenascontedoesttico,sevocdesejaqueoASP.NET
verifiqueaautenticao,crieoarquivousandoumaextensodenomedearquivo
mapeadaparaoASP.NET,comoo.aspx.
Observao:
Sevoccriarummanipuladorpersonalizadoparaserviraumaextensodenome
dearquivoparticular,vocdevemapearaextensoparaASP.NETnoIISe
tambmregistraromanipuladoremseuarquivoWeb.configdoaplicativo.Para
obtermaisinformaes,consulteIntroduoaosmanipuladoresHTTP.
QuandoASP.NETrecebeoprimeiropedidoSolicitarparaqualquerrecursoemum
aplicativo,umaclassechamadaApplicationManagercriaumdomniode
aplicativo.Odomniodeaplicativosproporcionaisolamentoentreaplicaespara
variveisglobaisepermitecadaaplicaoserdescarregadaseparadamente.Dentro
deumdomniodeaplicativo,umainstnciadeumaclassenomeada
HostingEnvironmentcriada,essaproporcionaacessoinformaosobreo
aplicativo,comoonomedapastaondeeleestarmazenado.
Oseguintediagramailustraarelao:

http://online.unip.br/imprimir/imprimirconteudo

1/15

07/12/2014

online.unip.br/imprimir/imprimirconteudo

OASP.NETrecebea
primeirasolicitao
paraoaplicativo.

ASP.NETtambmcompilaositensdealtoaltonvelnoaplicativosenecessrio,
incluindocdigodoaplicativonapastaAppCode.Paramaioresinformaes,veja
"CiclodeVidadaCompilao"maisfrentenessetpico.
ApsaaplicaodedomniofoicriadoeoHostingEnvironmentobjetoinstanciado,
oASP.NETcriaeinicializancleodeobjetos,comoHttpContext,HttpRequeste
HttpResponse.AclasseHttpContextcontmobjetosquesoespecficosparaa
Objetosprincipaisdo
solicitaodoaplicativoatual,comoosobjetosHttpRequesteHttpResponse.O
ASP.NETsocriados
objetoHttpRequestcontminformaessobreasolicitaoatual,incluindo
paracadasolicitao.
informaessobreonavegadorecookies.OobjetoHttpResponsecontma
respostaqueenviadaparaocliente,incluindotodasassadasprocessadase
cookies.
Depoisquetodososobjetosprincipaisdoaplicativoforaminiciados,oaplicativo
iniciadocriandoumainstnciadaclasseHttpApplication.Seoaplicativopossuium
arquivoGlobal.asax,oASP.NETcriaumainstnciadaclasseGlobal.asaxque
derivadadaclasseHttpApplicationeusaaclassederivadapararepresentaro
aplicativo.
Observao:
NaprimeiravezqueumapginaASP.NETsolicitadoemumaplicativo,uma
novainstnciadoprocessoHttpApplicationcriado.Noentanto,paramaximizaro
desempenho,instnciasHttpApplicationpodemserreutilizadasparamltiplas
solicitaes.
QuandoumainstnciadeHttpApplicationcriada,qualquermduloconfigurado
tambmcriado.Porexemplo,seoaplicativoestconfiguradoparafazerisso,o
ASP.NETcriaummduloSessionStateModule.Afinaldecontasmdulos
configuradossocriados,aclasseHttpApplicationquandoomtodoInitfor
chamado.
Oseguintediagramailustraarelao:

http://online.unip.br/imprimir/imprimirconteudo

2/15

07/12/2014

online.unip.br/imprimir/imprimirconteudo

Um
objetoHttpApplication
atribudo
solicitao

OseventosaseguirsoexecutadospelaclasseHttpApplicationenquantoa
solicitaoserprocessada.Oseventossodeinteresseespecficoparaos
desenvolvedoresquequeiramestenderaclasseHttpApplication.
1. Validarasolicitao,examinaainformaoenviadaaonavegadore
determinaquandoelacontmmarcaespotencialmentemal
intencionadas.Paraobtermaisinformaes,consulteValidateRequeste
VisoGeraldeScriptsMaliciosos.
2. ExecutemapeamentodeURL,sealgumaURLfoiconfiguradanaseo
UrlMappingsSectiondoarquivoSeb.config.
3. AumentaroeventoBeginRequest.
4. AumentaroeventoAuthenticateRequest.
5. AumentaroeventoPostAuthenticateRequest.
6. AumentaroeventoAuthorizeRequest.
7. AumentaroeventoPostAuthorizeRequest.
8. AumentaroeventoResolveRequestCache.

http://online.unip.br/imprimir/imprimirconteudo

3/15

07/12/2014

online.unip.br/imprimir/imprimirconteudo

9. AumentaroeventoPostResolveRequestCache.
Asolicitao
processadapelo
pipeline
HttpApplication.

10. Baseiaaextensodenomedoarquivodorecursosolicitado(mapeadono
arquivodeconfiguraodoaplicativo),selecionarumaclasseque
implementaIHttpHandlerparaprocessarasolicitao.Seasolicitaofor
paraumobjeto(pgina)derivadosdeclassePageeapginaprecisaser
compilado,oASP.NETcompilaapginaantesdecriarumainstnciadele.
11. AumentaroeventoPostMapRequestHandler.
12. AumentaroeventoAcquireRequestState.
13. CrieoeventoPostAcquireRequestState.
14. CrieoeventoPreRequestHandlerExecute.
15. ChamaromtodoProcessRequest(ouoassncronoverso
BeginProcessRequest(HttpContext,AsyncCallback,Object))doapropriado
IHttpHandlerclasseparaoSolicitar.Porexemplo,seestsendosolicitada
umapgina,ainstnciadapginaatualmanipulaasolicitao.
16. AumentaroeventoPostRequestHandlerExecute.
17. AumentaroeventoReleaseRequestState.
18. AumentaroeventoPostReleaseRequestState.
19. RespostaafiltragemseexecutarapropriedadeFilter()()()estiverdefinida.
20. AumentaroeventoUpdateRequestCache.
21. AumentaroeventoPostUpdateRequestCache.
22. AumentaroeventoEndRequest.

CiclodeVidadeEventosedoarquivoGlobal.asax
Duranteociclodevidadoaplicativo,aaplicaocriaeventosquevocpodemanipularechamamtodos
particularesquevocpodesubstituir.Paramanipulareventosoumtodosdeaplicaes,vocpodecriar
umarquivochamadoGlobal.asaxnodiretrioraizdoseuaplicativo.
SevoccriarumarquivoGlobal.asax,ASP.NETocompilaemumaclassederivadodaclasse
HttpApplication,eentousaaclassederivadapararepresentaroaplicativo.
UmainstnciadeHttpApplicationprocessaapenasumasolicitaodecadavez.Issosimplificaa
manipulaodeeventosdoaplicativoporquevocnonecessitabloquearmembrosnoestticosna
classedoaplicativoquandovocoacessa.Issotepermitearmazenardadosespecficosdasolicitaoem
membrosnoestticosdaclassedoaplicativo.Porexemplo,vocpodedefinirumapropriedadenoarquivo
Global.asaxedesignareleumvalorespecficodesolicitao.
ASP.NETligaautomaticamenteeventosdeaplicaesmanipuladoresnoarquivoGlobal.asaxusandoa
convenodenomeApplication_event,comoApplication_BeginRequest.Issosimilarformaque
osmtodosdapginaASP.NETsoautomaticamenteligadoseventos,comooeventodapgina
Page_Load.Paraobterdetalhes,consulteVisoGeraldoCiclodeVidadaPginaASP.NET.
OsmtodosApplication_StarteApplication_Endsomtodosespeciaisquenorepresentameventos
HttpApplication.ASP.NEToschamaumaveznotempodevidadodomniodoaplicativo,noacada
instnciadeHttpApplication.
Atabelaseguintelistaalgunsdoseventosemtodosquesousadosduranteociclodevidada
aplicao.Existemmuitomaiseventosqueaqueleslistados,maselesnosocomumenteutilizados.
Eventosou
mtodos

Descrio

Chamadosquandooprimeirorecurso(comoapgina)daaplicaoASP.NET
http://online.unip.br/imprimir/imprimirconteudo

4/15

07/12/2014

online.unip.br/imprimir/imprimirconteudo

Application_Start

solicitado.OmtodoApplication_Startchamadoapenasumavezduranteo
ciclodevidadeumaaplicao.Vocpodeusaressemtodoparaexecutartarefas
deinicializaocomocarregamentodedadosparaocacheeinicializaodevalores
estticos.
Vocdeveapenasdefinirdadosestticosduranteoinciodaaplicao.Nodefina
nenhumainstnciadedadosporqueelaestdisponvelapenasprimeirainstncia
daclasseHttpApplicationquecriada.
Criadonomomentoapropriadodociclodevidadaaplicao,comolistadona
tabeladociclodevidadaaplicao,previamentenessetpico.
Application_Errorpodesercriadaemqualquerfasedociclodovidadaaplicao.

Application_event

Application_EndRequestonicoeventoquegarantidoquesercriadoem
todasolicitao,porqueumasolicitaopodesercurtocircuitada.Porexemplo,se
doismdulosmanipulamoeventoApplication_BeginRequesteoprimeiro
encontraumaexceo,oeventoApplication_BeginRequestnoserchamado
paraosegundomdulo.Noentanto,omtodoApplication_EndRequest
semprechamadoparapermitiroaplicativolimparosrecursos.

[HttpApplication.Init]

ChamadoumavezparacadainstnciadaclasseHttpApplicationdepoisquetodos
osmdulostiveremsidocriados.

Dispose

Chamadoantesqueainstnciadaaplicaosejadestruda.Vocpodeusaresse
mtodoparaliberarmanualmentequalquerrecursonogerenciado.Paraobter
maisinformaes,consulteLimpandorecursosnogerenciados.

Application_End

Chamadoumavezpelotempodevidadoaplicativoantesdesseserdescarregado.

CicloeVidadeCompilao
Quandoaprimeirasolicitaofeitaaoaplicativo,ASP.NETcompilaositensdoaplicativoemumaorem
especfica.Oprimeiroitemasercompiladosoositensreferentesaonveisaltos.Apsaprimeira
solicitao,oitensdealtonvelsorecompiladoapenasseumadependnciamuda.Aseguintetabela
descreveaordemnaqualositensdealtonveldoASP.NETsocompilados.
Item

Descrio

App_GlobalResources

Osrecursosglobaisdoaplicativosocompiladoseumpontodemontagemde
recursoscriado.QualquermontagemnapastaBindoaplicativoligadaao
recursodemontagem.

App_WebResources

TiposdeproxyparaserviosWebsocriadosecompilados.Amontagem
resultantederefernciasWebligadaaorecursodemontagemseeleexistir.

Propriedadesdeperfil
sodefinidasno
arquivoWeb.config

SepropriedadesdeperfilsodefinidasnoarquivoWeb.configdoaplicativo,uma
montagemquecontmumobjetodeperfilgerada.

App_Code

Arquivosdecdigofontesocompiladoseumoumaisassembliesso
criados.Todasasmontagensdecdigoeperfildemontagemsoligadosaos
recursosemontagensderefernciasWebseexistir.

OarquivoGlobal.asax

Oobjetodaaplicaocompiladoeligadotodasasmontagensgeradas
previamente.

http://online.unip.br/imprimir/imprimirconteudo

5/15

07/12/2014

online.unip.br/imprimir/imprimirconteudo

Umavezpartesuperiordooaplicativonvelitenstiveremsidocompilado,pastascompilaesASP.NET,
pginaseoutrositensquandonecessrio.AseguintetabeladescreveaoremnaqualaspastasASP.NETe
itenssocompilados.
Item

Descrio

App_LocalResources

Seapastacontendooitemsolicitadocontmumapasta
App_LocalResources,ocontedodapastarecursoslocais
socompiladoseligadosmontagemdosrecursos
globais.

PginasWebindividuais(arquivos.aspx),
controledeusurios(arquivos.ascx),
manipuladorHTTP(arquivos.ashx),emdulo
HTTP(arquivos.asmx)

Compiladosquandonecessrioseligadosaosrecursosde
montagemlocalemontagemdenvelalto.

Temas,pginasmestra,eoutrosarquivode
origem.

Arquivodecapaparatemasindividuais,pginasmestra,
eoutrasarquivosdecdigofontereferenciadospor
pginassocompiladosquandoapginaqueoreferencia
compilada.

Montagenscompiladassocacheadasnoservidorereusadasnassolicitaessubseqenteseso
preservadasaosereiniciaroaplicativo,enquantoocdigofontenoformudado.
Devidoaofatodoaplicativosercompiladonaprimeirasolicitao,asolicitaoinicialumaplicativopode
sersignificativamentemaisdemoradaqueasseguintes.Vocpodeprcompilarseuaplicativoparareduzir
otemponecessrioparaaprimeirasolicitao.Paraobtermaisinformaes,consulteComo:
PrecompileASP.NETsitesdaWeb.

ReiniciaroAplicativo
ModificaesnocdigofontedeseuaplicativoWebfarocomqueoASP.NETrecompileosarquivosfontes
emmontagens.Quandovocmodificaositensdealtonvelnoseuaplicativo,todasasoutrasmontagens
noseuaplicativoquereferenciamasmontagensdealtonvelsorecompiladastambm.
Comoresultado,modificar,adicionar,oudeletarcertostiposdearquivosdedentrodapastadoaplicativo
farcomqueessereinicie.Asseguinteaesfarooaplicativoreiniciar:
Adicionando,modificandooudeletandomontagensdapastaBindoaplicativo.
Adicionando,modificando,oudeletandorecursosdelocalizaodaspastasApp_GlobalResourcesou
App_LocalResources.
Adicionando,modificando,oudeletandooarquivoGlobal.asaxdoaplicativo.
Adicionando,modificando,oudeletandoarquivosdecdigofontedodiretrioApp_Code.
Adicionando,modificando,oudeletandoconfiguraesdeperfil.
Adicionando,modificando,oudeletandorefernciasdeserviosWebnodiretrio
App_WebReferences.
Adicionando,modificando,oudeletandooarquivoGlobal.asaxdoaplicativo.
Quandoareinicializaodeumaplicativonecessria,ASP.NETservirtodasassolicitaespendentes
dosdomniosexistentesdoaplicativoeasmontagensantigasantesdereiniciarodomniodoaplicativoe
carregarasnovasmontagens.
MdulosHTTP
OciclodevidadeumaplicativoASP.NETextensvelatravsdaclasseIHttpModule.ASP.NETinclui
http://online.unip.br/imprimir/imprimirconteudo

6/15

07/12/2014

online.unip.br/imprimir/imprimirconteudo

algumasclassesqueimplementamIHttpModule,comoaclasseSessionStateModule.Voctambmpode
criarsuaprpriaclassequeimplementaIHttpModule.
Sevocadicionamdulosaoseuaplicativo,essesmdulosporsispodemcriareventos.Oaplicativopode
inscreversenesseseventosnoarquivoGlobal.asaxutilizandoaconvenonomedomdulo_nomedo
evento.Porexemplo,paramanipularoeventoAuthenticatecriadoporumobjeto
FormsAuthenticationModule,vocpodecriarummanipuladorchamado
FormsAuthentication_Authenticate.
AclasseSessionStateModulehabilitadoPorpadroemASP.NET.TudoEventossessoso
AutomaticTudoyconectadoporfiobackupcomoSession_event,suchasSession_Start.OeventoStart
criadocadavezqueumanovaseocriada.Paraobtermaisinformaes,consulteOverviewEstado
Sesso.

VisoGeraldoCiclodeVidadaPginaASP.NET
QuandoumapginaASP.NETexecutada,apginapassaporumciclodevidanoqualelaexecutauma
sriedeetapasdeprocessamento.Elasinclueminicializao,criaodeintanciasdecontroles,restaurao
emanutenodeestado,execuooseventosdapgina,processamentodecdigoerenderizaode
controles.importanteentenderociclodevidadapginaparaquevocpossaescreverocdigono
estgiodociclodevidaapropriadoparaoefeitoquepretende.Almdisso,sevocdesenvolvercontroles
personalizados,vocdeveestarfamiliarizadocomociclodevidadapginaparainicializarcorretamenteos
controles,preencherpropriedadesdecontrolecomexibiodedadosdeestadoeexecutarqualquerlgica
decomportamentodocontrole.(Ociclodevidadeumcontrolebaseadonociclodevidadapgina,mas
apginaaumentamaiseventosparaumcontrolequeestdisponvelparaumanicapginaASP.NET.)
EtapasdoCiclodeVidadePginaGeral
Emtermosgerais,apginaatravessaosestgiosdescritosnatabelaaseguir.Almdisso,paraosestgios
dociclodevidadapgina,hestgiosdeaplicativoqueocorremanteseapsumasolicitao,masno
soespecficasparaumapgina.Paraobtermaisinformaes,consulteVisogeralsobredociclode
vidadoaplicativoASP.NET.
Estgio

Descrio

Solicitao
depgina

Asolicitaodepginaocorreantesqueociclodevidadapginacomece.Quandoapgina
solicitadaporumusurio,ASP.NETdeterminaseapginaprecisaseranalisadae
compilada(portanto,comeandoavidadeumapgina)ouseumaversoemcacheda
pginapodeserenviadaemrespostasemexecutarapgina.

Iniciar

Naetapainicial,aspropriedadesdapgina,comoRequesteResponsesodefinidas.Nesse
estgio,apginatambmdeterminaseorequestumpostbackouumnovorequeste
defineapropriedadeIsPostBack.Almdisso,duranteaetapainicial,apropriedade
UICulturedapginadefinida.

Duranteainicializaodepgina,oscontrolesdamesmaestodisponveisedefinidaa
Inicializao propriedadeUniqueIDdecadaumdeles.Ostemastambmsoaplicadosparaapgina.Se
dapgina
asolicitaoatualforumpostback,osdadosPostBackaindanoforamcarregadose
valoresdapropriedadedocontrolenoforamrestauradoscomosvaloresdoViewState.

Carga

Duranteocarregamento,seasolicitaoatualumpostback,aspropriedadesdecontrole
serocarregadascominformaesrecuperadasdoViewStateedoControlState.

Validao

Duranteavalidao,omtodoValidatedetodososcontrolesdevalidaosochamados,
estedefineapropriedadeIsValiddecadaumdoscontrolesvalidadoresdapgina.

Tratamento
deevento
Seasolicitaoforumapostback,quaisquermanipuladoresdeeventossochamados.
PostBack
http://online.unip.br/imprimir/imprimirconteudo

7/15

07/12/2014

online.unip.br/imprimir/imprimirconteudo

Antesdarenderizao,oviewstatesalvoparaapginaetodososcontroles.Durantea
fasederenderizao,apginachamaromtodoRenderparacadacontrole,fornecendo
Renderizao
umescritordetextoquegravaasadaparaoOutputStream()dapropriedadeResponseda
pgina.
Unloadchamadoquandoapginativersidoprocessada,enviadaparaoclienteeest
Descarregar prontaparaserdescartada.Nesteponto,aspropriedadesdapgina,comoResponsee
Requestsodescarregadosetodalimpezaserexecutada.
EventosdoCiclodeVida
Emcadaetapadociclodevidadeumapgina,apginaadicionaeventosquevocpodemanipularpara
executarseuprpriocdigo.Paraeventosdecontrole,vocassociaomanipuladordeeventosaoevento,
ouexplicitamenteusandoatributoscomoonclick,ounocdigo.
Pginastambmsuportameventoswireupautomticos,significandoqueASP.NETprocurapelos
mtodoscomnomesparticulareseexecutaautomaticamenteessesmtodosquandodeterminados
eventossochamados.SeoatributoAutoEventWireupdadiretiva@Pagedefinidocomoverdadeiro(ou
seelenoestiverdefinido,porpadroeleverdadeiro),oseventosdapginaautomaticamente
soassociadosaosmtodosqueusamaconvenodenomenclaturadePage_Event,comoPage_Loade
Page_Init.Paraobtermaisinformaessobreeventoautomticowireup,consulteModelodeEventosde
ControledoServidorWebASP.NET.
Atabelaaseguirlistaoseventosdociclodevidadeumapginaquevocusarcommaisfreqncia.H
maiseventosqueesseslistadosnoentanto,elesnosousadosparaamaioriadoscenriosde
transformaodepgina.Emvezdisso,principalmentesousadospeloscontrolesdoservidornapgina
daWebdoASP.NETparaseinicializareprocessar.Sevocdesejagravarseusprprioscontrolesde
servidorASP.NET,vocprecisarentendermaissobreessasetapas.Paraobterinformaessobrecomo
criarcontrolespersonalizados,consulteDesenvolvendoControlesPersonalizadosASP.NETServer.
EventoPage

Usotpico
Useesteeventoparaoseguinte:
VerifiqueapropriedadeIsPostBackparadeterminarseestaaprimeiraveza
pginaestsendoprocessada.
Crieourecriecontrolesdinmicos.
Definaumapginamestradinamicamente.

PreInit

DefinaapropriedadeThemedinamicamente.
Leiaoudefinavaloresdepropriedadesdeperfil.
Observao:
Seasolicitaoforumanovapostagem,osvaloresdecontrolesaindano
terosidorestauradosdoestadodeexibio.Sevocdefinirumapropriedade
decontrolenestaetapa,seuvalorpodesersobrescritonoprximoestgio.

Init

Geradodepoisquetodososcontrolesforeminicializadosequaisquerconfiguraes
decapaforemaplicadas.UseesteeventoparalerouInicializarpropriedadesde
controle.

InitComplete

GeradopeloobjetoPage.Useesteeventoparaprocessartarefasqueexijamque
todasasinicializaessejamconcludas.
Useesteeventosevocprecisarexecutaroprocessamentoemsuapginaou
controleantesdoeventoLoad.

http://online.unip.br/imprimir/imprimirconteudo

8/15

07/12/2014

PreLoad

Load

online.unip.br/imprimir/imprimirconteudo

DepoisqueoPagegeraesseevento,elecarregaoestadodeexibioparasimesmo
etodososcontrolese,emseguida,processaquaisquerdadospostbackincludoscom
ainstnciaRequest.

OPagechamaomtodoOnLoaddoeventoemPage,ento,recursivamentefazo
mesmoparacadacontrolefilho,quefazomesmoparacadaumdosseuscontroles
filhosatqueapginaetodososcontrolessejamcarregados.
UseomtododeeventoOnLoadparadefinirpropriedadesdecontroleseestabelecer
conexesdebancodedados.
Useesseseventosparamanipulareventosdecontroleespecficos,comoum
controleButtondoeventoClickouumcontroleTextBoxdoeventoTextChanged.

Eventosde
Controle

LoadComplete

Observao:
Emumasolicitaopostback,seapginacontmcontrolesdevalidao,verifiquea
propriedadeIsValiddoPageedoscontrolesdevalidaoindividuaisantesdeexecutar
qualquerprocessamento.
Useesteeventoparatarefasqueexigemquetodososoutroscontrolesnapgina
sejamcarregado.
Antesqueesseeventoocorra:
AschamadasEnsureChildControlsdoobjetoPageparacadacontroleeparaa
pgina.

PreRender

CadacontroledeligaodedadoscujapropriedadeDataSourceIDest
definidachamaomtodoDataBind.ParaMaisInformaes,consulteeventos
devinculaodeDadosdosparacontrolesligadosaDadosdosabaixo.
OeventoPreRenderocorreparacadacontrolenapgina.Useoeventoparafazer
alteraesfinaisnoscontedosdapginaouseuscontroles.

SaveStateComplete

Antesqueesseeventoocorra,ViewStatefoisalvoparaapginaeparatodosos
controles.Alteraesparaapginaoucontrolesnessemomentoseroignoradas.
Useesteeventoparaexecutartarefasqueexijamestadodeexibioasersalvo,
masquenofaaquaisqueralteraesaoscontroles.
Estenoumeventoemvezdisso,nesseestgiodoprocessamento,oobjeto
Pagechamaessemtodoemcadacontrole.TodososcontrolesdeservidorWebdo
ASP.NETtemummtodoRenderquegravaamarcaodocontrolequeenviada
aonavegador.

Render

Sevoccriarumcontrolepersonalizado,vocnormalmentesubstituiessemtodo
paradarcomosadaamarcaodocontrole.Noentanto,seseucontrole
personalizadoincorporasomentecontrolesdeservidorWebdoASP.NETpadroe
nenhumamarcaopersonalizada,vocnoprecisasubstituiromtodo
Render.Paraobtermaisinformaes,consulteDesenvolvendoControles
PersonalizadosASP.NETServer.
Umcontroledeusurio(umarquivo.ascx)incorporaautomaticamente
processamento,portanto,vocnoprecisaprocessarexplicitamenteocontroleno
cdigo.
Esseeventoocorreparacadacontrolee,emseguida,paraapgina.Emcontroles,
useesteeventoparafazeralimpezafinalparacontrolesespecficos,comofechar
conexesdebancodedadosdecontroleespecfico.
Paraaprpriapgina,useesteeventoparafazerumtrabalhodelimpezafinal,como

http://online.unip.br/imprimir/imprimirconteudo

9/15

07/12/2014

Unload

online.unip.br/imprimir/imprimirconteudo

fechararquivosabertoseconexesdebancodedados,ouconcluirlogououtras
tarefasdesolicitaoespecfica.
Observao:
Duranteoestgiodeunload,apginaeseuscontrolesforamprocessados,paraque
vocnopossafazeralteraesadicionaisparaofluxoderesposta.Sevoctentar
chamarummtodo,comoomtodoResponse.Write,serjogadaumaexceo.

ConsideraesAdicionaisSobreoCiclodeVidadePgina
ControlesdeservidorASP.NETindividualtemseuprpriociclodevidaquesemelhanteaociclodevida
dapgina.Porexemplo,umeventoInitcontroleeLoaddocontroleocorremduranteoseventosdapgina
correspondente.
EmboraosdoisIniteLoadocorremrecursivamenteemcadacontrole,elesocorremnoordeminversa.O
eventoInit(etambmoeventoUnload)paracadacontrolefilhoocorreantesqueoevento
correspondentesejageradoparaseucontainer(debaixoparacima).Noentanto,oeventoLoadparaum
containerocorreantesdoseventosLoadparaseuscontrolesfilho(decimaparabaixo).
Vocpodepersonalizaraaparnciaoucontedodeumcontroleaomanipularoseventosparaocontrole,
comooeventoClickparaocontroleButtoneoeventoSelectedIndexChangedparaocontroleListBox.Em
algumascircunstncias,voctambmpodetratarumeventoDataBindingouDataBounddocontrole.Para
obtermaisinformaes,consulteostpicosderefernciadeclasseparacontrolesindividuaise
DesenvolvendoControlesPersonalizadosASP.NETServer.
AoherdarumaclassedaclassePage,almdemanipulareventosgeradospelapgina,vocpode
substituirmtodosdapginadaclassebase.Porexemplo,vocpodesubstituiromtodoInitializeCulture
dapginaparadefinirinformaesdeculturadinamicamente.Observequeaocriarummanipuladorde
eventosusandoasintaxePage_event,aimplementaodabaseimplicitamentechamadae,portanto,
vocnoprecisachamlaemseumtodo.Porexemplo,omtodoOnLoaddaclassedapginabase
semprechamado,quervoccrieummtodoPage_Loadouno.Noentanto,sevocsubstituiro
mtodoOnLoaddapginacomapalavrachaveoverride(OverridesnoVisualBasic),vocdevechamar
omtodobaseexplicitamente.Porexemplo,sevocsubstituiromtodoOnLoadnapgina,vocdeve
chamarbase.Load(MyBase.LoadnoVisualBasic)emordemparaaimplementaobaseaser
executada.

AjustedeEventosparaControlesAdicionados
Seoscontrolessocriadosdinamicamenteemtempodeexecuoousocriadosdeclarativamentenos
modelosdecontrolesdeligaodedados,seuseventosinicialmentenososincronizadoscomasde
outroscontrolesnapgina.Porexemplo,paraumcontrolequeadicionadoemtempodeexecuo,os
eventosIniteLoadpodemocorrermuitomaistardenociclodevidadapginaqueosmesmoseventos
paracontrolescriadosdeclarativamente.Portanto,apartirdomomentoqueelessoinstanciados,
controlesadicionadosdinamicamenteecontrolesemmodelosgeramseuseventosumapsooutroat
queelessejamdetectadoparaoeventoduranteoqualelefoiadicionadocoleoControls.
Emgeral,vocnoprecisarsepreocuparcomisso,amenosquevoctenhaaninhadocontrolesde
ligaodedados.Seumcontrolefilhofoivinculadoadados,masseucontroledecontaineraindano
tenhasidovinculadoadados,osdadosnocontrolefilhoeosdadosnoseucontroledecontainerpodem
estarforadesincronia.Issoverdadeiroespecialmenteseosdadosnoscontrolefilhorealizam
processamentocombaseemumvalorligadoadadosnocontroledecontainer.
Porexemplo,suponhaquevoctenhaumGridViewqueexibeumregistrodaempresaemcadalinha
juntamentecomumalistadosgerentesdaempresaemumcontroleListBox.Parapreencheralistade
gerentes,vocdevevincularocontroleListBoxaumcontroledafontededados(talcomo
SqlDataSource)querecuperaosdadosdoescritriodaempresausandooCompanyIDemumaconsulta.
SeaspropriedadesdeligaodedadosdocontroleListBox,comoDataSourceIDeDataMember,estiverem
definidasdeclarativamente,ocontroleListBoxtentarvincularasuafontededadosduranteoevento
DataBindingdelinhaquecontm.Noentanto,ocampoCompanyIDdalinhanocontmumvalorat
queoeventoRowDataBounddocontroleGridViewocorra.Nessecaso,acontrolefilho(ocontroleListBox)
vinculadoantesqueocontrolequecontm(ocontroleGridView)estejavinculado,paraqueseus
estgiosdeligaodedadosfiquemforadesincronia.
Paraevitaressacondio,coloqueocontroledafontededadosparaocontroleListBoxnomesmoitemde
modelocomoocontroleListBoxpropriamenteditoenodefinaaspropriedadesdeligaodedadosde
ListBoxdeclarativamente.Emvezdisso,definaospormeiodeprogramaoemtempodeexecuo
http://online.unip.br/imprimir/imprimirconteudo

10/15

07/12/2014

online.unip.br/imprimir/imprimirconteudo

duranteoeventoRowDataBound,paraqueocontroleListBoxnovinculeseusdadosatqueas
informaesdeCompanyIDestejamdisponveis.
Paraobtermaisinformaes,consulteLigaoadadosusandoocontroledefontededados.
EventosdeVinculaodeDadosparaControlesdeDadosVinculados
Paraajudarvocaentenderarelaoentreociclodevidadapginaeoseventosdevinculaodedados,
atabelaaseguirlistaeventosrelacionadosadadosemcontrolesligadosadados,comooscontrole
GridView,DetailsVieweFormView.
EventodeControle

Usotpico
Esseeventogeradopeloscontrolesligadosadadosantesdoevento
PreRenderdocontrolequecontm(oudoobjetoPage)emarcaoincio
dovnculodocontroleaosdados.

DataBinding

Useesteeventoparaabrirconexesdebancodedadosmanualmente,
senecessrio.(Oscontrolesdefontededadosgeralmentetornamesse
procedimentodesnecessrio.)

RowCreated(GridViewOnly)or
ItemCreated(DataList,
DetailsView,SiteMapPath,
DataGrid,FormView,and
ControlesRepeater)

Useesteeventoparamanipularocontedoquenodependentena
vinculaodedados.Porexemplo,emtempodeexecuo,vocpode
programaticamenteadicionarformataoaumalinhadecabealjhoou
rodapemumcontroleGridView.

RowDataBound(GridViewOnly)
orItemDataBound(DataList,
SiteMapPath,DataGrid,and
ControlesRepeater)

Quandoesseeventoocorrer,dadosestodisponveisnalinhaouitem,
paraquevocpossaformatardadosoudefinirapropriedade
FilterExpressionemcontrolesfilhosdefontededadosparaexibirdados
relacionadosdentrodoitemoudalinha.
Esseeventomarcaofinaldasoperaesdevinculaodedadosemum
controledevinculaodedados.EmumcontroleGridView,avinculao
dedadosconcludaparatodasaslinhasequaisquercontrolesfilhos.
Useesteeventoparaformatarocontedodosdadosvinculadosou
iniciarvinculaodedadosemoutroscontrolesquedependemdos
valoresdecontedodocontroleatual.(Paraobterdetalhes,consulte
"AjustedeEventosparaControlesAdicionados",anteriormenteneste
tpico.)

DataBound

EventosdeControledeLogin
OcontroleLoginpodeusarasconfiguraesnoarquivoWeb.configparagerenciarautenticaode
membrosautomaticamente.Noentanto,seseuaplicativoexigirquevocpersonalizeofuncionamentodo
controle,ousevocdesejacompreendercomoLogincontrolaeventosqueserelacionamaociclodevida
dapgina,vocpodeusaroseventoslistadosnatabelaaseguir.
Eventode
Controle

LoggingIn

Usotpico

Esteeventogeradoduranteumapostback,depoisqueoeventoLoadCompletedapgina
ocorreu.Elemarcaoinciodoprocessodelogin.
Useesteeventoparatarefasquedevemocorrerantesdecomearoprocessode
autenticao.

http://online.unip.br/imprimir/imprimirconteudo

11/15

07/12/2014

online.unip.br/imprimir/imprimirconteudo

EsteeventogeradoapsoeventoLoggingIn.
Authenticate

Useesteeventoparasubstituirouaumentarocomportamentopadrodeautenticaode
umcontroleLogin.

Esteeventogeradodepoisqueonomedeusurioeasenhatenhamsidoautenticados.
LoggedIn

Useesteeventopararedirecionarparaoutrapginaouparadefinirdinamicamenteotexto
nocontrole.Esseeventonoocorresehouverumerroouseaautenticaofalhar.
Esteeventogeradoseaautenticaonotivertidoxito.

LoginError

Useesteeventoparadefinirotextonocontrolequeexplicaoproblemaouparadirecionar
ousurioaumapginadiferente.

VisogeraldaCompilaodoASP.NET
Paraqueocdigodoaplicativoatendaassolicitaesdosusurios,oASP.NETdeveprimeirocompilaro
cdigoemumoumaisconjuntosdemdulos(assemblies).ConjuntosdeMdulos(Assemblies)so
arquivosquepossuemaextensodenomedearquivo.dll.VocpodeescrevercdigodoASP.NETem
vriaslinguagensdiferentes,comoVisualBasic,C#,J#entreoutras.Quandoocdigocompilado,
traduzidoparaumarepresentaoindependentedeliguagemedeCPUchamadaLinguagem
IntermediriadaMicrosoft(MSILMicrosoftIntermediateLanguage).Emtempodeexecuo,MSILroda
nocontextodoFramework.NET,quetraduzparainstruesespecficasdeCPUdoprocessadodo
computadorqueestrodandoaaplicao.
Hmuitosbenefciosemcompilarocdigodoaplicativo,incluindo:
DesempenhoCdigocompiladomuitomaisrpidoquelinguagensdescriptcomoVBScriptou
ECMAScript,porqueumarepresentaomaisprximadocdigodemquinaenorequeranlise
adicional.
SeguranaCdigocompiladomaisdifcildereverteraengenhariaquecdigofonteno
compiladoporqueelenopossuialegibilidadeeabstraodeumalinguagemdealtonvel.Alm
disso,existemferramentasdeobscurecimentoquetornamocdigocompiladoaindamais
resistenteengenhariareversa.
EstabilidadeOcdigoverificadoemtempodecompilaoparaerrosdesintaxe,seguranade
tiposeoutrosproblemas.Encontrandoesseserrosemtempodecompilao,vocpodeeliminar
esseseoutroserrosnoseucdigo.
InteroperabilidadeComoocdigoMSILsuportaqualquerlinguagem.NET,vocpodeusar
conjuntosdemdulos(assemblies)queforamoriginalmenteescritosemoutraslinguagensnoseu
cdigo.Porexemplo,sevocestiverescrevendoumapginaWebdoASP.NETemC#,vocpode
adicionarumarefernciaaumarquivo.dllquefoiescritoemVisualBasic.
AarquiteturadacompilaodoASP.NETpossuiumasriederecursos,incluindo:
Suporteavriaslinguagens.
Compilaoautomtica.
Implantaoflexvel.
Sistemaextensveldecompilao.
Asseguintesseesdescrevemcadaumdessesrecursos.
MultipleLanguageSupport
NoASP.NET2.0,vocpodeusardiferenteslinguagens,comoVisualBasiceC#nomesmoaplicativo
porqueoASP.NETircriarvriosconjuntosdemdulos(assemblies),umparacadaidioma.Paraocdigo
armazenadonapastaApp_Code,vocpodeespecificarumasubpastaparacadalinguagem.Paraobter
maisinformaessobreapastaApp_Code,consultePastasdecdigocompartilhadoemsitesdaWeb
ASP.NET.
http://online.unip.br/imprimir/imprimirconteudo

12/15

07/12/2014

online.unip.br/imprimir/imprimirconteudo

CompilaoAutomtica.
OASP.NETautomaticamentecompilaocdigodoseuaplicativoequaisquerrecursosdependentesna
primeiravezqueumusuriosolicitarumrecursodosite.Emgeral,oASP.NETcriaumconjuntode
mdulos(assembly)paracadadiretriodoaplicativo(comoApp_Code)eoutroparaapastaprincipal.(Se
arquivosemumdiretrioestiverememdiferenteslinguagensdeprogramao,entoassemblies
separadosserocriadosparacadalinguagem.)Vocpodeespecificarquaispastasserocompiladasem
nicoconjuntodemdulos(assembly)naseoCompilationdoarquivoWeb.config.
Implantaoflexvel.
ComooASP.NETcompilaoseusitedaWebnaprimeirasolicitaodousurio,vocpodesimplesmente
copiarocdigofontedoseuaplicativoparaoservidorWebdeproduo.Noentanto,oASP.NETtambm
forneceopesdeprcompilaoquepermitemquevoccompileoseusitedaWebantesqueeletenha
sidoimplantado,oucompileoapstersidoimplantadomasantesdeumusuriosolicitlo.Apr
compilaoapresentadiversasvantagens.Elapodemelhorarodesempenhodoseusitenaprimeira
solicitaoporquenohavernenhumtempodelatnciaenquantooASP.NETcompilaosite.Prcompilar
tambmpodeajudarvocalocalizarerrosque,casocontrrio,podemserencontradossomentequando
umusuriosolicitaumapgina.Finalmente,sevocprcompilarositeantesdeimplantlo,vocpode
implantarosconjuntosdemdulos(assemblies)aoinvsdocdigofonte.
VocpodeprcompilarumsitedaWebusandoaferramentadocompiladordoASP.NET
(ASPNET_Compiler.exe).Aferramentaqueforneceasseguintesopesdeprcompilao:
CompilaonolocalEssaopoexecutaamesmacompilaoqueocorreduranteacompilao
dinmica.UseestaopoparacompilarumsitedaWebquejtenhasidoimplantadoparaum
servidordeproduo.
PrcompilaocompletanoatualizvelUseestaparacompilarumaplicativoe,emseguida,
copiarasadacompiladaparaoservidordeproduo.Todosocdigodoaplicativo,damarcaoeda
interfacedousuriocompiladoemconjuntosdemdulos(assemblies).Arquivosdeespao
reservado,comopginas.aspxaindaexistemparaquevocpossarealizartarefasdearquivos
especficos,comoconfigurarpermisses,masosarquivosnocontmnenhumcdigo
atualizvel.Parapoderatualizarqualquerpginaouqualquercdigo,vocdeveprcompilarosite
novamenteeimplantlonovamente.
PrcompilaoAtualizvelEstaassemelhaseprcompilaocompletanoatualizvel,
excetoqueelementosdeinterfacedousurio,comopginas.aspxecontroles.ascxretmtodasas
suasmarcaes,cdigodeinterfacedousurioecdigoembutido,sehouver.Vocpodeatualizar
cdigonoarquivoapseletersidoimplantadooASP.NETdetectarmudanasnoarquivoeir
recompillo.Observequeocdigoemumarquivocodebehind(arquivo.vbou.cs)compiladoem
assembliesduranteaprcompilao,evoc,portanto,nopodealterlosempassarpelasetapas
deprcompilaoeimplantaonovamente.
Paraobtermaisinformaes,consulteVisogeraldaPrcompilaodoSitedaWebASP.NET.
SistemadeCompilaoExtensvel
OASP.NETusaclassesBuildProviderparacompilaritenscomopginas.aspx,arquivos.ascxerecursos
globais.VocpodeestenderepersonalizarosistemadecompilaodoASP.NETparacompilarrecursos
personalizados,criandoclassesqueherdamdaclasseBuildProvider.Porexemplo,vocpodeadicionarum
novotipodearquivoe,emseguida,escreverumBuildProviderquecriaessetipoespecfico.

Exerccio1:
DentrodoASP.NET,vriosprocessosquedevemocorrerparaumaplicativoserinicializadoesolicitaes
deprocessos.Adicionalmente,ASP.NETapenasumapeadaarquiteturadoservidorWebqueserveas
solicitaesfeitaspelosnavegadores.importanteentenderociclodevidadapginaparaquevoc
possaescreverocdigonoestgiodociclodevidaapropriadoparaoefeitoquepretende.Quaissoas
partesdociclodevidadeumaplicativoASP.NET?
http://online.unip.br/imprimir/imprimirconteudo

13/15

07/12/2014

online.unip.br/imprimir/imprimirconteudo

AUsuriossolicitamumrecursodoaplicativodoservidorWebASP.NETrecebeaprimeirasolicitao
paraoaplicativoObjetosprincipaisdoASP.NETsocriadosparacadasolicitaoUmobjeto
HttpApplicationatribudosolicitaoAsolicitaoprocessadapelopipelineHttpApplication.
BASP.NETrecebeaprimeirasolicitaoparaoaplicativoObjetosprincipaisdoASP.NETsocriados
paracadasolicitaoUmobjetoHttpApplicationatribudosolicitaoAsolicitaoprocessadapelo
pipelineHttpApplication.
CUsuriossolicitamumrecursodoaplicativodoservidorWebASP.NETrecebeaprimeirasolicitao
paraoaplicativoObjetosprincipaisdoASP.NETsocriadosparacadasolicitaoAsolicitao
processadapelopipelineHttpApplication.
DUsuriossolicitamumrecursodoaplicativodoservidorWebASP.NETrecebeaprimeirasolicitao
paraoaplicativoUmobjetoHttpApplicationatribudosolicitaoAsolicitaoprocessadapelo
pipelineHttpApplication.
ENenhumadasalternativasanteriores

Oalunorespondeueacertou.Alternativa(A)
Comentrios:
Axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Exerccio2:

OCiclodeVidadeumaaplicaoWEBASP.NETfundamentalparaobom
funcionamentodasaplicaesWEB.Quaissoasformasdereiniciardeformamanual
umciclodevidadepginasASP.NET
AUtilizaromtodoRestartLifeCicle()daplataforma.NET
BModificaroarquivoWeb.Config
CReinstalaroASP.NETdamquinadoClient
DUtilizandooobjetoGAC
ENenhumadasAlternativas

Oalunorespondeueacertou.Alternativa(B)
Comentrios:
Bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Exerccio3:
Depoisquetodososobjetosprincipaisdoaplicativoforaminiciados,oaplicativoiniciadocriandouma
instnciadaclasseHttpApplication.NaprimeiravezqueumapginaASP.NETsolicitadoemum
aplicativo,umanovainstnciadoprocessoHttpApplicationcriado.Noentanto,paramaximizaro
desempenho,instnciasHttpApplicationpodemserreutilizadasparamltiplassolicitaes.
Qualclassecriadaparadarcontinuidadeaociclodevidadapginaqueserderivadade
HTTPApplication?
AWeb.Config
BGlobal.asax
C.NETFramework
DHTTPContext
EApplicationManager

Oalunorespondeueacertou.Alternativa(B)
Comentrios:
Cxxxxxxxxxxxxxxxxxxxxxxxxxxx
Dxxxxxxxxxxxxxxxxxxxxxxxxxxx
http://online.unip.br/imprimir/imprimirconteudo

14/15

07/12/2014

online.unip.br/imprimir/imprimirconteudo

Exxxxxxxxxxxxxxxxxxxxxxxxxxx
Exxxxxxxxxxxxxxxxxxxxxxxxxxx
Bxxxxxxxxxxxxxxxxxxxxxxxxxxx
Exerccio4:
Quandoaprimeirasolicitaofeitaaoaplicativo,ASP.NETcompilaositensdoaplicativoemumaorem
especfica.Oprimeiroitemasercompiladosoositensreferentesaonveisaltos.Apsaprimeira
solicitao,ositensdealtonvelsorecompiladosapenasseumadependnciamuda.
QualaalternativacorretaemrelaoapastaApp_Code?
AOsrecursosglobaisdoaplicativosocompiladoseumpontodemontagemderecursoscriado
BTiposdeproxyparaserviosWebsocriadosecompilados
COobjetodaaplicaocompiladoeligadotodasasmontagensgeradaspreviamente
DSepropriedadesdeperfilsodefinidasnoarquivoWeb.configdoaplicativo,umamontagemque
contmumobjetodeperfilgerada
EArquivosdecdigofontesocompiladoseumoumaisassembliessocriados

Oalunorespondeueacertou.Alternativa(E)
Comentrios:
Bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

http://online.unip.br/imprimir/imprimirconteudo

15/15