MVC路由器原理

2021-09-24 04:45:28 字數 2324 閱讀 7460

目錄

1、什麼是路由

2、路由的註冊

3、url的模式匹配

4、由url到控制器

舉例什麼是路由?假如你在上大學的時候,睡覺起晚了,醒來後發現宿舍同學都**了,你想到上午還有課,但是不記得去哪個教室去上了,這時候你會查下課程表,然後就知道去哪個教室上課了。這個課程表就是你的路由。

網路中的路由器,路由器主要是在網路中做資料**,連線internet各個區域網和廣域網,讓他們互通,當我們開啟乙個瀏覽器訪問網頁的時候,請求的資料報要到達乙個遠端的伺服器要經過路由器的層層**。

在asp.net mvc中,路由有相似的作用,路由就是將輸入的網頁位址和控制器以及控制器的動作聯絡起來。

registerroutes方法就是註冊路由的方法。

方法引數 routecollection是乙個集合物件,這個集合物件用來儲存多項路由資料,一項路由資料就是某種形式的url路徑、和控制器以及action的關係。根據這個關係,mvc才能執行到控制器部分。

那麼怎麼才能新增這種路由資料呢?

就是呼叫 routes.maproute方法。

第乙個引數是 路由名稱。

第二個引數是用引數表示的url。

第三個引數是預設值,是匿名型別。

第乙個引數路由名稱,類似於字典中的key

第二個是用佔位符表示的url,如這樣的位址

news就是 ,detail就是,1就是

學生有兩個問題:

url中的引數字串是可以隨便寫嗎,還是有什麼限制?

第三個引數裡面的屬性名和url的引數字串有什麼關係嗎?

首先第二個引數url佔位符的字串是可以隨便定義的,比如下面

但是在mvc中,我們用的url還是這種形式

那麼我們可以改裡面的字串值嗎,比如講controller改為control,把action改為actioned,我們可以直接的告訴大家,這是不可以的。

mvc框架中會從字典中讀取鍵值名是controll的資料,比如這裡的值是home,然後mvc得到需要執行的控制器是homecontroller

當然,同樣是從字典中讀取鍵值名是action的資料,比如這裡的值是index,然後mvc得到需要執行的action是index方法

如果這兩個字串寫錯的話,**就執行不到相應的控制器和裡面的action了,所以我們一定注意,寫成 //是一種約定。

關於這個過程,我們會在後面剖析mvc的原始碼會有更深刻的理解。

我們知道,通過前面的路由註冊**,會最終形成乙個路由的集合資料,我們可以把它簡單的看成乙個路由表。

那麼通過這個路由表,程式是怎麼從url進入到控制器(controller)和動作(action)的呢?

我們通過乙個流程來看一下。

請求到達mvc程式後,首先會經過 urlroutingmodule,他可以過濾每乙個請求,他會根據請求的url從路由表中查詢與url匹配的路由,然後從匹配的路由中得到乙個名稱mvchandler的httphandler。

httphandler的作用就不用多說了,她就是乙個處理程式,asp.net頁面實際也是乙個處理程式。

得到了mvchandler這個處理程式,就執行他的processrequest()方法,在這個方法內部,找到controller,然後繼續往下執行。

路由器工作原理

路由原理 當ip子網中的一台主機傳送ip分組給同一ip子網的另一台主機時,它將直接把ip分組送到網路上,對方就能收到。而要送給不同ip於網上的主機時,它要選擇乙個能到達目的子網上的路由器,把ip分組送給該路由器,由路由器負責把ip分組送到目的地。如果沒有找到這樣的路由器,主機就把ip分組送給乙個稱為...

路由器原理(一)

覺得之前對路由器的了解還不是特別清楚,繼續來學習,是參考了路由器的原理及其配置 一 一 路由器的基礎知識 1 路由器的概述 作為網路層的網路互連裝置路由器在網路互連中起到了不可或缺的作用。與物理層或資料鏈路層的網路互連裝置相比,其具有一些物理層或資料鏈路層的網路互連裝置所沒有的重要功能。它能實現異構...

路由器協議原理

目標 路由協議原理 路由型別 基本配置方法 路由型別 直連路由 開銷小,配置簡單,無需人工維護。只能發現本介面所屬網段的路由 成立條件 1 路由器介面配置ip位址 2 該介面物理層和鏈路層狀態為up 3 該介面所屬網段直連路由成立 靜態路由 無開銷,配置簡單,需人工維護,適合簡單拓撲結構網路 基礎配...