SlideShare a Scribd company logo
ASP.NET MVC Model 的設計與使用
Kevin Tseng
http://kevintsengtw.blogspot.tw
http://mvc.tw
2013 微軟最有價值專家(ASP.NET)
twMVC 聯合創辦人之一
部落格:mrkt 的程式學習筆記
http://kevintsengtw.blogspot.tw
2
講者簡介
http://mvc.tw
MVC 的三個組成部分
Model
可用什麼來做為 Model
ADO.NET
Enterprise Library –
Data Access Application Block
ADO.NET Entity Framework
分層、IoC/DI
3
Agenda
MVC 的三個組成部分
Model, View, Controller
http://mvc.tw
 「資料模型」用於封裝與應用程序的業務邏輯相關的數據以
及對數據的處理方法
 有關「資料處理」的範圍都可屬於Model,包含:
 資料庫的存取操作(讀取、寫入)
 資料結構的定義
 資料格式的驗證
5
Model
http://mvc.tw
 在頁面上顯示或是經由頁面傳回後端都是View所負責
 輸出:把資料輸出並顯示到使用者介面上
 輸入:把使用者所輸入的資料傳回到伺服器端
 有關View的技術還包含:
 HTML / CSS
 Javascript(jQuery, MoonTool, ExtJS …etc)
 JSON / XML
 AJAX
 RIA(Rich Interactive Application, ex:Flash,Silverlight)
6
View
http://mvc.tw
 控制整個系統的業務流程
 依據制定好的規則進行對資料處理以及 View 的使用
 控制器接受外部傳入的資料並與 Model 進行資料處理,最
後再由 View 回應外部的傳入並做顯示
7
Controller
http://mvc.tw 8
MVC – 三者之間的關係
http://mvc.tw 9
MVC – 三者之間的關係
本圖取自《ASP.NET MVC4 網站開發美學》
Model
http://mvc.tw
 在ASP.NET MVC中Model負責所有與「資料」有關的任務
 不處理所有與資料處理無關的事
 不直接處理來自瀏覽器的輸入,也不向瀏覽器產生 HTML 輸
出。
 ASP.NET MVC 架構對可以建置的各種模型物件沒有任何限
制。
11
Model
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
http://mvc.tw
 NHibernate是 Hibernate(Java) 的.NET版。
 目前可以支援使用的Database有:
 MS SQL Server
 Oracle
 MySQL
 DB2
 Sybase
 SQLite … etc
13
可用哪些來做為 Model
http://mvc.tw
 使用傳統的 ADO.NET 資料存取方式
 示範操作
14
Model – ADO.NET
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
http://mvc.tw
 對資料庫的存取操作使用 ADO.NET Entity Framework
 Database First
 示範操作
16
Model – ADO.NET Entity Framework
http://mvc.tw 17
ASP.NET MVC 專案的 Model – 同專案中
http://mvc.tw 18
ASP.NET MVC 專案的 Model – 不同專案
http://mvc.tw
 專案分層架構
 ADO.NET, EntLib DAAB, EF 三合一
 示範操作
19
Model – 分層
http://mvc.tw
 使用介面
「程式的內容是針對介面而寫,而不是針對實作而寫」
 使用 IoC/DI
 IoC/DI Solution:Simple Injector
20
Model – 切換不同的資料存取方式
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
http://mvc.tw
 資料庫在 MS SQL Server 與 Oracle 切換
 ADO.NET Entity Framework, ADO.NET, EntLib DAAB
 介面與 IoC/DI
 示範操作
22
Model – 切換資料庫與資料存取方式
聯絡資訊
Blog: http://kevintsengtw.blogspot.tw
G+: http://gplus.to/mrkt_note
twMVC: http://mvc.tw
FB: http://fb.me/twmvc
謝謝各位
• 本投影片所包含的商標與文字皆屬原著作者所有。
• 本投影片使用的圖片皆從網路搜尋。
• 本著作係採用 Creative Commons 姓名標示-非商業性-相同方式分享 3.0 台灣 (中華民國) 授權條款授權。
h t t p : / / m v c . t w

More Related Content

PDF
ASP.NET MVC Code Templates實戰開發 -twMVC#4
PDF
架構設計入門 twMVC#11
PDF
架構行動式網站(使用 ASP.NET MVC 4.0 -twMVC#6
PDF
AngularJS 開發 ASP.NET MVC -twMVC#9
PDF
Asp.net mvc 從無到有 -twMVC#2
PDF
如何在實務上使用TDD來開發 twmvc#12
PDF
ASP.NET MVC之實戰架構探討 -twMVC#5
PPTX
twMVC#01 | ASP.NET MVC 的第一次親密接觸
ASP.NET MVC Code Templates實戰開發 -twMVC#4
架構設計入門 twMVC#11
架構行動式網站(使用 ASP.NET MVC 4.0 -twMVC#6
AngularJS 開發 ASP.NET MVC -twMVC#9
Asp.net mvc 從無到有 -twMVC#2
如何在實務上使用TDD來開發 twmvc#12
ASP.NET MVC之實戰架構探討 -twMVC#5
twMVC#01 | ASP.NET MVC 的第一次親密接觸

What's hot (17)

PDF
ASP.NET MVC 新增、查詢、修改、刪除 基本功實戰 -twMVC#3
PDF
twMVC#05 |開發與移轉 ASP.NET MVC 4.0 應用程式到 Windows Azure Platform
PPTX
輕鬆上手ASP.NET Web API 2.1.2
PDF
使用 ASP.NET MVC 開發SPA網站-微軟實戰課程日
PPTX
KSDG-ASP.NET MVC 5 Overview (偽三國誌)
PDF
twMVC#20 | ASP.NET MVC View 開發技巧小錦囊
PDF
twMVC#19 | 微信公眾平台申請與wechat api 開發血淚史
PPTX
ASP.NET MVC 善用網路資源快速完打造網站
PDF
ASP.NET MVC 內建驗證擴充與活用技巧 -twMVC#3
PDF
Vs2013新功能介紹 twMVC#11
PDF
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
PPTX
MVC實戰分享 分頁與排序相關技巧-tw mvc#13
PDF
開發的效能與效率-twMVC#15
PDF
輕鬆上手Asp.net web api 2.1-twMVC#14
PDF
一小時可以打造什麼服務Plus twMVC#18
PDF
SignalR實戰技巧 twmvc#17
PPTX
Angular.js & ASP.NET in Study4
ASP.NET MVC 新增、查詢、修改、刪除 基本功實戰 -twMVC#3
twMVC#05 |開發與移轉 ASP.NET MVC 4.0 應用程式到 Windows Azure Platform
輕鬆上手ASP.NET Web API 2.1.2
使用 ASP.NET MVC 開發SPA網站-微軟實戰課程日
KSDG-ASP.NET MVC 5 Overview (偽三國誌)
twMVC#20 | ASP.NET MVC View 開發技巧小錦囊
twMVC#19 | 微信公眾平台申請與wechat api 開發血淚史
ASP.NET MVC 善用網路資源快速完打造網站
ASP.NET MVC 內建驗證擴充與活用技巧 -twMVC#3
Vs2013新功能介紹 twMVC#11
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
MVC實戰分享 分頁與排序相關技巧-tw mvc#13
開發的效能與效率-twMVC#15
輕鬆上手Asp.net web api 2.1-twMVC#14
一小時可以打造什麼服務Plus twMVC#18
SignalR實戰技巧 twmvc#17
Angular.js & ASP.NET in Study4
Ad

Similar to twMVC#10 | ASP.NET MVC Model 的設計與使用 (20)

PPTX
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
PPTX
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3
PDF
與 Asp.net mvc 的第一次親密接觸 - twMVC#1
PPTX
ASP.net MVC
PPSX
利用 ASP.NET MVC 提升您的 Web 應用程式
PPTX
Asp.Net MVC 4概念與新功能探討
PDF
Asp.net mvc網站的從無到有
PPTX
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練5
PPTX
Asp.net mvc 基礎
PPTX
ASP.NET MVC 快速上手
PDF
twMVC#02 | ASP.NET MVC 從無到有
PPTX
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
PDF
ASP.NET MVC The Begining
PPTX
Asp.Net MVC 一教就上手
PPTX
Asp.net mvc 概觀介紹
PDF
KSDG#8_net第一次親密接觸_Brian Cheng
PDF
twMVC#05 | ASP.NET MVC 之實戰架構探討
PDF
Asp.Net Mvc 1.0
PDF
ASP.NET MVC 開發分享
PPTX
ASP.NET MVC 5線上課程(入門前三天)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3
與 Asp.net mvc 的第一次親密接觸 - twMVC#1
ASP.net MVC
利用 ASP.NET MVC 提升您的 Web 應用程式
Asp.Net MVC 4概念與新功能探討
Asp.net mvc網站的從無到有
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練5
Asp.net mvc 基礎
ASP.NET MVC 快速上手
twMVC#02 | ASP.NET MVC 從無到有
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
ASP.NET MVC The Begining
Asp.Net MVC 一教就上手
Asp.net mvc 概觀介紹
KSDG#8_net第一次親密接觸_Brian Cheng
twMVC#05 | ASP.NET MVC 之實戰架構探討
Asp.Net Mvc 1.0
ASP.NET MVC 開發分享
ASP.NET MVC 5線上課程(入門前三天)
Ad

More from twMVC (20)

PDF
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
PDF
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
PDF
twMVC#50 微服務上線後的救贖
PDF
twMVC 47_Elastic APM 的兩三事
PDF
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
PDF
.NET 7 家族新成員: Microsoft Orleans v7
PDF
twMVC#46 一探 C# 11 與 .NET 7 的神奇
PDF
twMVC#44 如何測試與保護你的 web application with playwright
PDF
twMVC#44 讓我們用 k6 來進行壓測吧
PDF
twMVC#43 Visual Studio 2022 新功能拆解
PDF
twMVC#43 YARP
PDF
twMVC#43 C#10 新功能介紹
PDF
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
PDF
twMVC#42 Azure IoT Hub for Smart Factory
PDF
twMVC#42 Windows容器導入由0到1
PDF
twMVC#42 讓我們用一種方式來開發吧
PDF
twMVC#41 hololens2 MR
PPTX
twMVC#41 The journey of source generator
PDF
twMVC#38 How we migrate tfs to git(using azure dev ops)
PDF
twMVC#36C#的美麗與哀愁
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC#50 微服務上線後的救贖
twMVC 47_Elastic APM 的兩三事
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
.NET 7 家族新成員: Microsoft Orleans v7
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 YARP
twMVC#43 C#10 新功能介紹
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Windows容器導入由0到1
twMVC#42 讓我們用一種方式來開發吧
twMVC#41 hololens2 MR
twMVC#41 The journey of source generator
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#36C#的美麗與哀愁

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