🚫 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%

鐵人賽完賽&總結 (第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邦幫忙鐵人活動.

這三十天大家一起鼓勵,互相叮嚀鼓勵.這種感覺真的很棒 :)

下面是隊友們寫的優質系列文章,推薦大家一同去閱讀.

希望明年還有機會可以跟大家一起在參加鐵人賽衝一波,寫文章.

學習到新知識 (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 許可協議。轉載請註明出處!

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