Agenda
完賽感想
這三十天無法對於MVC全部原始碼做詳細介紹,我盡量在這三十篇講述MVC執行過程中重要知識點,閱讀MVC原始碼真不是很簡單事情.
但閱讀完後我對於OOP和如何合理撰寫程式碼一個系統有更深入了解(因為MVC很多地方很好運用OOP概念原則)
希望大家經過閱讀這三十篇文章可以對於IIS託管和Asp.net MVC原理有更深入了解.
Http
對於IIS Server
請求如何導向Asp.net MVC
執行Asp.net MVC
原始碼有基本了解和知道哪幾個重要類別,了解後能依照系統需要替換改寫.Asp.net MVC
用到很多設計技巧,希望大家能更了解設計模式如何運用在實戰中- 可以嘗試閱讀其他知名的開源框架(
Dapper
,AutoMapper
,Autofac
,Json.net
…..)
如果想要了解
Dapper
原理讀者我推薦去閱讀,我隊友暐翰
系列文章進階學習 ADO.NET、Dapper、Entity Framework 系列寫得很詳細且有影片教學大推!!
感謝這次的夥伴 [IT成長團]
感謝這次可以跟IT成長團的大家一起參與並完成It邦幫忙鐵人活動.
這三十天大家一起鼓勵,互相叮嚀鼓勵.這種感覺真的很棒 :)
下面是隊友們寫的優質系列文章,推薦大家一同去閱讀.
小魚 :Laravel從入門到放棄…………原生PHP (疑?
暐翰 :進階學習 ADO.NET、Dapper、Entity Framework
Peter學程式 :超緊繃!30天Vue.js學習日記
神Q超人 :在 React 生態圈內打滾的一年 feat. TypeScript
Victor :使用 Laravel 打造 RESTful API
希望明年還有機會可以跟大家一起在參加鐵人賽衝一波,寫文章.
學習到新知識 (Expression表達式)
以前碰到動態建立物件或動作,我都是使用反射技巧來完成,透過了解ActionMethodDispatcher
類別原始碼探討為何MVC不使用反射卻,而使用Expression
表達式完成動態呼叫需求.
查了資料進而了解到Expression
表達式用法且他想解決的問題,對於未來有多了一項武器可以運用.
設計模式運用在實戰中
設計模式不是紙上談兵,某些問題會使用某些方法來解決.
筆者對於設計模式也略有研究,對於DesignPattern有一個
Repository
做介紹,陸陸續續會補上我對於Design Pattern
在現實生活上理解
MVC使用的許多設計模式和技巧,使用這些模式為了可讓程式變得好理解有意義
商業邏輯讓程式變複雜是必然,我們能做的是讓程式碼變得不會太難理解可以更好擴充
每個設計模式都有適合使用場景.
工廠模式
: 將使用動作和產生物件做一個區隔(依賴一個抽象).代理模式
: 提供一個代理人不用對於原有程式碼進行修改(AOP
就是利用此模式概念)裝飾者模式
: 適合在需要一直改變物件狀態的情境建立者模式
: 提供一個建立管道讓使用的提供要建立物件,最後可透過此模式來方便替換
還有許多模式就不一一介紹
像我很久之前就學過組合模式,只是對於此模式運用場景一直找不到.
直到看到複雜模型和簡單模型綁定如何將組合模式運用在實戰中.
透過MVC某區塊概念,引發建立開源專案想法
筆者看完Filter
機制後就有感而發,這麼好用的方式可否運用在Service
或其他地方(非Asp.net MVC
,Web API
區域).
我就依照上面標籤概念建立一個AwesomeProxy.NetAOP框架基於RealProxy
這個物件.
想知道詳細資訊的讀者可自行查閱AwesomeProxy.Net
的Readme.md
.
看完三十篇分享文後,希望台灣會有越來越多大大投入開源社群,我個人感觸是投入社群後我觸碰,接觸事物比我想想遠遠多很多.
文章目錄
此系列文分成三大部分
01 ~ 08 Day 介紹Http請求到MVC前Asp.net做了些什麼事情
[Day01] (開賽)Http 請求 Asp.net IIS伺服器架構
[Day02] Asp.Net支柱 IHttpMoudle & IHttphandler
[Day03] 啟動吧!Asp.Net IsapiRunTime & HttpRuntime
[Day04] 掌控HttpApplication物件建立 - HttpApplicationFactory
[Day05] Asp.Net重要物件HttpApplication(一) 初始化建立IHttpMoudule
[Day06] Asp.Net重要物件HttpApplication(二) 建置執行管道
[Day07] Asp.Net重要物件HttpApplication(三) 取得執行的IHttpHandler
[Day08] 揭密Mvc使用IHttpHandler by UrlRoutingModule-4.0
09 ~ 25 Day 介紹MVC原始碼
[Day09] 進入MVC原始碼世界 Route & RouteTable 原始碼解析
[Day10] 透過MvcRouteHandler取得呼叫IHttphandler
[Day11] Asp.net MVC Controller是怎麼被建立(原始碼揭密)
[Day12] 談談Controller幾個重要成員
[Day13] Asp.net MVC如何實現IOC解析器
[Day14] 反轉起來~透過IOC解析來執行依賴反轉
[Day15] Action方法如何被執行InvokeAction(一)
[Day16] MVC Filter 機制解密
[Day17] Action方法如何被執行InvokeAction(二)
[Day18] 提供ModelBing幾個重要功臣(Model)
[Day19] Http參數如何綁定到Action參數上(簡單和複雜模型綁定探討)
[Day20] 探討Model上客製化標籤如何被解析使用
[Day21] Model 探討驗證標籤(ValidationAttribute)
[Day22] View是如何被建立(一)
[Day23] 6個基本(ActionResult) View是如何被建立(二)
[Day24] 探討ViewEngine機制 View是如何被建立(三)
[Day25] 動態產生程式碼(WebViewPage) View是如何被建立(四)
26 ~ 29 Day 對於MVC進行擴充改造
[Day26] 動手DIY改造 Asp.net MVC- Route解析機制
[Day27] 動手DIY改造 Asp.net MVC- 自己動作建立一個DependencyResolver解析器(Autofac)
[Day28] 動手DIY改造 Asp.net MVC- 建立自己ActionInvoker和Model綁定機制
[Day29] 動手DIY改造 Asp.net MVC- 擴充在擴充,強化WebViewPage製作多國貨幣機制
此文作者:Daniel Shih(石頭)
此文地址: https://isdaniel.github.io/ithelp-day30/
版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 3.0 TW 許可協議。轉載請註明出處!