鐵人賽完賽&總結 (第30天)

Agenda

完賽感想

這三十天無法對於MVC全部原始碼做詳細介紹,我盡量在這三十篇講述MVC執行過程中重要知識點,閱讀MVC原始碼真不是很簡單事情.

但閱讀完後我對於OOP和如何合理撰寫程式碼一個系統有更深入了解(因為MVC很多地方很好運用OOP概念原則)

希望大家經過閱讀這三十篇文章可以對於IIS託管和Asp.net MVC原理有更深入了解.

  1. Http對於IIS Server請求如何導向Asp.net MVC執行
  2. Asp.net MVC原始碼有基本了解和知道哪幾個重要類別,了解後能依照系統需要替換改寫.
  3. Asp.net MVC用到很多設計技巧,希望大家能更了解設計模式如何運用在實戰中
  4. 可以嘗試閱讀其他知名的開源框架(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.NetReadme.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 許可協議。轉載請註明出處!


如果本文對您幫助很大,可街口支付斗內鼓勵石頭^^