在本章中,我們將討論整個MVC管道以及HTTP請求在ASP.NET中通過MVC框架時的生命過程。 在高層次上,生命周期就是用來處理某種類型的請求或改變應(yīng)用程序狀態(tài)的一系列步驟或事件。 您可能已經(jīng)熟悉了各種框架生命周期,這個概念并不是MVC獨(dú)有的。
例如,ASP.NET webforms平臺具有復(fù)雜的頁面生命周期。 其他.NET平臺,如Windows手機(jī)應(yīng)用程序,都有自己的應(yīng)用程序生命周期。 對于所有這些平臺而言,無論采用哪種技術(shù),都是如此,理解處理管道可以幫助您更好了解程序運(yùn)行的過程,以及利用可用的功能,而MVC也不例外。
MVC有兩個生命周期 -
應(yīng)用程序生命周期是指應(yīng)用程序?qū)嶋H開始運(yùn)行IIS的時間,直到停止。 這由應(yīng)用程序啟動文件中的應(yīng)用程序開始和結(jié)束事件標(biāo)記。
每當(dāng)HTTP請求由我們的應(yīng)用程序處理時,就是發(fā)生的事件序列。
每個MVC應(yīng)用程序的入口點都以路由開始。在ASP.NET平臺收到請求之后,它會找出如何通過URL路由模塊來處理它。
模塊是可以掛入應(yīng)用程序生命周期并添加功能的.NET組件。 路由模塊負(fù)責(zé)將傳入的URL與我們在應(yīng)用程序中定義的路由進(jìn)行匹配。
所有的路由都有一個關(guān)聯(lián)的路由處理器,這是MVC框架的入口點。
MVC框架處理將路由數(shù)據(jù)轉(zhuǎn)換為可處理請求的具體控制器??刂破鲃?chuàng)建完成后,下一個主要步驟是“Action Execution”。動作調(diào)用者的組件找到并選擇適當(dāng)?shù)?code>Action方法來調(diào)用控制器。
在動作結(jié)果準(zhǔn)備好之后,觸發(fā)下一個階段,即執(zhí)行結(jié)果。 MVC分離聲明執(zhí)行結(jié)果的結(jié)果。 如果結(jié)果是視圖類型,則視圖引擎將被調(diào)用,它負(fù)責(zé)查找和渲染視圖。
如果結(jié)果不是視圖,則操作結(jié)果將自行執(zhí)行。這個結(jié)果執(zhí)行是生成對原始HTTP請求的實際響應(yīng)。