🚫 Ad Blocker Detected

Please disable your AD blocker to continue using this site. Ads help us keep the content free! please press keyboard F5 to refresh page after disabled AD blocker

請關閉廣告攔截器以繼續使用本網站。廣告有助於我們保證內容免費。謝謝! 關閉後請按 F5 刷新頁面

0%

Agenda

前言

前一篇介紹路由封裝了Http請求路徑資訊可以讓我們找到相對應的ActionController並呼叫執行外,也可透過MapPageRoute來將請求教給.aspx實體檔案來處理請求.

Route甚至可以讓我們自己客製化處理HttpHandler 在Route中建立處理客製化HttpHandler可謂很有彈性

本篇介紹Route物件建立MvcRouteHandler物件且如何取到IHttpHandler.

我有做一個可以針對於Asp.net MVC Debugger的專案,只要下中斷點就可輕易進入Asp.net MVC原始碼.

MVC取得使用HttpHandler (IHttpHandler)

之前說到我們透過MapRoute擴展方法加入一個Route物件給RouteCollection全域路由集合.

Route使用的IRouteHandler介面是由MvcRouteHandler來實現

Read more »

Agenda

前言

現在開始進入Asp.net MVC原始碼世界,我們從路由開始切入一步一步進入MVC核心.

我有做一個可以針對於Asp.net MVC Debugger的專案,只要下中斷點就可輕易進入Asp.net MVC原始碼.

如下面動畫

介紹Route

每個HTTP請求MVC使用路由的目標是ControllerAction,不像ASP.NET Web Form處理物理文件(.aspx文件),要執行ControllerAction名稱包含在HTTP請求中,ASP.NET MVC需要通過解析HTTP請求得到正確的ControllerAction的名稱。

使用Route處理物理文件有以下幾個優勢:

Read more »

Agenda

前言

現在開始進入Asp.net MVC原始碼世界,我們從路由開始切入一步一步進入MVC核心.

我有做一個可以針對於Asp.net MVC Debugger的專案,只要下中斷點就可輕易進入Asp.net MVC原始碼.

如下面動畫

介紹Route

每個HTTP請求MVC使用路由的目標是ControllerAction,不像ASP.NET Web Form處理物理文件(.aspx文件),要執行ControllerAction名稱包含在HTTP請求中,ASP.NET MVC需要通過解析HTTP請求得到正確的ControllerAction的名稱。

使用Route處理物理文件有以下幾個優勢:

Read more »

Agenda

前言:

前面幾篇文章已經詳細分享解說Asp.net如何透過HttpApplication找到IHttpHandler並執行呼叫介面方法.

瀏覽器請求IIS流程

今天要跟大家分享上圖的最後一塊拼圖揭密並探索Asp.net MVC使用的IHttpHandler.

UrlRoutingModule-4.0

在標題已經透漏我們是透過UrlRoutingModule這個繼承IHttpModule的類別來取得IHttpHandler

有人可能會有疑問是我明明沒有註冊此HttpModule Asp.net怎麼知道的呢?

原因是這個Module是預設就載入

Read more »

Agenda

前言:

前面幾篇文章已經詳細分享解說Asp.net如何透過HttpApplication找到IHttpHandler並執行呼叫介面方法.

瀏覽器請求IIS流程

今天要跟大家分享上圖的最後一塊拼圖揭密並探索Asp.net MVC使用的IHttpHandler.

UrlRoutingModule-4.0

在標題已經透漏我們是透過UrlRoutingModule這個繼承IHttpModule的類別來取得IHttpHandler

有人可能會有疑問是我明明沒有註冊此HttpModule Asp.net怎麼知道的呢?

原因是這個Module是預設就載入

Read more »

Agenda

前言

前面和大家分享StepManager是如何建立管道和依序呼叫IHttpModule註冊事件

查看原始碼好站 Reference Source

此文的程式碼比較多我會在原始碼上邊上說明相對應編號方便大家觀看

今天跟大家分享HttpAppliaction是如何找到要執行的IHttpHandler物件.

呼叫HttpAppliaction取得HttpHandler並呼叫

ApplicationStepManagerIExecutionStep中重要的實現類別有兩個

  1. MapHandlerExecutionStep:找到執行IHttpHander
  2. CallHandlerExecutionStep
Read more »

Agenda

前言

前面和大家分享StepManager是如何建立管道和依序呼叫IHttpModule註冊事件

查看原始碼好站 Reference Source

此文的程式碼比較多我會在原始碼上邊上說明相對應編號方便大家觀看

今天跟大家分享HttpAppliaction是如何找到要執行的IHttpHandler物件.

呼叫HttpAppliaction取得HttpHandler並呼叫

ApplicationStepManagerIExecutionStep中重要的實現類別有兩個

  1. MapHandlerExecutionStep:找到執行IHttpHander
  2. CallHandlerExecutionStep
Read more »

Agenda

前言

前面有提到InitInternal方法,是如何載入註冊HttpModule並呼叫Init方法,經典模式和管道模式比較.

查看原始碼好站 Reference Source
此文的程式碼比較多我會在原始碼上邊上說明相對應編號方便大家觀看

今天跟大家介紹StepManager是如何建立管道和依序呼叫IHttpModule註冊事件

ApplicationStepManager

這部分可說是Asp.net最核心部分,利用Event事件和AOP概念,讓Asp.net可以擁有高度的可擴展性.

BuildSteps 建置Pipleline流程

BuildSteps最主要透過CreateEventExecutionSteps方法,把所有Applicationevent註冊添加到steps集合中方便後面依照順序去呼叫使用.

Read more »

Agenda

前言

前面有提到InitInternal方法,是如何載入註冊HttpModule並呼叫Init方法,經典模式和管道模式比較.

查看原始碼好站 Reference Source
此文的程式碼比較多我會在原始碼上邊上說明相對應編號方便大家觀看

今天跟大家介紹StepManager是如何建立管道和依序呼叫IHttpModule註冊事件

ApplicationStepManager

這部分可說是Asp.net最核心部分,利用Event事件和AOP概念,讓Asp.net可以擁有高度的可擴展性.

BuildSteps 建置Pipleline流程

BuildSteps最主要透過CreateEventExecutionSteps方法,把所有Applicationevent註冊添加到steps集合中方便後面依照順序去呼叫使用.

Read more »

Agenda

前言:

附上Asp.net執行請求流程圖.

瀏覽器請求IIS流程

上一篇文章分享HttpApplicationFactory.GetApplicationInstance方法返回一個HttpApplicationHttpRuntime來呼叫使用.

今天開始介紹HttpApplication這個很重要的類別,它可謂是我們Asp.net中很複雜但重要的類別

Global.cs是繼承HttpApplication類別,但為什麼需要繼承這個類別呢? 讓我們繼續看下去.

查看原始碼好站 Reference Source
此文的程式碼比較多我會在原始碼上邊上說明相對應編號方便大家觀看

初始化HttpApplication (InitInternal)

Read more »