真實環境的Asp.net MVC

Preview:

DESCRIPTION

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

Citation preview

真實環境的 ASP.NET MVCSky Chang

天空的垃圾場

About me

Sky Chang

Windows Azure 微軟最有價值專家

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

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

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

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

Model -> Code First

Entity Framework 現實的 ORM DB First

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

Model First 幾乎沒人使用

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

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

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

執行 SP 查詢

Code FirstDemo

Generic Repository

Repository Patten

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

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

Generic Repository

Demo

Unit of Work

真實的世界

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

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

Work

UNIT OF WORK

CustomerRepositoryInstance

OrderRepositoryInstance

ProductRepositoryInstance

Unit Of WorkDemo

Web API – OData Service

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

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

錯誤

救星 OData!?

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

Web API & ODataDemo

JayData & Kendo UI & AngularJS

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

JayData 杰資料 !?

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

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

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

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

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

Kendo UI

JayDataViewModel

OData Model

DS

HTMLBind

JayData & Kendo UI & AngularJS

Demo

AutoMapper

討論

該來的逃不掉 - AutoMapper

• 自動 Mapper 兩個物件

• 利用 AutoMapper再隔離一層

架構Business Web API

AutoMapper

Repository

(Unit Of Work)

OData

Entity

ViewModelEntity

DB

SQL、 SP、 View

AutoMapperDemo

IOC x DI x 洋蔥 !?

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

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

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

核心 : IOC & DI

洋蔥架構

IOC x DI x 洋蔥 !?Demo

Q&A

Blog.sanc.idv.tw

Study4.TW