Professional Documents
Culture Documents
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