40
如如如如如如如如 如如如如如如如如如如如如如如 ( 如如如 ) Jed & Sky

如何攻破大型副本 大型專案的開發與團隊合作經驗 聊天室

Embed Size (px)

DESCRIPTION

如何攻破大型副本 大型專案的開發與團隊合作經驗 聊天室 - Sky

Citation preview

Page 1: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

如何攻破大型副本大型專案的開發與團隊合作經驗 ( 聊天室 )Jed & Sky

Page 2: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

Jed

Jed( 阿公 )

集英信誠 ALM Team 成員

• Visual Studio ALM• ASP.NET MVC

Page 3: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

Sky Chang

Sky Chang

Microsoft Azure 微軟最有價值專家

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

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

Page 4: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

Agenda 架構篇

Orachard & Identity

程式篇 Model & Code First Generic Repository & Unit of Work & 擴展方法 N-Layer & AutoMapper Web API & AngularJS & AngularJS UI Bootstrap

Page 5: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

Agenda 合作篇

版本控制 & CI & 測試 & 佈署 NuGet & 私服 & MyGet 多人開發 & IOC x DI x 洋蔥

Page 6: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

Orachard & Identity

Page 7: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

OrchardOrchard 是一個 Open Source 的 CMS ,它能夠讓使用者在 ASP.NET 平台上快速建立網站,並提供了擴充框架讓我們能透過 Module 或 Themes去增加它額外的功能內容,它能透過模組化的方式,重複使用,進而將開發的成本最小化。

Page 8: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

為什麼要用 Orchard?

之所以會使用 Orchard 是因為想要直接使用他既有的身份認證,及他裡面的各種機制 ( 如:多語系、排程、… ) ,來節省我們在開發上的時間。

Page 9: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

Model & Code First

Page 10: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

Entity Framework 現實的 ORM DB First

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

Model First 幾乎沒人使用

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

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

Page 11: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

Code FirstDemo

Page 12: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

Generic Repository & Unit of Work & 擴展方法

Page 13: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

Repository Patten

Page 14: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

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

Page 15: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

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

Page 16: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

真實的世界

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

Page 17: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

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

Work

UNIT OF WORK

CustomerRepositoryInstance

OrderRepositoryInstance

ProductRepositoryInstance

Page 18: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

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

執行 SP 查詢

Page 19: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

DALDemo

Page 20: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

AutoMapper

Page 21: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

AutoMapper

• 自動 Mapper 兩個物件

• 利用 AutoMapper再隔離一層

Page 22: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

架構Business Web API

AutoMapper

Repository

(Unit Of Work)

Json

Entity

ViewModelEntity

DB

SQL 、 SP、 View

Page 23: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

BLLDemo

Page 24: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

Web API & AngularJS & AngularJS UI Bootstrap

Page 25: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

Web API

前端的框架AngularJS Controller

Kendo UI

ViewModelJSON

DS

HTMLBind

Page 26: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

UI

Demo

Page 27: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

版本控制 & 建置 & 測試 & 佈署

Page 28: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

版控我想大家應該都有用過但你如何確保簽入的程式是能運作的 ?

Page 29: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

版控我想大家應該都有用過但你如何確保簽入的程式是能運作的 ?

透過自動化建置與測試失敗就不讓其他人繼續簽入直到最後簽入的人簽入可以通過建置與測試的版本

Page 30: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

佈署悲劇多

Page 31: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

通通自動化讓悲劇不再重現

Page 32: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

NuGet & 私服 & MyGet

Page 33: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

私服架設Demo

Page 34: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

MyGet

https://www.myget.org/

Page 35: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

多人開發 & IOC x DI x 洋蔥

Page 36: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

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

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

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

核心 : IOC & DI

Page 37: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

洋蔥架構

Page 38: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

ProviderDemo

Page 39: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

Q&A

Blog.sanc.idv.tw

Page 40: 如何攻破大型副本   大型專案的開發與團隊合作經驗 聊天室

Study4.TW