




已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
外文翻譯城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)學(xué)生姓名指導(dǎo)教師副教授合作指導(dǎo)教師專業(yè)名稱計(jì)算機(jī)科學(xué)與技術(shù)所在學(xué)院水產(chǎn)學(xué)院2009年6月1原文摘自LVARJACOBSONOBJECTORIENTEDSOFTWAREENGINEERING第1版北京人民郵電出版社,200510外文資料原文ASPNETPAGEOBJECTMODELSUMMARYLEARNABOUTTHEEVENTINGMODELBUILTAROUNDASPNETWEBPAGESANDTHEVARIOUSSTAGESTHATAWEBPAGEEXPERIENCESONITSWAYTOHTMLTHEASPNETHTTPRUNTIMEGOVERNSTHEPIPELINEOFOBJECTSTHATTRANSFORMTHEREQUESTEDURLINTOALIVINGINSTANCEOFAPAGECLASSFIRST,ANDINTOPLAINHTMLTEXTNEXTDISCOVERTHEEVENTSTHATCHARACTERIZETHELIFECYCLEOFAPAGEANDHOWCONTROLANDPAGEAUTHORSCANINTERVENETOALTERTHESTANDARDBEHAVIOR6PRINTEDPAGESINTRODUCTIONEACHREQUESTFORAMICROSOFTASPNETPAGETHATHITSMICROSOFTINTERNETINFORMATIONSERVICESIISISHANDEDOVERTOTHEASPNETHTTPPIPELINETHEHTTPPIPELINEISACHAINOFMANAGEDOBJECTSTHATSEQUENTIALLYPROCESSTHEREQUESTANDMAKETHETRANSITIONFROMAURLTOPLAINHTMLTEXTHAPPENTHEENTRYPOINTOFTHEHTTPPIPELINEISTHEHTTPRUNTIMECLASSTHEASPNETINFRASTRUCTURECREATESONEINSTANCEOFTHISCLASSPEREACHAPPDOMAINHOSTEDWITHINTHEWORKERPROCESSREMEMBERTHATTHEWORKERPROCESSMAINTAINSONEDISTINCTAPPDOMAINPEREACHASPNETAPPLICATIONCURRENTLYRUNNINGTHEHTTPRUNTIMECLASSPICKSUPANHTTPAPPLICATIONOBJECTFROMANINTERNALPOOLANDSETSITTOWORKONTHEREQUESTTHEMAINTASKACCOMPLISHEDBYTHEHTTPAPPLICATIONMANAGERISFINDINGOUTTHECLASSTHATWILLACTUALLYHANDLETHEREQUESTWHENTHEREQUESTISFORANASPXRESOURCE,THEHANDLERISAPAGEHANDLERNAMELY,ANINSTANCEOFACLASSTHATINHERITSFROMPAGETHEASSOCIATIONBETWEENTYPESOFRESOURCESANDTYPESOFHANDLERSISSTOREDINTHECONFIGURATIONFILEOFTHEAPPLICATIONMOREEXACTLY,THEDEFAULTSETOFMAPPINGSISDEFINEDINTHESECTIONOFTHEMACHINECONFIGFILEHOWEVER,THEAPPLICATIONCANCUSTOMIZETHELISTOFITSOWNHTTPHANDLERSINTHELOCALWEBCONFIGFILETHELINEBELOWILLUSTRATESTHECODETHATDEFINESTHEHTTPHANDLERFORASPXRESOURCESANEXTENSIONCANBEASSOCIATEDWITHAHANDLERCLASS,ORMOREINGENERAL,WITHAHANDLERFACTORYCLASSINALLCASES,THEHTTPAPPLICATIONOBJECTINCHARGEFORTHEREQUESTGETSANOBJECTTHATIMPLEMENTSTHEIHTTPHANDLERINTERFACEIFTHEASSOCIATIONRESOURCE/CLASSISRESOLVEDINTERMSOFAHTTPHANDLER,THENTHERETURNEDCLASSWILLIMPLEMENTTHEINTERFACEDIRECTLYIFTHERESOURCEISBOUNDTOAHANDLERFACTORY,ANEXTRASTEPISNECESSARYAHANDLERFACTORYCLASSIMPLEMENTSTHEIHTTPHANDLERFACTORYINTERFACEWHOSEGETHANDLERMETHODWILLRETURNANIHTTPHANDLERBASEDOBJECTHOWCANTHEHTTPRUNTIMECLOSETHECIRCLEANDPROCESSTHEPAGEREQUESTTHEIHTTPHANDLERINTERFACEFEATURESTHEPROCESSREQUESTMETHODBYCALLINGTHISMETHODONTHEOBJECTTHATREPRESENTSTHEREQUESTEDPAGE,THEASPNETINFRASTRUCTURESTARTSTHEPROCESSTHATWILLGENERATETHEOUTPUTFORTHEBROWSERTHEREALPAGECLASS2THETYPEOFTHEHTTPHANDLERFORAPARTICULARPAGEDEPENDSONTHEURLTHEFIRSTTIMETHEURLISINVOKED,ANEWCLASSISCOMPOSEDANDDYNAMICALLYCOMPILEDTOANASSEMBLYTHESOURCECODEOFTHECLASSISTHEOUTCOMEOFAPARSINGPROCESSTHATEXAMINESTHEASPXSOURCESTHECLASSISDEFINEDASPARTOFTHENAMESPACEASPANDISGIVENANAMETHATMIMICSTHEORIGINALURLFOREXAMPLE,IFTHEURLENDPOINTISPAGEASPX,THENAMEOFTHECLASSISASPPAGE_ASPXTHECLASSNAME,THOUGH,CANBEPROGRAMMATICALLYCONTROLLEDBYSETTINGTHECLASSNAMEATTRIBUTEINTHEPAGEDIRECTIVETHEBASECLASSFORTHEHTTPHANDLERISPAGETHISCLASSDEFINESTHEMINIMUMSETOFMETHODSANDPROPERTIESSHAREDBYALLPAGEHANDLERSTHEPAGECLASSIMPLEMENTSTHEIHTTPHANDLERINTERFACEUNDERACOUPLEOFCIRCUMSTANCES,THEBASECLASSFORTHEACTUALHANDLERISNOTPAGEBUTADIFFERENTCLASSTHISHAPPENS,FOREXAMPLE,IFCODEBEHINDISUSEDCODEBEHINDISADEVELOPMENTTECHNIQUETHATINSULATESTHECODENECESSARYTOAPAGEINTOASEPARATECORMICROSOFTVISUALBASICNETCLASSTHECODEOFAPAGEISTHESETOFEVENTHANDLERSANDHELPERMETHODSTHATACTUALLYCREATETHEBEHAVIOROFTHEPAGETHISCODECANBEDEFINEDINLINEUSINGTHETAGORPLACEDINANEXTERNALCLASSTHECODEBEHINDCLASSACODEBEHINDCLASSISACLASSTHATINHERITSFROMPAGEANDSPECIALIZESITWITHEXTRAMETHODSWHENSPECIFIED,THECODEBEHINDCLASSISUSEDASTHEBASECLASSFORTHEHTTPHANDLERTHEOTHERSITUATIONINWHICHTHEHTTPHANDLERISNOTBASEDONPAGEISWHENTHECONFIGURATIONFILEOFTHEAPPLICATIONCONTAINSAREDEFINITIONFORTHEPAGEBASETYPEATTRIBUTEINTHESECTIONTHEPAGEBASETYPEATTRIBUTEINDICATESTHETYPEANDTHEASSEMBLYTHATCONTAINSTHEBASECLASSFORPAGEHANDLERSDERIVEDFROMPAGE,THISCLASSCANAUTOMATICALLYENDOWHANDLERSWITHACUSTOMANDEXTENDEDSETOFMETHODSANDPROPERTIESTHEPAGELIFECYCLEONCETHEHTTPPAGEHANDLERCLASSISFULLYIDENTIFIED,THEASPNETRUNTIMECALLSTHEHANDLERSPROCESSREQUESTMETHODTOPROCESSTHEREQUESTNORMALLY,THEREISNONEEDTOCHANGETHEIMPLEMENTATIONOFTHEMETHODASITISPROVIDEDBYTHEPAGECLASSTHISIMPLEMENTATIONBEGINSBYCALLINGTHEMETHODFRAMEWORKINITIALIZE,WHICHBUILDSTHECONTROLSTREEFORTHEPAGETHEMETHODISAPROTECTEDANDVIRTUALMEMBEROFTHETEMPLATECONTROLCLASSTHECLASSFROMWHICHPAGEITSELFDERIVESANYDYNAMICALLYGENERATEDHANDLERFORANASPXRESOURCEOVERRIDESFRAMEWORKINITIALIZEINTHISMETHOD,THEWHOLECONTROLTREEFORTHEPAGEISBUILTNEXT,PROCESSREQUESTMAKESTHEPAGETRANSITVARIOUSPHASESINITIALIZATION,LOADINGOFVIEWSTATEINFORMATIONANDPOSTBACKDATA,LOADINGOFTHEPAGESUSERCODEANDEXECUTIONOFPOSTBACKSERVERSIDEEVENTSAFTERTHAT,THEPAGEENTERSINRENDERINGMODETHEUPDATEDVIEWSTATEISCOLLECTEDTHEHTMLCODEISGENERATEDANDTHENSENTTOTHEOUTPUTCONSOLEFINALLY,THEPAGEISUNLOADEDANDTHEREQUESTISCONSIDEREDCOMPLETELYSERVEDDURINGTHEVARIOUSPHASES,THEPAGEFIRESAFEWEVENTSTHATWEBCONTROLSANDUSERDEFINEDCODECANINTERCEPTANDHANDLESOMEOFTHESEEVENTSARESPECIFICFOREMBEDDEDCONTROLSANDSUBSEQUENTLYCANTBEHANDLEDATTHELEVELOFTHEASPXCODE3APAGETHATWANTSTOHANDLEACERTAINEVENTSHOULDEXPLICITLYREGISTERANAPPROPRIATEHANDLERHOWEVER,FORBACKWARDCOMPATIBILITYWITHTHEEARLIERVISUALBASICPROGRAMMINGSTYLE,ASPNETALSOSUPPORTSAFORMOFIMPLICITEVENTHOOKINGBYDEFAULT,THEPAGETRIESTOMATCHSPECIALMETHODNAMESWITHEVENTSIFAMATCHISFOUND,THEMETHODISCONSIDEREDAHANDLERFORTHEEVENTASPNETPROVIDESSPECIALRECOGNITIONOFSIXMETHODNAMESTHEYAREPAGE_INIT,PAGE_LOAD,PAGE_DATABIND,PAGE_PRERENDER,ANDPAGE_UNLOADTHESEMETHODSARETREATEDASHANDLERSFORTHECORRESPONDINGEVENTSEXPOSEDBYTHEPAGECLASSTHEHTTPRUNTIMEWILLAUTOMATICALLYBINDTHESEMETHODSTOPAGEEVENTSSAVINGDEVELOPERSFROMHAVINGTOWRITETHENECESSARYGLUECODEFOREXAMPLE,THEMETHODNAMEDPAGE_LOADISWIREDTOTHEPAGESLOADEVENTASIFTHEFOLLOWINGCODEWASWRITTENTHISLOADNEWEVENTHANDLERTHISPAGE_LOADTHEAUTOMATICRECOGNITIONOFSPECIALNAMESISABEHAVIORUNDERTHECONTROLOFTHEAUTOEVENTWIREUPATTRIBUTEOFTHEPAGEDIRECTIVEIFTHEATTRIBUTEISSETTOFALSE,ANYAPPLICATIONSTHATWISHTOHANDLEANEVENTNEEDTOCONNECTEXPLICITLYTOTHEPAGEEVENTPAGESTHATDONTUSEAUTOMATICEVENTWIREUPWILLGETASLIGHTPERFORMANCEBOOSTBYNOTHAVING51ASPXTODOTHEEXTRAWORKOFMATCHINGNAMESANDEVENTSYOUSHOULDNOTETHATALLMICROSOFTVISUALSTUDIONETPROJECTSARECREATEDWITHTHEAUTOEVENTWIREUPATTRIBUTEDISABLEDHOWEVER,THEDEFAULTSETTINGFORTHEATTRIBUTEISTRUE,MEANINGTHATMETHODSSUCHASPAGE_LOADARERECOGNIZEDANDBOUNDTOTHEASSOCIATEDEVENTTHEEXECUTIONOFAPAGECONSISTSOFASEQUENCEOFSTAGESLISTEDINTHEFOLLOWINGTABLEANDISCHARACTERIZEDBYAPPLICATIONLEVELEVENTSAND/ORPROTECTED,OVERRIDABLEMETHODSTABLE1KEYEVENTSINTHELIFEOFANASPNETPAGESTAGEPAGEEVENTOVERRIDABLEMETHODPAGEINITIALIZATIONINITVIEWSTATELOADINGLOADVIEWSTATEPOSTBACKDATAPROCESSINGLOADPOSTDATAMETHODINANYCONTROLTHATIMPLEMENTSTHEIPOSTBACKDATAHANDLERINTERFACEPAGELOADINGLOADPOSTBACKCHANGENOTIFICATIONRAISE51POSASPXTDATACHANGEDEVENTMETHODINANYCONTROLTHATIMPLEMENTSTHEIPOSTBACKDATAHANDLERINTERFACEPOSTBACKEVENTHANDLINGANYPOSTBACKEVENTDEFINEDBYCONTROLSRAISEPOSTBACKEVENTMETHODINANYCONTROLTHATIMPLEMENTSTHEIPOSTBACKEVENTHANDLERINTERFACEPAGEPRERENDERINGPHASEPRERENDERVIEWSTATESAVINGSAVEVIEWSTATE4PAGERENDERINGRENDERPAGEUNLOADINGUNLOADSOMEOFTHESTAGESLISTEDABOVEARENOTVISIBLEATTHEPAGELEVELANDAFFECTONLYAUTHORSOFSERVERCONTROLSANDDEVELOPERSWHOHAPPENTOCREATEACLASSDERIVEDFROMPAGEINIT,LOAD,PRERENDER,UNLOAD,PLUSALLPOSTBACKEVENTSDEFINEDBYEMBEDDEDCONTROLSARETHEONLYSIGNALSOFLIFETHATAPAGESENDSTOTHEEXTERNALWORLDSTAGESOFEXECUTIONTHEFIRSTSTAGEINTHEPAGELIFECYCLEISTHEINITIALIZATIONTHISSTAGEISCHARACTERIZEDBYTHEINITEVENT,WHICHFIRESTOTHEAPPLICATIONAFTERTHEPAGESCONTROLTREEHASBEENSUCCESSFULLYCREATEDINOTHERWORDS,WHENTHEINITEVENTARRIVES,ALLTHECONTROLSSTATICALLYDECLAREDINTHEASPXSOURCEFILEHAVEBEENINSTANTIATEDANDHOLDTHEIRDEFAULTVALUESCONTROLSCANHOOKUPTHEINITEVENTTOINITIALIZEANYSETTINGSTHATWILLBENEEDEDDURINGTHELIFETIMEOFTHEINCOMINGWEBREQUESTFOREXAMPLE,ATTHISTIMECONTROLSCANLOADEXTERNALTEMPLATEFILESORSETUPTHEHANDLERFORTHEEVENTSYOUSHOULDNOTICETHATNOVIEWSTATEINFORMATIONISAVAILABLEFORUSEYETIMMEDIATELYAFTERINITIALIZATION,THEPAGEFRAMEWORKLOADSTHEVIEWSTATEFORTHEPAGETHEVIEWSTATEISACOLLECTIONOFNAME/VALUEPAIRS,WHERECONTROLSANDTHEPAGEITSELFSTOREANYINFORMATIONTHATMUSTBEPERSISTENTACROSSWEBREQUESTSTHEVIEWSTATEREPRESENTSTHECALLCONTEXTOFTHEPAGETYPICALLY,ITCONTAINSTHESTATEOFTHECONTROLSTHELASTTIMETHEPAGEWASPROCESSEDONTHESERVERTHEVIEWSTATEISEMPTYTHEFIRSTTIMETHEPAGEISREQUESTEDINTHESESSIONBYDEFAULT,THEVIEWSTATEISSTOREDINAHIDDENFIELDSILENTLYADDEDTOTHEPAGETHENAMEOFTHISFIELDIS_VIEWSTATEBYOVERRIDINGTHELOADVIEWSTATEMETHODAPROTECTEDOVERRIDABLEMETHODONTHECONTROLCLASSCOMPONENTDEVELOPERSCANCONTROLHOWTHEVIEWSTATEISRESTOREDANDHOWITSCONTENTSAREMAPPEDTOTHEINTERNALSTATEMETHODSLIKELOADPAGESTATEFROMPERSISTENCEMEDIUMANDITSCOUNTERPARTSAVEPAGESTATETOPERSISTENCEMEDIUMCANBEUSEDTOLOADANDSAVETHEVIEWSTATETOANALTERNATIVESTORAGEMEDIUMFOREXAMPLE,SESSION,DATABASES,ORASERVERSIDEFILEUNLIKELOADVIEWSTATE,THEAFOREMENTIONEDMETHODSAREAVAILABLEONLYINCLASSESDERIVEDFROMPAGEONCETHEVIEWSTATEHASBEENRESTORED,THECONTROLSINTHEPAGETREEAREINTHESAMESTATETHEYWERETHELASTTIMETHEPAGEWASRENDEREDTOTHEBROWSERTHENEXTSTEPCONSISTSOFUPDATINGTHEIRSTATETOINCORPORATECLIENTSIDECHANGESTHEPOSTBACKDATAPROCESSINGSTAGEGIVESCONTROLSACHANCETOUPDATETHEIRSTATESOTHATITACCURATELYREFLECTSTHESTATEOFTHECORRESPONDINGHTMLELEMENTONTHECLIENTFOREXAMPLE,ASERVERTEXTBOXCONTROLHASITSHTMLCOUNTERPARTINANELEMENTINTHEPOSTBACKDATASTAGE,THETEXTBOXCONTROLWILLRETRIEVETHECURRENTVALUEOFTAGANDUSEITTOREFRESHITSINTERNALSTATEEACHCONTROLISRESPONSIBLEFOREXTRACTINGVALUESFROMPOSTEDDATAANDUPDATINGSOMEOFITSPROPERTIESTHETEXTBOXCONTROLWILLUPDATEITSTEXTPROPERTYWHEREASTHECHECKBOXCONTROLWILLREFRESHITSCHECKEDPROPERTYTHEMATCHBETWEENASERVERCONTROLANDAHTMLELEMENTISFOUNDONTHEIDOFBOTHATTHEENDOFTHEPOSTBACKDATAPROCESSINGSTAGE,ALLCONTROLSINTHEPAGEREFLECTTHEPREVIOUSSTATE5UPDATEDWITHCHANGESENTEREDONTHECLIENTATTHISPOINT,THELOADEVENTISFIREDTOTHEPAGETHEREMIGHTBECONTROLSINTHEPAGETHATNEEDTOACCOMPLISHCERTAINTASKSIFASENSITIVEPROPERTYISMODIFIEDACROSSTWODIFFERENTREQUESTSFOREXAMPLE,IFTHETEXTOFATEXTBOXCONTROLISMODIFIEDONTHECLIENT,THECONTROLFIRESTHETEXTCHANGEDEVENTEACHCONTROLCANTAKETHEDECISIONTOFIREANAPPROPRIATEEVENTIFONEORMOREOFITSPROPERTIESAREMODIFIEDWITHTHEVALUESCOMINGFROMTHECLIENTCONTROLSFORWHICHTHESECHANGESARECRITICALIMPLEMENTTHEIPOSTBACKDATAHANDLERINTERFACE,WHOSELOADPOSTDATAMETHODISINVOKEDIMMEDIATELYAFTERTHELOADEVENTBYCODINGTHELOADPOSTDATAMETHOD,ACONTROLVERIFIESIFANYCRITICALCHANGEHASOCCURREDSINCELASTREQUESTANDFIRESITSOWNCHANGEEVENTTHEKEYEVENTINTHELIFECYCLEOFAPAGEISWHENITISCALLEDTOEXECUTETHESERVERSIDECODEASSOCIATEDWITHANEVENTTRIGGEREDONTHECLIENTWHENTHEUSERCLICKSABUTTON,THEPAGEPOSTSBACKTHECOLLECTIONOFPOSTEDVALUESCONTAINSTHEIDOFTHEBUTTONTHATSTARTEDTHEWHOLEOPERATIONIFTHECONTROLISKNOWNTOIMPLEMENTTHEIPOSTBACKEVENTHANDLERINTERFACEBUTTONSANDLINKBUTTONSWILLDO,THEPAGEFRAMEWORKCALLSTHERAISEPOSTBACKEVENTMETHODWHATTHISMETHODDOESDEPENDSONTHETYPEOFTHECONTROLWITHREGARDTOBUTTONSANDLINKBUTTONS,THEMETHODLOOKSUPFORACLICKEVENTHANDLERANDRUNSTHEASSOCIATEDDELEGATEAFTERHANDLINGTHEPOSTBACKEVENT,THEPAGEPREPARESFORRENDERINGTHISSTAGEISSIGNALEDBYTHEPRETENDEREVENTTHISISAGOODTIMEFORCONTROLSTOPERFORMANYLASTMINUTEUPDATEOPERATIONSTHATNEEDTOTAKEPLACEIMMEDIATELYBEFORETHEVIEWSTATEISSAVEDANDTHEOUTPUTRENDEREDTHENEXTSTATEISSAVEVIEWSTATE,INWHICHALLCONTROLSANDTHEPAGEITSELFAREINVITEDTOFLUSHTHECONTENTSOFTHEIROWNVIEWSTATECOLLECTIONTHERESULTANTVIEWSTATEISTHENSERIALIZED,HASHED,BASE64ENCODED,ANDASSOCIATEDWITHTHE_VIEWSTATEHIDDENFIELDTHERENDERINGMECHANISMOFINDIVIDUALCONTROLSCANBEALTEREDBYOVERRIDINGTHERENDERMETHODTHEMETHODTAKESANHTMLWRITEROBJECTANDUSESITTOACCUMULATEALLHTMLTEXTTOBEGENERATEDFORTHECONTROLTHEDEFAULTIMPLEMENTATIONOFTHERENDERMETHODFORTHEPAGECLASSCONSISTSOFARECURSIVECALLTOALLCONSTITUENTCONTROLSFOREACHCONTROLTHEPAGECALLSTHERENDERMETHODANDCACHESTHEHTMLOUTPUTTHEFINALSIGNOFLIFEOFAPAGEISTHEUNLOADEVENTTHATARRIVESJUSTBEFORETHEPAGEOBJECTISDISMISSEDINTHISEVENTYOUSHOULDRELEASEANYCRITICALRESOURCEYOUMIGHTHAVEFOREXAMPLE,FILES,GRAPHICALOBJECTS,DATABASECONNECTIONSFINALLY,AFTERTHISEVENTTHEBROWSERRECEIVESTHEHTTPRESPONSEPACKETANDDISPLAYSTHEPAGESUMMARYTHEASPNETPAGEOBJECTMODELISPARTICULARLYINNOVATIVEBECAUSEOFTHEEVENTINGMECHANISMAWEBPAGEISCOMPOSEDOFCONTROLSTHATBOTHPRODUCEARICHHTMLBASEDUSERINTERFACEANDINTERACTWITHTHEUSERTHROUGHEVENTSSETTINGUPANEVENTINGMODELINTHECONTEXTOFWEBAPPLICATIONSISCHALLENGINGITSAMAZINGTOSEETHATCLIENTSIDEGENERATEDEVENTSARERESOLVEDWITHSERVERSIDECODE,ANDTHEOUTPUTOFTHISISVISIBLEASTHESAMEHTMLPAGE,ONLYPROPERLYMODIFIEDTOMAKESENSEOFTHISMODELITISIMPORTANTTOUNDERSTANDTHEVARIOUSSTAGESINTHEPAGELIFECYCLEANDHOWTHEPAGEOBJECTISINSTANTIATEDANDUSEDBYTHEHTTPRUNTIME6譯成中文ASPNET頁(yè)面對(duì)象模型摘要了解圍繞ASPNETWEB頁(yè)構(gòu)建的事件模型,以及一個(gè)WEB頁(yè)面在其轉(zhuǎn)變?yōu)镠TML的歷程中的各個(gè)階段。ASPNETHTTP運(yùn)行時(shí)控制對(duì)象管線,對(duì)象管線首先將所請(qǐng)求的URL轉(zhuǎn)換為一個(gè)頁(yè)面類的活動(dòng)實(shí)例,然后將其轉(zhuǎn)換為普通HTML文本。本文將探討一個(gè)頁(yè)面的生存周期中的各個(gè)特征事件,并了解控件和頁(yè)面編寫者如何介入其中以改變其標(biāo)準(zhǔn)行為。簡(jiǎn)介MICROSOFTINTERNET信息服務(wù)IIS所收到的對(duì)某MICROSOFTASPNET頁(yè)面的每個(gè)請(qǐng)求都被移交給ASPNETHTTP管線。HTTP管線由一系列托管對(duì)象組成,這些對(duì)象按順序處理該請(qǐng)求,并完成從URL到普通HTML文本的轉(zhuǎn)換。HTTP管線的入口點(diǎn)是HTTPRUNTIME類。ASPNET基礎(chǔ)結(jié)構(gòu)為輔助進(jìn)程中所承載的每個(gè)APPDOMAIN創(chuàng)建此類的一個(gè)實(shí)例(請(qǐng)注意,該輔助進(jìn)程為當(dāng)前正在運(yùn)行的每個(gè)ASPNET應(yīng)用程序維護(hù)一個(gè)不同的APPDOMAIN)。HTTPRUNTIME類從內(nèi)部池中選取一個(gè)HTTPAPPLICATION對(duì)象,并讓其處理該請(qǐng)求。HTTP應(yīng)用程序管理器所完成的主要任務(wù)就是找出將實(shí)際處理該請(qǐng)求的類。如果請(qǐng)求ASPX資源,則處理程序就是一個(gè)頁(yè)面處理程序即某個(gè)繼承自PAGE的類的一個(gè)實(shí)例。資源類型和處理程序類型之間的關(guān)聯(lián)關(guān)系存儲(chǔ)于該應(yīng)用程序的配置文件中。更準(zhǔn)確地說,在MACHINECONFIG文件的部分中定義默認(rèn)的一組映射關(guān)系。然而,應(yīng)用程序也可以在本地的WEBCONFIG文件中自定義自己的HTTP處理程序列表。下面的程序行舉例說明了定義用于ASPX資源的HTTP處理程序的代碼。擴(kuò)展名可關(guān)聯(lián)到一個(gè)處理程序類,或者更普遍地關(guān)聯(lián)到一個(gè)處理程序工廠HANDLERFACTORY類。在所有情況下,負(fù)責(zé)處理請(qǐng)求的HTTPAPPLICATION對(duì)象都會(huì)獲得一個(gè)實(shí)現(xiàn)IHTTPHANDLER接口的對(duì)象。如果根據(jù)HTTP處理程序來(lái)解析關(guān)聯(lián)資源/類,那么所返回的類將直接實(shí)現(xiàn)該接口。如果資源綁定到處理程序工廠,則需要另外一個(gè)步驟。處理程序工廠類實(shí)現(xiàn)IHTTPHANDLERFACTORY接口,而該接口的GETHANDLER方法返回一個(gè)基于IHTTPHANDLER的對(duì)象。HTTP運(yùn)行時(shí)如何能完成整個(gè)循環(huán)并處理頁(yè)面請(qǐng)求呢IHTTPHANDLER接口特別提供了PROCESSREQUEST方法。通過對(duì)代表所請(qǐng)求頁(yè)面的對(duì)象調(diào)用此方法,ASPNET基礎(chǔ)結(jié)構(gòu)啟動(dòng)相應(yīng)過程,從而針對(duì)瀏覽器生成輸出。真正的PAGE類特定頁(yè)面的HTTP處理程序類型取決于URL。當(dāng)首次調(diào)用URL時(shí),將構(gòu)建一個(gè)新類并將該類動(dòng)態(tài)地編譯成一個(gè)程序集。用于檢查ASPX來(lái)源的語(yǔ)法分析過程的輸出結(jié)果就是該類的源代碼。該類被定義為ASP命名空間的一部分,并被賦予一個(gè)與原始URL相似的名稱。例如,如果URL終結(jié)點(diǎn)是PAGEASPX,則類名稱為ASPPAGE_ASPX。但是,也可通過編程設(shè)置PAGE指令的CLASSNAME屬性來(lái)控制類的名稱。HTTP處理程序的基類是PAGE。此類定義了所有頁(yè)面處理程序所共享的方法和屬性的最小集合。PAGE類中實(shí)現(xiàn)IHTTPHANDLER接口。在某些情況下,實(shí)際處理程序的基類并非PAGE,而是一個(gè)不同的類。例如,如果使用了代碼隱藏,就會(huì)出現(xiàn)這種情況。代碼隱藏是一種開發(fā)方法,它將頁(yè)面所需的代碼封裝到一個(gè)單獨(dú)的C或MICROSOFTVISUALBASICNET類中。頁(yè)面的代碼就是一組事件處理程序和幫助器方法,用以7實(shí)際創(chuàng)建該頁(yè)面的行為??梢岳脴?biāo)記將這種代碼定義為內(nèi)聯(lián)代碼,或者也可將其放到一個(gè)外部類代碼隱藏類中。代碼隱藏類是一種繼承自PAGE的類,但這種類具有一些額外的方法因而比較特殊。如果指定,代碼隱藏類就用作HTTP處理程序的基類。還有一種情況,即當(dāng)應(yīng)用程序配置文件的部分中重新定義了PAGEBASETYPE屬性時(shí),HTTP處理程序也不是基于PAGE的。PAGEBASETYPE屬性指出了包含頁(yè)面處理程序的基類的類型以及程序集。派生自PAGE的這個(gè)類可自動(dòng)給處理程序賦予一組自定義和擴(kuò)展的方法和屬性。頁(yè)面生存周期一旦完全確定HTTP頁(yè)面處理程序類,ASPNET運(yùn)行時(shí)就調(diào)用該處理程序的PROCESSREQUEST方法以處理請(qǐng)求。通常情況下,無(wú)需更改此方法的實(shí)現(xiàn)方式,因?yàn)樗怯蒔AGE類提供的。此實(shí)現(xiàn)方法一開始就調(diào)用FRAMEWORKINITIALIZE方法,以此建立頁(yè)面的控件樹。此方法是TEMPLATECONTROL類(PAGE類本身就是從該類派生出來(lái)的)的一個(gè)受保護(hù)的虛擬成員。任何針對(duì)ASPX資源而動(dòng)態(tài)生成的處理程序都重寫FRAMEWORKINITIALIZE。在此方法中,該頁(yè)面的完整控件樹得以構(gòu)建。接下來(lái),PROCESSREQUEST使該頁(yè)面經(jīng)歷若干階段初始化,加載視圖狀態(tài)信息和回發(fā)數(shù)據(jù),加載頁(yè)面的用戶代碼并執(zhí)行回發(fā)服務(wù)器端事件。隨后,該頁(yè)面進(jìn)入呈現(xiàn)模式收集更新后的視圖狀態(tài);生成HTML代碼然后將其發(fā)送到輸出控制臺(tái)。最后,卸載頁(yè)面,并認(rèn)為已完成對(duì)該請(qǐng)求的處理。在各個(gè)階段中,頁(yè)面都會(huì)激發(fā)一些WEB控件和用戶定義的代碼所能截獲并處理的事件。其中的一些事件是嵌入式控件專用的,因而并不能在ASPX代碼級(jí)進(jìn)行處理。如果頁(yè)面想要處理某個(gè)事件,它應(yīng)該顯式地注冊(cè)相應(yīng)的處理程序。然而,為了向后兼容早期的VISUALBASIC編程風(fēng)格,ASPNET也支持一種隱式的事件掛起形式。在默認(rèn)情況下,頁(yè)面將嘗試把特定的方法名與事件匹配起來(lái);如果找到匹配的方法,就認(rèn)為該方法是該事件的處理程序。ASPNET提供了六個(gè)方法名的特定識(shí)別。它們是PAGE_INIT、PAGE_LOAD、PAGE_DATABIND、PAGE_PRERENDER和PAGE_UNLOAD。這些方法被當(dāng)作是PAGE類所提供的相應(yīng)事件的處理程序。HTTP運(yùn)行時(shí)將自動(dòng)把這些方法與頁(yè)面事件綁定起來(lái),這樣一來(lái),開發(fā)人員就不必編寫所需的粘接代碼。例如,名為PAGE_LOAD的方法與頁(yè)面的LOAD事件綁定,就像已編寫以下代碼一樣。THISLOADNEWEVENTHANDLERTHISPAGE_LOAD這種自動(dòng)識(shí)別特殊名稱的功能由PAGE指令的AUTOEVENTWIREUP屬性控制。如果將該屬性設(shè)置為FALSE,則任何想要處理某個(gè)事件的應(yīng)用程序都需顯式地連接到該頁(yè)面事件。如果頁(yè)面不使用自動(dòng)事件關(guān)聯(lián)功能,就不必進(jìn)行額外的操作以匹配各名稱和事件,從而其性能也稍有提升。應(yīng)該注意的是,所有的MICROSOFTVISUALSTUDIONET項(xiàng)目在創(chuàng)建時(shí)都禁用了AUTOEVENTWIREUP屬性。然而,此屬性的默認(rèn)設(shè)置為TRUE,意味著諸如PAGE_LOAD等方法會(huì)被識(shí)別并被綁定到相關(guān)的事件。頁(yè)面的執(zhí)行過程包括下面表格中所列的一系列階段,并以具有一些應(yīng)用程序級(jí)事件和/或受保護(hù)且可重寫的方法為特征。8表格1ASPNET頁(yè)面生存周期中的關(guān)鍵事件階段頁(yè)面事件可重寫方法頁(yè)面初始化INIT加載視圖狀態(tài)LOADVIEWSTATE處理回發(fā)數(shù)據(jù)實(shí)現(xiàn)IPOSTBACKDATAHANDLER接口的任何控件中的LOADPOSTDATA方法加載頁(yè)面LOAD回發(fā)更改通知實(shí)現(xiàn)IPOSTBACKDATAHANDLER接口的任何控件中的RAISEPOSTDATACHANGEDEVENT方法處理回發(fā)事件控件所定義的任何回發(fā)事件實(shí)現(xiàn)了IPOSTBACKEVENTHANDLER接口的任何控件的RAISEPOSTBACKEVENT方法頁(yè)面呈現(xiàn)前階段PRERENDER保存視圖狀態(tài)SAVEVIEWSTATE呈現(xiàn)頁(yè)面RENDER卸載頁(yè)面UNLOAD在頁(yè)面級(jí)上,以上所列的某些階段是不可見的,并僅影響服務(wù)器控件編寫者和那些湊巧要?jiǎng)?chuàng)建從PAGE派生的類的開發(fā)人員。頁(yè)面向外界發(fā)送的活動(dòng)信號(hào)僅包括INIT、LOAD、PRERENDER、UNLOAD以及嵌入式控件所定義的所有回發(fā)事件。執(zhí)行的各個(gè)階段頁(yè)面生存周期中的第一個(gè)階段是初始化。這一階段的標(biāo)志就是INIT事件,在成功創(chuàng)建頁(yè)面的控件樹后,對(duì)應(yīng)用程序激發(fā)這個(gè)事件。換而言之,當(dāng)INIT事件發(fā)生時(shí),在ASPX源文件中靜態(tài)聲明的所有控件都已實(shí)例化并取其默認(rèn)值??丶蓲炱餓NIT事件,以便初始化在傳入的WEB請(qǐng)求的生存周期中所需的任何設(shè)置。例如,此時(shí)控件可以加載外部模板文件或設(shè)置各個(gè)事件的處理程序。應(yīng)該注意到,這時(shí)還沒有視圖狀態(tài)信息可供使用。在初始化之后,頁(yè)面框架立即加載該頁(yè)面的視圖狀態(tài)。所謂視圖狀態(tài)就是一些名稱/值對(duì)的集合,控件和頁(yè)面本身可將那些對(duì)所有WEB請(qǐng)求都必須始終有效的任何信息存儲(chǔ)在其中。視圖狀態(tài)表示頁(yè)面的調(diào)用上下文。一般情況下,其中包含上次在服務(wù)器中處理該頁(yè)面時(shí)各控件的狀態(tài)。首次在會(huì)話中請(qǐng)求頁(yè)面時(shí),視圖狀態(tài)為空。在默認(rèn)情況下,視圖狀態(tài)被存儲(chǔ)在一個(gè)隱藏字段中,而該字段是自行添加到頁(yè)面中的。該字段名稱為_VIEWSTATE。通過重寫
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 塑料反射膜材料考核試卷
- 教育技術(shù)支持系統(tǒng)構(gòu)建考核試卷
- 互助社與土地整治合作模式考核試卷
- 核心競(jìng)爭(zhēng)力構(gòu)建考核試卷
- 醫(yī)用防護(hù)服材料舒適性改進(jìn)技術(shù)考核試卷
- 計(jì)劃生育協(xié)會(huì)工作情況總結(jié)
- 紅軍長(zhǎng)征課件
- 計(jì)劃生育建議
- 交通安全發(fā)言稿13篇
- 畢業(yè)拍照活動(dòng)方案
- 創(chuàng)新創(chuàng)業(yè)教程(第四版)大學(xué)生創(chuàng)新創(chuàng)業(yè)全套教學(xué)課件
- 網(wǎng)絡(luò)攻擊和防御技術(shù)培訓(xùn)
- 興縣煤下鋁開采可行性方案
- 中央廚房食品項(xiàng)目經(jīng)營(yíng)分析報(bào)告
- 小學(xué)四年級(jí)道德與法治期末考試質(zhì)量分析
- 鉗工實(shí)操試卷-共44套
- 論融資租賃資產(chǎn)證券化在我國(guó)存在的必要性
- 麻醉藥品精神藥品管理培訓(xùn)課件
- QCC品管圈活動(dòng)表格匯編
- 2023年貴州省社區(qū)工作者公開招聘考試《公共基礎(chǔ)知識(shí)》專項(xiàng)題庫(kù)【真題精選+章節(jié)題庫(kù)+模擬試題】
- 出租車大包車合同
評(píng)論
0/150
提交評(píng)論