這系列文章是參考了.NET Core文檔和源碼,可能有人要問(wèn),直接看官方的英文文檔不就可以了嗎,為什么還要寫(xiě)這些文章呢?
原因如下:
- 官方文檔涉及的內(nèi)容相當(dāng)全面,屬于那種大而全的知識(shí)倉(cāng)庫(kù),不太適合初學(xué)者,很容易讓人失去重要,讓人掉入到具體的細(xì)節(jié)之中。
- 對(duì)于大多數(shù)人來(lái)講開(kāi)發(fā)語(yǔ)言只是工具,程序員都有一個(gè)通病,就是死磕工具,把工具學(xué)深。我認(rèn)為在工具上沒(méi)有必要投入太多時(shí)間,以能高效地完成日常的工作項(xiàng)目為準(zhǔn)即可。要需求驅(qū)動(dòng)學(xué)習(xí),你需要什么學(xué)什么。如果你學(xué)的新技術(shù)新特性只是屠龍之技或者只需要用到的時(shí)候去查一下即可的話(huà),這種死磕這又有什么用。沒(méi)有必要花120%的時(shí)間去學(xué)100%的知識(shí),你只需要花20%的時(shí)間去學(xué)習(xí)80%的知識(shí)就可以了,剩下的等實(shí)際的項(xiàng)目中用到的時(shí)候去查就可以了,工具只是工具,不是工作本身。
- 目前基本所有的文章都是基于Windows平臺(tái)的Visual Studio IDE來(lái)介紹的。而我用的是一臺(tái)Mac,所以我將基于Mac平臺(tái)的Visual Studio Code講解適合我們實(shí)際項(xiàng)目中遇到的知識(shí)。
- 還有一點(diǎn),就是這是我個(gè)人的學(xué)習(xí)總結(jié)。
這系列文章就是讓你去花20%的時(shí)間去學(xué)80%的東西,剩下的20%再去看官方文檔。
之前介紹了《如何在Mac下運(yùn)行ASP.NET Core應(yīng)用程序》,主要是講解了如何在Mac下把ASP.NET Core跑起來(lái),在這一篇中將進(jìn)一步分析如何添加Controller、View、Model等。
Model-View-Controller (MVC)架構(gòu)模式將一個(gè)應(yīng)用程序分成了三大塊:Model、View、Controller。
- Models: 用于表示應(yīng)用程序數(shù)據(jù)的類(lèi),并使用驗(yàn)證邏輯來(lái)約束數(shù)據(jù)的業(yè)務(wù)規(guī)則。通常模型對(duì)象用來(lái)從數(shù)據(jù)庫(kù)獲取和存儲(chǔ)實(shí)體模型數(shù)據(jù)。比如User Model 從數(shù)據(jù)庫(kù)獲取用戶(hù)數(shù)據(jù),并將它交給View來(lái)顯示或者直接更新,更新后的數(shù)據(jù)再寫(xiě)入到數(shù)據(jù)庫(kù)中。
- Views: 用來(lái)顯示應(yīng)用程序UI的組件,該UI會(huì)顯示Model數(shù)據(jù)。
- Controllers: 是Models和Views的一個(gè)橋梁。用來(lái)處理瀏覽器請(qǐng)求,獲取Model數(shù)據(jù),并將指定視圖模板作為響應(yīng)返回給瀏覽器。視圖(View)僅僅用于顯示信息,控制器(Controller)用于處理并響應(yīng)用戶(hù)的輸入和交互。比如,Controller處理路由數(shù)據(jù)查詢(xún)字符串值,并將這些值傳遞給Model,Model再去使用這些值去查詢(xún)數(shù)據(jù)庫(kù)。
MVC模式幫助你創(chuàng)建一個(gè)關(guān)注分離的應(yīng)用程序(輸入邏輯、業(yè)務(wù)邏輯、UI邏輯),同時(shí)這個(gè)模塊之間是松耦合的。UI邏輯屬于View,輸入邏輯屬于Controller,業(yè)務(wù)邏輯屬于Model。
添加Controller
namespace M