24
ASP.NET MVC Model 的設計與使用 Kevin Tseng http://kevintsengtw.blogspot.tw

ASP.NET MVC Model 的設計與使用 twMVC#10

  • Upload
    twmvc

  • View
    1.073

  • Download
    4

Embed Size (px)

DESCRIPTION

ASP.NET MVC 的 Model 並不等同於 Entity Framework,這一次將說明如何使用 ADO.NET 來做為 MVC 的 Model,並且介紹 Enterprise Library Data Access Application Block以及實作分層讓 Model 讓 Web Forms 專案可以共用。

Citation preview

Page 1: ASP.NET MVC Model 的設計與使用 twMVC#10

ASP.NET MVC Model 的設計與使用

Kevin Tseng

http://kevintsengtw.blogspot.tw

Page 2: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw

2013 微軟最有價值專家(ASP.NET)

twMVC 聯合創辦人之一

部落格:mrkt 的程式學習筆記

http://kevintsengtw.blogspot.tw

2

講者簡介

Page 3: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw

MVC 的三個組成部分

Model

可用什麼來做為 Model

ADO.NET

Enterprise Library –

Data Access Application Block

ADO.NET Entity Framework

分層、IoC/DI

3

Agenda

Page 4: ASP.NET MVC Model 的設計與使用 twMVC#10

MVC 的三個組成部分

Model, View, Controller

Page 5: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw

「資料模型」用於封裝與應用程序的業務邏輯相關的數據以

及對數據的處理方法

有關「資料處理」的範圍都可屬於Model,包含:

資料庫的存取操作(讀取、寫入)

資料結構的定義

資料格式的驗證

5

Model

Page 6: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw

在頁面上顯示或是經由頁面傳回後端都是View所負責

輸出:把資料輸出並顯示到使用者介面上

輸入:把使用者所輸入的資料傳回到伺服器端

有關View的技術還包含:

HTML / CSS

Javascript(jQuery, MoonTool, ExtJS …etc)

JSON / XML

AJAX

RIA(Rich Interactive Application, ex:Flash,Silverlight)

6

View

Page 7: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw

控制整個系統的業務流程

依據制定好的規則進行對資料處理以及 View 的使用

控制器接受外部傳入的資料並與 Model 進行資料處理,最

後再由 View 回應外部的傳入並做顯示

7

Controller

Page 8: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw 8

MVC – 三者之間的關係

Page 9: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw 9

MVC – 三者之間的關係

本圖取自《ASP.NET MVC4 網站開發美學》

Page 10: ASP.NET MVC Model 的設計與使用 twMVC#10

Model

Page 11: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw

在ASP.NET MVC中Model負責所有與「資料」有關的任務

不處理所有與資料處理無關的事

不直接處理來自瀏覽器的輸入,也不向瀏覽器產生 HTML 輸

出。

ASP.NET MVC 架構對可以建置的各種模型物件沒有任何限

制。

11

Model

Page 12: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw

ADO.NET Entity Framework

NHibernate, SubSonic, LLBLGen Pro … etc

以上都是 ORM Solution

也可以用「非 ORM Solution」,但是會非常累…

ADO.NET

Enterprise Library Data Access Application Block

12

可用哪些來做為 Model

Page 13: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw

NHibernate是 Hibernate(Java) 的.NET版。

目前可以支援使用的Database有:

MS SQL Server

Oracle

MySQL

DB2

Sybase

SQLite … etc

13

可用哪些來做為 Model

Page 14: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw

使用傳統的 ADO.NET 資料存取方式

示範操作

14

Model – ADO.NET

Page 15: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw

Enterprise Library –

Data Access Application Block

Enterprise Library 6 – Released 2013/4/26

.NET 4.5 使用 Enterprise Library 6

.NET 4.0 (3.5) 使用 Enterprise Library 5

示範操作

15

ADO.NET – EntLib DAAB

Page 16: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw

對資料庫的存取操作使用 ADO.NET Entity Framework

Database First

示範操作

16

Model – ADO.NET Entity Framework

Page 17: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw 17

ASP.NET MVC 專案的 Model – 同專案中

Page 18: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw 18

ASP.NET MVC 專案的 Model – 不同專案

Page 19: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw

專案分層架構

ADO.NET, EntLib DAAB, EF 三合一

示範操作

19

Model – 分層

Page 20: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw

使用介面

「程式的內容是針對介面而寫,而不是針對實作而寫」

使用 IoC/DI

IoC/DI Solution:Simple Injector

20

Model – 切換不同的資料存取方式

Page 21: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw

DI:Dependency Injection 依賴注入.

IoC:Inversion of Control 控制反轉.

控制反轉又稱為依賴注入,在物件導向設計中,一個用來降低物

件之間耦合性的設計原則.

常見的 IoC/DI Solution:

EntLib Unity, Autofac, Simple Injector, Castle

Windsor, StructureMap, Ninject, Spring.NET,

IoC Container Benchmark - Performance comparison

21

IoC/DI

Page 22: ASP.NET MVC Model 的設計與使用 twMVC#10

http://mvc.tw

資料庫在 MS SQL Server 與 Oracle 切換

ADO.NET Entity Framework, ADO.NET, EntLib DAAB

介面與 IoC/DI

示範操作

22

Model – 切換資料庫與資料存取方式

Page 23: ASP.NET MVC Model 的設計與使用 twMVC#10

聯絡資訊

Blog: http://kevintsengtw.blogspot.tw

G+: http://gplus.to/mrkt_note

twMVC: http://mvc.tw

FB: http://fb.me/twmvc

Page 24: ASP.NET MVC Model 的設計與使用 twMVC#10

謝謝各位

• 本投影片所包含的商標與文字皆屬原著作者所有。• 本投影片使用的圖片皆從網路搜尋。• 本著作係採用 Creative Commons 姓名標示-非商業性-相同方式分享 3.0 台灣 (中華民國) 授權條款授權。

h t t p : / / m v c . t w