Design

Design
asp.net mvc

2017年5月21日 星期日

ASP.NET MVC 三層架構Three tier

Q 什麼是三層架構
A: 簡單說就是把開發專案分為三大區塊
Controlle:負責導覽資料的責任 我資料該去哪裡 我頁面該怎走,盡量避免把較複雜邏輯寫在這.
Service:資料處理的位置 也算是code可能會最多的地方,例如我想要把A資料跟B資料作處理完再傳給Controller.
Repository:接受DB的資料位置這這部分往往就是要開始定義資料格式的位置然後再把資料傳給Service做處理.



綜合以上所說明的可以大概理解為我們先從Repository 接收到資料 然後Service做處理 接著Controller 做資料傳輸要頁面的工作



Q 三層架構? MVC? 
A:先說明三層跟MVC 不同東西 好像很多人都會以為MVC就是三再說三層架構  雖然好像有點關係 但是其實不盡然相同

以下轉自WIKI
將應用程式劃分為三種元件,模型 - 視圖 - 控制器(MVC)設計定義它們之間的相互作用。[2]
  • 模型(Model) 用於封裝與應用程式的業務邏輯相關的資料以及對資料的處理方法。「 Model 」有對資料直接存取的權力,例如對資料庫的存取。「Model」不依賴「View」和「Controller」,也就是說, Model 不關心它會被如何顯示或是如何被操作。但是 Model 中資料的變化一般會通過一種重新整理機制被公布。為了實現這種機制,那些用於監視此 Model 的 View 必須事先在此 Model 上註冊,從而,View 可以了解在資料 Model 上發生的改變。(比較:觀察者模式軟體設計模式))
  • 視圖(View)能夠實現資料有目的的顯示(理論上,這不是必需的)。在 View 中一般沒有程式上的邏輯。為了實現 View 上的重新整理功能,View 需要存取它監視的資料模型(Model),因此應該事先在被它監視的資料那裡註冊。
  • 控制器(Controller)起到不同層面間的組織作用,用於控制應用程式的流程。它處理事件並作出回應。「事件」包括用戶的行為和資料 Model 上的改變。

就我自己的觀點是覺得是在說明Controller 這層 定義封裝Model型別 呈現在View上的這動作
所以舉個例子就像 使用者進來這畫面Controller 會告訴使用者 是使用哪個Model呈現資料 然後從我們預先塞好資料的Model 傳給View這邊做顯示 包括刪除 修改  都是透過Controller 這邊做為一個溝通的橋樑.


Q 為什麼需要三層架構
A: 當我們開發較大型專案時往往資料面跟邏輯會需要大量的處理,這時候我就不想把東西都寫在一起更何況又是多人開發時,誰他X的又碰我的CODE 之類的問題 哈哈

Q 那我三層之間該怎溝通呢?
這時候會需要用到我們的Dependency injection(DI 依賴注入) 降低我們code之間的依賴關係
常見的有 Unity,Autofac,Ninject,StructureMap 等等等


實作的部分可以參考這裡


沒有留言:

張貼留言