城市公交查詢系統(tǒng)畢業(yè)設(shè)計 外文翻譯_第1頁
城市公交查詢系統(tǒng)畢業(yè)設(shè)計 外文翻譯_第2頁
城市公交查詢系統(tǒng)畢業(yè)設(shè)計 外文翻譯_第3頁
城市公交查詢系統(tǒng)畢業(yè)設(shè)計 外文翻譯_第4頁
城市公交查詢系統(tǒng)畢業(yè)設(shè)計 外文翻譯_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

外文翻譯城市公交查詢系統(tǒng)的設(shè)計與實現(xiàn)城市公交查詢系統(tǒng)的設(shè)計與實現(xiàn)城市公交查詢系統(tǒng)的設(shè)計與實現(xiàn)城市公交查詢系統(tǒng)的設(shè)計與實現(xiàn)學生姓名指導教師副教授合作指導教師專業(yè)名稱計算機科學與技術(shù)所在學院水產(chǎn)學院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頁面對象模型摘要了解圍繞ASPNETWEB頁構(gòu)建的事件模型,以及一個WEB頁面在其轉(zhuǎn)變?yōu)镠TML的歷程中的各個階段。ASPNETHTTP運行時控制對象管線,對象管線首先將所請求的URL轉(zhuǎn)換為一個頁面類的活動實例,然后將其轉(zhuǎn)換為普通HTML文本。本文將探討一個頁面的生存周期中的各個特征事件,并了解控件和頁面編寫者如何介入其中以改變其標準行為。簡介MICROSOFTINTERNET信息服務(wù)IIS所收到的對某MICROSOFTASPNET頁面的每個請求都被移交給ASPNETHTTP管線。HTTP管線由一系列托管對象組成,這些對象按順序處理該請求,并完成從URL到普通HTML文本的轉(zhuǎn)換。HTTP管線的入口點是HTTPRUNTIME類。ASPNET基礎(chǔ)結(jié)構(gòu)為輔助進程中所承載的每個APPDOMAIN創(chuàng)建此類的一個實例(請注意,該輔助進程為當前正在運行的每個ASPNET應(yīng)用程序維護一個不同的APPDOMAIN)。HTTPRUNTIME類從內(nèi)部池中選取一個HTTPAPPLICATION對象,并讓其處理該請求。HTTP應(yīng)用程序管理器所完成的主要任務(wù)就是找出將實際處理該請求的類。如果請求ASPX資源,則處理程序就是一個頁面處理程序即某個繼承自PAGE的類的一個實例。資源類型和處理程序類型之間的關(guān)聯(lián)關(guān)系存儲于該應(yīng)用程序的配置文件中。更準確地說,在MACHINECONFIG文件的部分中定義默認的一組映射關(guān)系。然而,應(yīng)用程序也可以在本地的WEBCONFIG文件中自定義自己的HTTP處理程序列表。下面的程序行舉例說明了定義用于ASPX資源的HTTP處理程序的代碼。擴展名可關(guān)聯(lián)到一個處理程序類,或者更普遍地關(guān)聯(lián)到一個處理程序工廠HANDLERFACTORY類。在所有情況下,負責處理請求的HTTPAPPLICATION對象都會獲得一個實現(xiàn)IHTTPHANDLER接口的對象。如果根據(jù)HTTP處理程序來解析關(guān)聯(lián)資源/類,那么所返回的類將直接實現(xiàn)該接口。如果資源綁定到處理程序工廠,則需要另外一個步驟。處理程序工廠類實現(xiàn)IHTTPHANDLERFACTORY接口,而該接口的GETHANDLER方法返回一個基于IHTTPHANDLER的對象。HTTP運行時如何能完成整個循環(huán)并處理頁面請求呢IHTTPHANDLER接口特別提供了PROCESSREQUEST方法。通過對代表所請求頁面的對象調(diào)用此方法,ASPNET基礎(chǔ)結(jié)構(gòu)啟動相應(yīng)過程,從而針對瀏覽器生成輸出。真正的PAGE類特定頁面的HTTP處理程序類型取決于URL。當首次調(diào)用URL時,將構(gòu)建一個新類并將該類動態(tài)地編譯成一個程序集。用于檢查ASPX來源的語法分析過程的輸出結(jié)果就是該類的源代碼。該類被定義為ASP命名空間的一部分,并被賦予一個與原始URL相似的名稱。例如,如果URL終結(jié)點是PAGEASPX,則類名稱為ASPPAGE_ASPX。但是,也可通過編程設(shè)置PAGE指令的CLASSNAME屬性來控制類的名稱。HTTP處理程序的基類是PAGE。此類定義了所有頁面處理程序所共享的方法和屬性的最小集合。PAGE類中實現(xiàn)IHTTPHANDLER接口。在某些情況下,實際處理程序的基類并非PAGE,而是一個不同的類。例如,如果使用了代碼隱藏,就會出現(xiàn)這種情況。代碼隱藏是一種開發(fā)方法,它將頁面所需的代碼封裝到一個單獨的C或MICROSOFTVISUALBASICNET類中。頁面的代碼就是一組事件處理程序和幫助器方法,用以7實際創(chuàng)建該頁面的行為。可以利用標記將這種代碼定義為內(nèi)聯(lián)代碼,或者也可將其放到一個外部類代碼隱藏類中。代碼隱藏類是一種繼承自PAGE的類,但這種類具有一些額外的方法因而比較特殊。如果指定,代碼隱藏類就用作HTTP處理程序的基類。還有一種情況,即當應(yīng)用程序配置文件的部分中重新定義了PAGEBASETYPE屬性時,HTTP處理程序也不是基于PAGE的。PAGEBASETYPE屬性指出了包含頁面處理程序的基類的類型以及程序集。派生自PAGE的這個類可自動給處理程序賦予一組自定義和擴展的方法和屬性。頁面生存周期一旦完全確定HTTP頁面處理程序類,ASPNET運行時就調(diào)用該處理程序的PROCESSREQUEST方法以處理請求。通常情況下,無需更改此方法的實現(xiàn)方式,因為它是由PAGE類提供的。此實現(xiàn)方法一開始就調(diào)用FRAMEWORKINITIALIZE方法,以此建立頁面的控件樹。此方法是TEMPLATECONTROL類(PAGE類本身就是從該類派生出來的)的一個受保護的虛擬成員。任何針對ASPX資源而動態(tài)生成的處理程序都重寫FRAMEWORKINITIALIZE。在此方法中,該頁面的完整控件樹得以構(gòu)建。接下來,PROCESSREQUEST使該頁面經(jīng)歷若干階段初始化,加載視圖狀態(tài)信息和回發(fā)數(shù)據(jù),加載頁面的用戶代碼并執(zhí)行回發(fā)服務(wù)器端事件。隨后,該頁面進入呈現(xiàn)模式收集更新后的視圖狀態(tài);生成HTML代碼然后將其發(fā)送到輸出控制臺。最后,卸載頁面,并認為已完成對該請求的處理。在各個階段中,頁面都會激發(fā)一些WEB控件和用戶定義的代碼所能截獲并處理的事件。其中的一些事件是嵌入式控件專用的,因而并不能在ASPX代碼級進行處理。如果頁面想要處理某個事件,它應(yīng)該顯式地注冊相應(yīng)的處理程序。然而,為了向后兼容早期的VISUALBASIC編程風格,ASPNET也支持一種隱式的事件掛起形式。在默認情況下,頁面將嘗試把特定的方法名與事件匹配起來;如果找到匹配的方法,就認為該方法是該事件的處理程序。ASPNET提供了六個方法名的特定識別。它們是PAGE_INIT、PAGE_LOAD、PAGE_DATABIND、PAGE_PRERENDER和PAGE_UNLOAD。這些方法被當作是PAGE類所提供的相應(yīng)事件的處理程序。HTTP運行時將自動把這些方法與頁面事件綁定起來,這樣一來,開發(fā)人員就不必編寫所需的粘接代碼。例如,名為PAGE_LOAD的方法與頁面的LOAD事件綁定,就像已編寫以下代碼一樣。THISLOADNEWEVENTHANDLERTHISPAGE_LOAD這種自動識別特殊名稱的功能由PAGE指令的AUTOEVENTWIREUP屬性控制。如果將該屬性設(shè)置為FALSE,則任何想要處理某個事件的應(yīng)用程序都需顯式地連接到該頁面事件。如果頁面不使用自動事件關(guān)聯(lián)功能,就不必進行額外的操作以匹配各名稱和事件,從而其性能也稍有提升。應(yīng)該注意的是,所有的MICROSOFTVISUALSTUDIONET項目在創(chuàng)建時都禁用了AUTOEVENTWIREUP屬性。然而,此屬性的默認設(shè)置為TRUE,意味著諸如PAGE_LOAD等方法會被識別并被綁定到相關(guān)的事件。頁面的執(zhí)行過程包括下面表格中所列的一系列階段,并以具有一些應(yīng)用程序級事件和/或受保護且可重寫的方法為特征。8表格1ASPNET頁面生存周期中的關(guān)鍵事件階段頁面事件可重寫方法頁面初始化INIT加載視圖狀態(tài)LOADVIEWSTATE處理回發(fā)數(shù)據(jù)實現(xiàn)IPOSTBACKDATAHANDLER接口的任何控件中的LOADPOSTDATA方法加載頁面LOAD回發(fā)更改通知實現(xiàn)IPOSTBACKDATAHANDLER接口的任何控件中的RAISEPOSTDATACHANGEDEVENT方法處理回發(fā)事件控件所定義的任何回發(fā)事件實現(xiàn)了IPOSTBACKEVENTHANDLER接口的任何控件的RAISEPOSTBACKEVENT方法頁面呈現(xiàn)前階段PRERENDER保存視圖狀態(tài)SAVEVIEWSTATE呈現(xiàn)頁面RENDER卸載頁面UNLOAD在頁面級上,以上所列的某些階段是不可見的,并僅影響服務(wù)器控件編寫者和那些湊巧要創(chuàng)建從PAGE派生的類的開發(fā)人員。頁面向外界發(fā)送的活動信號僅包括INIT、LOAD、PRERENDER、UNLOAD以及嵌入式控件所定義的所有回發(fā)事件。執(zhí)行的各個階段頁面生存周期中的第一個階段是初始化。這一階段的標志就是INIT事件,在成功創(chuàng)建頁面的控件樹后,對應(yīng)用程序激發(fā)這個事件。換而言之,當INIT事件發(fā)生時,在ASPX源文件中靜態(tài)聲明的所有控件都已實例化并取其默認值。控件可掛起INIT事件,以便初始化在傳入的WEB請求的生存周期中所需的任何設(shè)置。例如,此時控件可以加載外部模板文件或設(shè)置各個事件的處理程序。應(yīng)該注意到,這時還沒有視圖狀態(tài)信息可供使用。在初始化之后,頁面框架立即加載該頁面的視圖狀態(tài)。所謂視圖狀態(tài)就是一些名稱/值對的集合,控件和頁面本身可將那些對所有WEB請求都必須始終有效的任何信息存儲在其中。視圖狀態(tài)表示頁面的調(diào)用上下文。一般情況下,其中包含上次在服務(wù)器中處理該頁面時各控件的狀態(tài)。首次在會話中請求頁面時,視圖狀態(tài)為空。在默認情況下,視圖狀態(tài)被存儲在一個隱藏字段中,而該字段是自行添加到頁面中的。該字段名稱為_VIEWSTATE。通過重寫

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論