前言:最近一段時(shí)間在學(xué)習(xí)MVC源碼,說(shuō)實(shí)話,研讀源碼真是一個(gè)痛苦的過(guò)程,好多晦澀的語(yǔ)法搞得人暈暈乎乎。這兩天算是理解了一小部分,這里先記錄下來(lái),也給需要的園友一個(gè)參考,奈何博主技術(shù)有限,如有理解不妥之處,還希望大家斧正,博主感激不盡!

本文原創(chuàng)地址:http://www.cnblogs.com/landeanfen/p/5989092.html

一、MVC原理解析

 最近園子里Asp.Net Core火了一陣,不管微軟的開(kāi)源動(dòng)作有多么遲緩,還是希望微軟能夠給力一次。作為Core的主要Web框架——MVC,雖然已經(jīng)開(kāi)源,但是讀起來(lái)著實(shí)費(fèi)勁,并且感覺(jué)很多核心部件都找不到。于是只能通過(guò)Reflector去反編譯MVC5的組件以及參考博客園Fish Li等大神的文章去學(xué)習(xí)下MVC5的原理。

10月26日更新:感謝園友Adming在評(píng)論中提醒,原來(lái)Asp.net Core Mvc和Asp.net Mvc 5的原理已經(jīng)完全不同,難怪在Core Mvc的源碼里面已經(jīng)找不到MvcHandler、UrlRoutingModule等核心部件了呢,此系列文章就先學(xué)習(xí)下MVC5的原理,等以后有空了再來(lái)研究Core MVC吧。

Asp.Net Core MVC的開(kāi)源地址:https://github.com/aspnet/Mvc

Asp.net MVC的開(kāi)源地址:http://aspnetwebstack.codeplex.com/SourceControl/latest

1、MVC原理

之前的文章有介紹MVC的路由機(jī)制,其實(shí)路由機(jī)制算是MVC的原理的核心之一。在此我們還是要不厭其煩再來(lái)談?wù)務(wù)麄€(gè)過(guò)程,因?yàn)檫@是理解MVC原理不可逾越的鴻溝。當(dāng)我們收到一個(gè)URL的請(qǐng)求時(shí),服務(wù)端收到請(qǐng)求,主要經(jīng)歷以下幾個(gè)步驟:

  1. 請(qǐng)求被UrlRoutingModule部件攔截
  2. 封裝請(qǐng)求上下文HttpContext,成為HttpContextWrapper對(duì)象。
  3. 根據(jù)當(dāng)前的HttpContext,從Routes集合中得到與當(dāng)前請(qǐng)求URL相符合的RouteData對(duì)象。
  4. RouteData與<

    網(wǎng)友評(píng)論