




已閱讀5頁,還剩6頁未讀, 繼續(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頁面對(duì)象模型摘要了解圍繞ASPNETWEB頁構(gòu)建的事件模型,以及一個(gè)WEB頁面在其轉(zhuǎn)變?yōu)镠TML的歷程中的各個(gè)階段。ASPNETHTTP運(yùn)行時(shí)控制對(duì)象管線,對(duì)象管線首先將所請(qǐng)求的URL轉(zhuǎn)換為一個(gè)頁面類的活動(dòng)實(shí)例,然后將其轉(zhuǎn)換為普通HTML文本。本文將探討一個(gè)頁面的生存周期中的各個(gè)特征事件,并了解控件和頁面編寫者如何介入其中以改變其標(biāo)準(zhǔn)行為。簡(jiǎn)介MICROSOFTINTERNET信息服務(wù)IIS所收到的對(duì)某MICROSOFTASPNET頁面的每個(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è)頁面處理程序即某個(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處理程序來解析關(guān)聯(lián)資源/類,那么所返回的類將直接實(shí)現(xiàn)該接口。如果資源綁定到處理程序工廠,則需要另外一個(gè)步驟。處理程序工廠類實(shí)現(xiàn)IHTTPHANDLERFACTORY接口,而該接口的GETHANDLER方法返回一個(gè)基于IHTTPHANDLER的對(duì)象。HTTP運(yùn)行時(shí)如何能完成整個(gè)循環(huán)并處理頁面請(qǐng)求呢IHTTPHANDLER接口特別提供了PROCESSREQUEST方法。通過對(duì)代表所請(qǐng)求頁面的對(duì)象調(diào)用此方法,ASPNET基礎(chǔ)結(jié)構(gòu)啟動(dòng)相應(yīng)過程,從而針對(duì)瀏覽器生成輸出。真正的PAGE類特定頁面的HTTP處理程序類型取決于URL。當(dāng)首次調(diào)用URL時(shí),將構(gòu)建一個(gè)新類并將該類動(dòng)態(tài)地編譯成一個(gè)程序集。用于檢查ASPX來源的語法分析過程的輸出結(jié)果就是該類的源代碼。該類被定義為ASP命名空間的一部分,并被賦予一個(gè)與原始URL相似的名稱。例如,如果URL終結(jié)點(diǎn)是PAGEASPX,則類名稱為ASPPAGE_ASPX。但是,也可通過編程設(shè)置PAGE指令的CLASSNAME屬性來控制類的名稱。HTTP處理程序的基類是PAGE。此類定義了所有頁面處理程序所共享的方法和屬性的最小集合。PAGE類中實(shí)現(xiàn)IHTTPHANDLER接口。在某些情況下,實(shí)際處理程序的基類并非PAGE,而是一個(gè)不同的類。例如,如果使用了代碼隱藏,就會(huì)出現(xiàn)這種情況。代碼隱藏是一種開發(fā)方法,它將頁面所需的代碼封裝到一個(gè)單獨(dú)的C或MICROSOFTVISUALBASICNET類中。頁面的代碼就是一組事件處理程序和幫助器方法,用以7實(shí)際創(chuàng)建該頁面的行為??梢岳脴?biāo)記將這種代碼定義為內(nèi)聯(lián)代碼,或者也可將其放到一個(gè)外部類代碼隱藏類中。代碼隱藏類是一種繼承自PAGE的類,但這種類具有一些額外的方法因而比較特殊。如果指定,代碼隱藏類就用作HTTP處理程序的基類。還有一種情況,即當(dāng)應(yīng)用程序配置文件的部分中重新定義了PAGEBASETYPE屬性時(shí),HTTP處理程序也不是基于PAGE的。PAGEBASETYPE屬性指出了包含頁面處理程序的基類的類型以及程序集。派生自PAGE的這個(gè)類可自動(dòng)給處理程序賦予一組自定義和擴(kuò)展的方法和屬性。頁面生存周期一旦完全確定HTTP頁面處理程序類,ASPNET運(yùn)行時(shí)就調(diào)用該處理程序的PROCESSREQUEST方法以處理請(qǐng)求。通常情況下,無需更改此方法的實(shí)現(xiàn)方式,因?yàn)樗怯蒔AGE類提供的。此實(shí)現(xiàn)方法一開始就調(diào)用FRAMEWORKINITIALIZE方法,以此建立頁面的控件樹。此方法是TEMPLATECONTROL類(PAGE類本身就是從該類派生出來的)的一個(gè)受保護(hù)的虛擬成員。任何針對(duì)ASPX資源而動(dòng)態(tài)生成的處理程序都重寫FRAMEWORKINITIALIZE。在此方法中,該頁面的完整控件樹得以構(gòu)建。接下來,PROCESSREQUEST使該頁面經(jīng)歷若干階段初始化,加載視圖狀態(tài)信息和回發(fā)數(shù)據(jù),加載頁面的用戶代碼并執(zhí)行回發(fā)服務(wù)器端事件。隨后,該頁面進(jìn)入呈現(xiàn)模式收集更新后的視圖狀態(tài);生成HTML代碼然后將其發(fā)送到輸出控制臺(tái)。最后,卸載頁面,并認(rèn)為已完成對(duì)該請(qǐng)求的處理。在各個(gè)階段中,頁面都會(huì)激發(fā)一些WEB控件和用戶定義的代碼所能截獲并處理的事件。其中的一些事件是嵌入式控件專用的,因而并不能在ASPX代碼級(jí)進(jìn)行處理。如果頁面想要處理某個(gè)事件,它應(yīng)該顯式地注冊(cè)相應(yīng)的處理程序。然而,為了向后兼容早期的VISUALBASIC編程風(fēng)格,ASPNET也支持一種隱式的事件掛起形式。在默認(rèn)情況下,頁面將嘗試把特定的方法名與事件匹配起來;如果找到匹配的方法,就認(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)把這些方法與頁面事件綁定起來,這樣一來,開發(fā)人員就不必編寫所需的粘接代碼。例如,名為PAGE_LOAD的方法與頁面的LOAD事件綁定,就像已編寫以下代碼一樣。THISLOADNEWEVENTHANDLERTHISPAGE_LOAD這種自動(dòng)識(shí)別特殊名稱的功能由PAGE指令的AUTOEVENTWIREUP屬性控制。如果將該屬性設(shè)置為FALSE,則任何想要處理某個(gè)事件的應(yīng)用程序都需顯式地連接到該頁面事件。如果頁面不使用自動(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)的事件。頁面的執(zhí)行過程包括下面表格中所列的一系列階段,并以具有一些應(yīng)用程序級(jí)事件和/或受保護(hù)且可重寫的方法為特征。8表格1ASPNET頁面生存周期中的關(guān)鍵事件階段頁面事件可重寫方法頁面初始化INIT加載視圖狀態(tài)LOADVIEWSTATE處理回發(fā)數(shù)據(jù)實(shí)現(xiàn)IPOSTBACKDATAHANDLER接口的任何控件中的LOADPOSTDATA方法加載頁面LOAD回發(fā)更改通知實(shí)現(xiàn)IPOSTBACKDATAHANDLER接口的任何控件中的RAISEPOSTDATACHANGEDEVENT方法處理回發(fā)事件控件所定義的任何回發(fā)事件實(shí)現(xiàn)了IPOSTBACKEVENTHANDLER接口的任何控件的RAISEPOSTBACKEVENT方法頁面呈現(xiàn)前階段PRERENDER保存視圖狀態(tài)SAVEVIEWSTATE呈現(xiàn)頁面RENDER卸載頁面UNLOAD在頁面級(jí)上,以上所列的某些階段是不可見的,并僅影響服務(wù)器控件編寫者和那些湊巧要?jiǎng)?chuàng)建從PAGE派生的類的開發(fā)人員。頁面向外界發(fā)送的活動(dòng)信號(hào)僅包括INIT、LOAD、PRERENDER、UNLOAD以及嵌入式控件所定義的所有回發(fā)事件。執(zhí)行的各個(gè)階段頁面生存周期中的第一個(gè)階段是初始化。這一階段的標(biāo)志就是INIT事件,在成功創(chuàng)建頁面的控件樹后,對(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)信息可供使用。在初始化之后,頁面框架立即加載該頁面的視圖狀態(tài)。所謂視圖狀態(tài)就是一些名稱/值對(duì)的集合,控件和頁面本身可將那些對(duì)所有WEB請(qǐng)求都必須始終有效的任何信息存儲(chǔ)在其中。視圖狀態(tài)表示頁面的調(diào)用上下文。一般情況下,其中包含上次在服務(wù)器中處理該頁面時(shí)各控件的狀態(tài)。首次在會(huì)話中請(qǐng)求頁面時(shí),視圖狀態(tài)為空。在默認(rèn)情況下,視圖狀態(tài)被存儲(chǔ)在一個(gè)隱藏字段中,而該字段是自行添加到頁面中的。該字段名稱為_VIEWSTATE。通過重寫
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 民辦教育機(jī)構(gòu)2025年合規(guī)運(yùn)營(yíng)與品牌建設(shè)教育資源共享效益評(píng)估報(bào)告
- 2025年環(huán)保產(chǎn)業(yè)園區(qū)產(chǎn)業(yè)集聚與區(qū)域綠色產(chǎn)業(yè)協(xié)同發(fā)展啟示研究報(bào)告
- 2025年工業(yè)互聯(lián)網(wǎng)平臺(tái)自然語言處理技術(shù)在智能文本生成式翻譯系統(tǒng)中的應(yīng)用報(bào)告
- 2025年干細(xì)胞療法在阿爾茨海默病治療中的應(yīng)用進(jìn)展報(bào)告
- 2025年醫(yī)院電子病歷系統(tǒng)優(yōu)化構(gòu)建醫(yī)療大數(shù)據(jù)平臺(tái)報(bào)告
- 咨詢工程師基礎(chǔ)課件
- 2025年醫(yī)藥企業(yè)研發(fā)外包(CRO)模式下的臨床試驗(yàn)數(shù)據(jù)管理系統(tǒng)的功能與性能報(bào)告
- 2025年儲(chǔ)能技術(shù)多元化在儲(chǔ)能系統(tǒng)成本控制中的應(yīng)用報(bào)告
- 2025年醫(yī)藥流通供應(yīng)鏈優(yōu)化與成本控制技術(shù)革新報(bào)告
- 成人教育終身學(xué)習(xí)體系構(gòu)建與平臺(tái)運(yùn)營(yíng)中的在線教育平臺(tái)用戶活躍度研究報(bào)告
- 基于UHPC的蝶形腹板混凝土拱橋創(chuàng)新設(shè)計(jì)研究
- 口腔科針刺傷處理流程
- 互聯(lián)網(wǎng)居家護(hù)理服務(wù)匯報(bào)
- 臨時(shí)占地免責(zé)協(xié)議書
- 樹脂瓦施工方案
- 新疆維吾爾自治區(qū)2024年普通高校招生單列類(選考外語)本科二批次投檔情況 (理工)
- 中國(guó)冰雪運(yùn)動(dòng)產(chǎn)業(yè)趨勢(shì)洞察:雪破新局冰啟華章
- 檔案管理員實(shí)操能力考試題試題及答案
- 西學(xué)中結(jié)業(yè)考核復(fù)習(xí)試題含答案
- 2025年工會(huì)知識(shí)競(jìng)賽題庫(kù)200題及答案(完整版)
- 完整版高中古詩文必背72篇【原文+注音+翻譯】
評(píng)論
0/150
提交評(píng)論