.NET 工具與框架要點

  • 2020
  • 0
  • 2018-04-08

此篇主要紀錄 .Net 相關工具與框架, 與其它要點.

  • 泛型
  • 委派
  • IEnumerable & IEnumerator
  • Lambda
  • Linq
  • IEnumerable VS IQueryable
  • Entity Framework
  • .Net MVC概觀

 

泛型

泛型屬於強型別是針對撰寫程式時, 讓類別與方法…等有更佳的靈活度.

Ex: 方法函數搭配泛型簡單釋例: 數值比大小

public bool Compare<T>(T one, T  two)where T : IComparable<T>
{
  return one.CompareTo(two) > 0;
}

 

委派

簡單來說, 委派可以使方法當成參數來傳遞, 這樣可使得程式在編程上有更多的方式.

觀念:

服務提供方法給外部的類別來做使用, 這個工具會依照外部類別的需求來擬訂簽章(方法結構), 之後得到外部(呼叫端)傳遞進來的方法(工具), 直接使用該方法即可得到想要的結果.

 

IEnumerable & IEnumerator 是什麼?

這兩個介面主要是讓繼承的類別能提供迭代取出集合中的元素的方法, 在C#中集合類型的都繼承與實作這兩個介面!

 

Lambda

由委派的章節可得知, 使用委派有一堆繁雜的手續, Lambda 可簡化委派的前置作業, 由編譯器在編譯過程時自動賦予.

 

Linq

xml, ADO.NET, Sql, Enitity Framework…這些集合型的資料可以使用標準化查詢操作這些集合的一整套擴充方法.

相關要點:

型別推斷 var, 區域變數存取範圍, 擴充方法, 泛型方法, 具名委派, 泛型委派, Func & Action, Lambda 運算式, 物件初始化, 集合物件

 

IEnumerable VS IQueryable

這邊提的這兩個物件是針對 Linq 向遠端伺服器如(Sql, EF …..)取得集合物件的特性. (Walter Mitty 的留言有更為清楚的解釋)

IEnumerable: 簡單說只以第一句語法向遠端取得資料的請求.

IQueryable: 簡單說若有N句語法, 會加總這些語法後向遠端取得資料的請求.

 

Entity Framework

是種物件關聯對應(映射)簡稱為ORM模型, 是將關聯式資料庫映射成物件(Model)的技術, EF是微軟提供的, 還有很多其它這類的套件.

EF 建置流程概要:

  • 建立資料表相關類別(關聯、型別、細節…
  • 建立資料庫類別(連線字串、聚集資料表…

  • 建立連線字串(加載於config中或用程式碼建立連線字串賦予EF.

  • 使用套件管理主控台更新Server.

  • 檢查資料結構是否符合需求.

 

Html/Css

一個網站所有的內容一定會有一個靜態文檔, 稱之為網頁本文(HttpContext), 本文的內容主要就是由 Html 標籤組成, 但為了更加美觀, 後來就有了CSS的產生, CSS不屬於Html而是另外的文檔. CSS可修飾 Html 標籤的外觀.

 

MVC概觀

是一種撰寫APP的框架使用既定的模式與規則, 分別形成 Model, View, Controller三個層(域), 簡單理解就是這三個層互不關聯, 但實際上不可能!!  因此MVC設法將三個層的耦合性降到最低 !!

初學.NET MVC要點:

  • 使用者如何對伺服器發出請求?

  • MVC流程大致為何?

  • Route解析Url之規則, 如何對應到Controller?

  • Controller 回傳的 ActionResult 可包含什麼?

  • Controller 方法收取請求參數之規則?

  • .cshtml(View) 為何能包含C#的程式碼?

  • .cshtml 裡面 "@model 類型", 能做什麼?

  • View 何時轉成靜態 Html 文檔?

.NET MVC 相關要點:

MVC專案檔案架構, 各層所賦予的職責, Razor語法的操作, View中@model的使用, Model的驗證與自訂驗證, @Html是擴充方法的應用, ActionFilter特性的使用, Boostrap與網格系統, ViewModel的出發點, Controller接收參數的規則, Controller的回傳, Route與Url的關係, Controller指定View之路徑規則

.NET MVC 請求&回覆精簡流程:

 


多多指教!! 歡迎交流!!

你不知道自己不知道,那你會以為你知道