38
真真真真真 ASP.NET MVC Sky Chang 天天天天天天

真實環境的Asp.net MVC

Embed Size (px)

DESCRIPTION

2013/11/16 Study4.TW Sky - 真實環境的Asp.net MVC

Citation preview

Page 1: 真實環境的Asp.net MVC

真實環境的 ASP.NET MVCSky Chang

天空的垃圾場

Page 2: 真實環境的Asp.net MVC

About me

Sky Chang

Windows Azure 微軟最有價值專家

天空的垃圾場blog.sanc.idv.tw

• ASP.NET MVC• Visual Studio ALM• Windows Azure

Page 3: 真實環境的Asp.net MVC

警告 此為個人經驗分享,如有錯誤,請多包涵 架構之大小,請斟酌使用 如服用後有任何不順,皆與本人無關

Page 4: 真實環境的Asp.net MVC

Agenda Model -> Code First Generic Repository Unit of Work Web API – OData Service JayData & Kendo UI & AngularJS AutoMapper IOC x DI x 洋蔥 !?

Page 5: 真實環境的Asp.net MVC

Model -> Code First

Page 6: 真實環境的Asp.net MVC

Entity Framework 現實的 ORM DB First

產生 edmx 檔案來 map DB Table 更新時需要重新產生 edmx 刪除 Table 欄位需要手動刪除

Model First 幾乎沒人使用

Code First 請和 DBA 打好關係 如有使用 SSDT 容易造成衝突 現有 DB 的情況下還是可以用工具產生

Code Code 和 DB Shema 只需要撰寫一次

Page 7: 真實環境的Asp.net MVC

Entity Framework & SP & View執行 SP ( Code First )

執行 SP 查詢

Page 8: 真實環境的Asp.net MVC

Code FirstDemo

Page 9: 真實環境的Asp.net MVC

Generic Repository

Page 10: 真實環境的Asp.net MVC

Repository Patten

Page 11: 真實環境的Asp.net MVC

真實的 Repository Patten 數量非常非常的多 都是重複的 Code

Page 12: 真實環境的Asp.net MVC

救星 Generic Repository!! 利用泛型 收納到只剩下一支

Page 13: 真實環境的Asp.net MVC

Generic Repository

Demo

Page 14: 真實環境的Asp.net MVC

Unit of Work

Page 15: 真實環境的Asp.net MVC

真實的世界

通常不會只針對一個 Table CRUD 會產生多個 Repository 泛型 Repository 一樣會需要建立多個 每個 Reposotory 內的 Context 各自獨

Page 16: 真實環境的Asp.net MVC

救星 Unit Of Work!! 集結所有 Repository 統一透過 Unit Of

Work

UNIT OF WORK

CustomerRepositoryInstance

OrderRepositoryInstance

ProductRepositoryInstance

Page 17: 真實環境的Asp.net MVC

Unit Of WorkDemo

Page 18: 真實環境的Asp.net MVC

Web API – OData Service

Page 19: 真實環境的Asp.net MVC

真實的 Web API & 查詢• 後端需要撰寫大量的

查詢條件• 容易遇到循環參考性

錯誤

Page 20: 真實環境的Asp.net MVC

救星 OData!?

透過網址篩選資料 透過網址 Include 相關的資料

Page 21: 真實環境的Asp.net MVC

Web API & ODataDemo

Page 22: 真實環境的Asp.net MVC

JayData & Kendo UI & AngularJS

Page 23: 真實環境的Asp.net MVC

悲劇的開始 歷史一 不支援總數等的屬性 歷史二 組合 URL 變成 JS 的責任

Page 24: 真實環境的Asp.net MVC

JayData 杰資料 !?

JS 層,與資料互動之 Framework 透過類似 Linq 語法產生 OData 查詢 URL

Page 25: 真實環境的Asp.net MVC

更大的悲劇 歷史一 JayData 官方文件太少 ( 動態與靜態Model 事件 )

歷史二 Web API Odata Service 一堆 OData參數沒實做

歷史三 Web API 不支援 Batch 歷史四 與 ASP.NET OWIN Identity 相容性欠佳 歷史五 一樣有相依性的問題

Page 26: 真實環境的Asp.net MVC

先把悲劇擺一邊 – 前端的框架AngularJS

Kendo UI

JayDataViewModel

OData Model

DS

HTMLBind

Page 27: 真實環境的Asp.net MVC

JayData & Kendo UI & AngularJS

Demo

Page 28: 真實環境的Asp.net MVC

AutoMapper

Page 29: 真實環境的Asp.net MVC

討論

Page 30: 真實環境的Asp.net MVC

該來的逃不掉 - AutoMapper

• 自動 Mapper 兩個物件

• 利用 AutoMapper再隔離一層

Page 31: 真實環境的Asp.net MVC

架構Business Web API

AutoMapper

Repository

(Unit Of Work)

OData

Entity

ViewModelEntity

DB

SQL、 SP、 View

Page 32: 真實環境的Asp.net MVC

AutoMapperDemo

Page 33: 真實環境的Asp.net MVC

IOC x DI x 洋蔥 !?

Page 34: 真實環境的Asp.net MVC

洋蔥架構 應用程式係圍繞著一個獨立的物件模型

來建構。 內層定義介面,外層實作介面。 耦合的方向是朝向中央。 應用程式的所有核心程式碼可以在與基

礎建設分離的情況下正常運行。 ( By 蔡煥麟老師翻譯 )

核心 : IOC & DI

Page 35: 真實環境的Asp.net MVC

洋蔥架構

Page 36: 真實環境的Asp.net MVC

IOC x DI x 洋蔥 !?Demo

Page 37: 真實環境的Asp.net MVC

Q&A

Blog.sanc.idv.tw

Page 38: 真實環境的Asp.net MVC

Study4.TW