寫在開始學習 ASP.NET MVC 之前

ASP.NET MVC 牽涉前端與後端兩個部份,如果只是要建立簡單的 Web 應用,要瞭解的技術項目其實並不算太過複雜,以下列舉至其中必須瞭解的基礎技術項目。
  • 前端:HTML/JavaScript/CSS
  • 後端:C#物件導向技術/LINQ/Entity Framework
  • 資料庫技術:SQL語法,關聯式資料庫系統(SQL Server)
ASP.NET MVC 入門階段需搭配的前端技術比較單純,只需瞭解上述列舉的HTML、CSS與JavaScript即可,甚至在限制功能的情形下,我們可以僅利用 ASP.NET MVC Razor 功能語法建構網頁內容,不需太深入的前端基礎。

關於 HTML/JavaScript/CSS 的部份,歡迎參考《前端開發完全入門》

當Web應用朝向大規模商業應用發展,功能需求會變得相當複雜,沒有具備良好的前端技術要想順利建構這一類的應用幾乎是不可能的事,因此在進入開發實作之前,具備足夠的前端技術基礎非常重要。

除此之外,瞭解網路的 Client-Server 架構,具備 Request-Response 運作概念是必要的。

後端的部份,基本上就是 ASP.NET MVC 整個開發系統,真正的根基無非就是 C# 這個程式語言,學好 C#,接下來運用 ASP.NET MVC 幾乎就不會有太大的障礙。

C#發展到目前已經相當龐大,除了必備的基本語法,至少必須瞭解物件導向設計理論的封裝、繼承與多型,另外亦須熟悉支援資料物件集合查詢操作的LINQ,這是 C# 內建語法非常重要的一部份。

ASP.NET MVC 是一個發展Web應用的技術框架,套用它的框架規則,利用C#撰寫程式邏輯,就能開發以MVC架構為基礎的網站。

至於 Entity Frameowk 則是 ASP.NET MVC與資料庫溝通的主要技術,這是讓網站能夠存取資料必要的核心技術,也是必備的技術能力之一。

關於 Entity Frameowk 的部份,歡迎參考《Entity Framework 實務精要》

最後你還需瞭解資料庫技術,至少一種關聯式資料庫,比較單純的就直接採用Visual Studio內建的 SQL Server 即可,而要操作資料庫,不可省的就是SQL語法,學會基礎的SQL非常重要。

ASP.NET MVC的學習課程,將專注在ASP.NET MVC的討論,針對上述提及的技術項目,我們預設讀者學員均已具備足夠的基礎,不再個別解說。

本文提及的 前端與Entity Framework 入門技術除了書籍,今年底預計將開放付費線上課程,協助讀者學員建立厚實基礎,穩紮穩打的升級 ASP.NET MVC ,有學習需求的技術人員請密切注意。:)



》更進一步的技術細節


ASP.NET MVC 本身支援 Visual Basic 與 C# ,不過在新世代的 ASP.NET 版本 Core 當中,Visual Basic 並不在支援名單中,因此還是建議使用 C# 進行學習,沒有這一層基礎,恐怕連 ASP.NET MVC 的第一關都過不了,而除了 C# 本身之外,逐項進一步說上述提及的延伸技術細節。

LINQ

C#為了支援集合物件的資料查詢操作導入了LINQ,成為其內建語法的一部份,LINQ發展得相當成功,ASP.NET MVC的網頁構成的過程中,運用了大量的LINQ 語法,不熟悉LINQ將會為進入 ASP.NET MVC 最大的障礙之一。以下列舉 LINQ 相較於基本 C#  最重要的幾項特性:
  • 匿名型別(Anonymous Type)
    啟用即時建立未命名結構型別,此種類型的型別,透過關鍵字var直接加入至集合中以進行存取。
  • 擴充方法(Extension Methods)
    一種靜態方法,允許以執行個體進行呼叫,以擴充現有的方法。
  • 隱含區域變數(Implicit Local Variable)以var關鍵字宣告變數,編譯器會自動從初始化陳述式右側的運算式推斷變數的型別。
  • 查詢運算式(Query Expressions)包含構成LINQ運算式所需的關鍵字,select、from、where、group、join等等。
  • Lambda 運算式(Expressions)一種新型態的內嵌運算式,可以直接繫結至委派或是LINQ查詢樹狀結構中。
關於 LINQ 的更進一步討論,請參考「關於 LINQ」。

Entity Framework

Entity Framework 是ASP.NET MVC 串接底層資料來源最重要的技術之一,由於ASP.NET MVC的彈性相當大,事實上你並不一定要使用 Entity Framework 就能利用 ASP.NET MVC 開網站,直接使用傳統 ASP.NET 開發人員熟悉的 ADO.NET 也是可行,只是如此一來便無法獲得 Entity Framework 帶來的好處,例如強型別資料模型處理等等,這對於應付大型網站開發相當有用,相較於ADO.NET更適於用在網路開發環境。

傳統的 .NET 應用程式透過ADO.NET 提供的類別,傳送 SQL 敘述回後端資料庫引擎進行解譯,執行特定的資料操作,然後取得回傳的結果。由於直接對資料庫進行存取,因此前端程式與後端資料庫結構緊密結合,導致未來資料庫更新與維護的困難,開發人員透過良好的架構與分層設計,降低前端程式與資料庫間的耦合性,現在藉由 Entity Framework 我們可以更容易的處理相關的問題,透過建立所謂的實體資料模型(EDM)對應真正的資料結構,避免程式與資料庫間的直接關聯。

Entity Framework 之前,在預設的情形下,使用 ADO.NET 的開發人員必須直接針對底層資料庫物件撰寫程式進行互動,包含實體資料表與各種資料庫元素,例如預存程序、檢視表等等。來到 Entity Framework ,開發人員不再針對資料表進行存取,取而代之的是實體資料模型。


上方是傳統的資料存取架構,其中透過 ADO.NET 傳送 SQL 與資料庫進行互動,下方是採用 Entity Framework 的資料存取方案,其中間接的透過實體資料模型傳送 SQL 指令,而開發人員所需處理的則是 LINQ 或是 Entity SQL 敘述,Entity Framework 會自動將它們轉換成為對應的關聯式 SQL 。

Entity Framework是個龐大的主題,必須將其視為單一主題進行良好的學習與理解(請參考Entity Framework 實務入門),後續 ASP.NET MVC 的學習會相較比較順利。

ASP.NET MVC - M/V/C

C#、物件導向設計、LINQ 與 Entity Framework 是架構 ASP.NET MVC 所需的技術,這些技術都可以獨立學習,甚至我們建議逐一建立這些技術的基礎之後再實際導入 ASP.NET MVC ,如此一來可以大幅降低進入的門檻。

ASP.NET MVC 主要在於將網站架構分解成模型(M)、檢視(V)以及控制器(C)等三個種檔案群組,模型的部份由封裝成 C# 類別的檔案組成,透過 Entity Framework 對映至底層資料來源以支援資料的存取操作,控制器則是一群封裝各種邏輯程式碼的 C# 類別,負責進行模型與檢視的溝通,而檢視則是最後轉換成為HTML網頁內容的的專屬檔案。

對於簡單的電子商務網站而言,或許只需要上述的知識就足以進行開發,然而當網站的規模開始膨脹,很快的我們就需要進一步的補充其它的附加知識與技能,分層架構可以進一步切割模型功能,簡化網站的維護,而另外一項經常被提及的技術「依存注入」,則能讓整個系統架構以更彈性的方式進行開發。

最後,因應雲端科技的與行動優先概念的盛行,網頁技術正在進一步蛻變,單頁型式的APP類型應用開始崛起,Ajax 技術正式建立此種類型網站必須具備的入門技能,而對於更複雜的應用,則有賴 Web API 。


沒有留言: