SlideShare ist ein Scribd-Unternehmen logo
1 von 35
K.NET講師 Clark
 Microsoft MVP
 部落格:昏睡領域
http://www.dotblogs.com.tw/clark/
 技術專長:
◦ 領域驅動設計流程
◦ 系統架構分析設計
◦ 軟體框架分析設計
◦ 軟韌硬體整合開發
 基礎知識
 需求分析
 系統分析
 系統設計
 系統實作
 持續回饋
 在各個開發階段,提供指引與方針
系統分析 系統設計 系統實作
領域驅動設計
 透過分層設計,聚焦領域邏輯
Presentation AccessesDomain
APP Server Database
Presentation
Domain
Presentation
Domain
Presentation
Domain
Accesses Accesses Accesses
 Channel9課程連結:
◦ https://channel9.msdn.com/Series/three-tier-design
 點部落課程簡報:
◦ https://dotblogs.com.tw/clark/2016/03/14/075524
 基礎知識
 需求分析
 系統分析
 系統設計
 系統實作
 持續回饋
 軟體,是特定領域問題的解決方案
 找出需求背後的問題,提供解決方案
需求+問題 解決方案
 基礎知識
 需求分析
 系統分析
 系統設計
 系統實作
 持續回饋
 提供多元面向的解決方案
餐廳營運系統
Azure
門店點餐平板 門店營運伺服器
餐廳營運資料庫
座位RFID掃描器
門店帶位前台
 釐清解決方案的使用情景
座位狀態顯示客戶入座功能
客戶餐點查詢
Timer帶位人員
自動座位安排
 釐清解決方案的操作流程
京站門店帶位前台
桌號:01
座位:03/04
桌號:02
座位:00/04
桌號:04
座位:00/04
桌號:05
座位:04/04
桌號:03
座位:00/02
桌號:06
座位:02/02
桌號:05
小籠包x1
臭豆腐x2
蚵仔煎x6
使用中
空座位
自動座位安排
 釐清解決方案的功能需求
工作項目 項目說明 優先順序
座位狀態顯示 - 定時刷新目前座位狀態
- 座位狀態:入座數量、座位數量、入座狀態
- 入座狀態:空座位、使用中
高
客戶入座功能 - 確認客戶人數及座位後,即可安排客人入座 高
客戶餐點查詢 - 帶位人員可查詢目前入座客戶的餐點訂單 低
自動帶位功能 - 確認客戶人數後,系統自動計算座位安排
- 計算規則:入座空位最少、不提供併桌計算
中
…… …… ……
…… …… ……
 釐清解決方案的領域概念
門店帶位前台
門店
座位
顧客
餐點訂單
1
*
*
1
*
1
1
*
 基礎知識
 需求分析
 系統分析
 系統設計
 系統實作
 持續回饋
 統一領域模型的英文詞彙
中文名詞 英文名詞 備註
門店 Store
座位 Seat
顧客 Customer
餐點訂單 Meal Order
…… …… ……
…… …… ……
…… …… ……
 套用詞彙表將領域模型轉為領域物件
門店帶位前台
Store
Seat
Customer
MealOrder
1
*
*
1
*
1
1
*
 劃分進出系統邊界的物件顆粒
門店帶位前台
Store
Seat
Customer
MealOrder
1
*
*
1
*
1
1
*
 劃分進出系統邊界的物件顆粒
門店帶位前台
Store
Seat
Customer
MealOrder
1
*
*
1
*
1
+Id
+Id+Id
1
*
 建立Entity物件進出系統邊界的物件門戶
門店帶位前台
Store
Seat
Customer
MealOrder
1
*
*
1
*
1
+Id
+Id+Id
1
*
<<inteface>>
CustomerRepository
<<inteface>>
SeatRepository
<<inteface>>
StoreRepository
 建立Entity物件進出系統邊界的物件門戶
門店帶位前台
Store
Seat
Customer
MealOrder
1
*
*
1
*
1
+Id
+Id+Id
1
*
<<inteface>>
CustomerRepository
<<inteface>>
SeatRepository
<<inteface>>
StoreRepository
 定義Entity物件之間的關聯
門店帶位前台
Store
Seat
Customer
MealOrder
1
*
*
1
*
1
+Id
+Id
+MealOrderList
+Id
<<inteface>>
CustomerRepository
<<inteface>>
SeatRepository
<<inteface>>
StoreRepository
 定義Entity物件之間的關聯
門店帶位前台
Store
Seat
Customer
MealOrder
1
*
*
1
+Id
+CustomerId
+Id
+MealOrderList
+Id
<<inteface>>
CustomerRepository
<<inteface>>
SeatRepository
<<inteface>>
StoreRepository
 定義Entity物件之間的關聯
門店帶位前台
Store
Seat
Customer
MealOrder
+StoreId
+Id
+CustomerId
+StoreId
+Id
+MealOrderList
+Id
<<inteface>>
CustomerRepository
+GetAllByStoreId(storeId)
<<inteface>>
SeatRepository
+GetAllByStoreId(storeId)
<<inteface>>
StoreRepository
 散落畫面欄位到Entity
門店帶位前台
Store
Seat
Customer
MealOrder
+Name
+Count
<<inteface>>
CustomerRepository
+GetAllByStoreId(storeId)
<<inteface>>
SeatRepository
+GetAllByStoreId(storeId)
<<inteface>>
StoreRepository
+Id
+Name
+StoreId
+Id
+Name
+Count
+State
+CustomerId
+StoreId
+Id
+MealOrderList
+Count
 散落畫面功能到Entity、Repository
門店帶位前台
Store
Seat
Customer
MealOrder
+Name
+Count
<<inteface>>
CustomerRepository
+AddCustomer(customer)
+GetAllByStoreId(storeId)
<<inteface>>
SeatRepository
+SetSeat(seat)
+GetAllByStoreId(storeId)
<<inteface>>
StoreRepository
+GetCurrentStore()
+Id
+Name
+StoreId
+Id
+Name
+Count
+State
+CustomerId
+StoreId
+Id
+MealOrderList
+Count
 散落畫面功能到Service
門店帶位前台
Store
Seat
Customer
MealOrder
+Name
+Count
<<inteface>>
CustomerRepository
+AddCustomer(customer)
+GetAllByStoreId(storeId)
<<inteface>>
SeatRepository
+SetSeat(seat)
+GetAllByStoreId(storeId)
<<inteface>>
StoreRepository
+GetCurrentStore()
+Id
+Name
+StoreId
+Id
+Name
+Count
+State
+CustomerId
+StoreId
+Id
+MealOrderList
+Count
SmartUsherService
+Usher(customer)
 描述功能職責,所進行的物件交互
門店帶位前台 - 自動帶位功能
SmartUsherService SeatRepository CustomerRepository
Usher(customer)
GetAllByStoreId(storeId)
return seatList
Distribute(customer, seatList)
SetSeat(seat)
AddCustomer(customer)
return seat
 基礎知識
 需求分析
 系統分析
 系統設計
 系統實作
 持續回饋
 套用Facade模式,簡化操作使用
門店帶位前台
<<inteface>>
CustomerRepository
+AddCustomer(customer)
+GetAllByStoreId(storeId)
<<inteface>>
SeatRepository
+SetSeat(seat)
+GetAllByStoreId(storeId)
<<inteface>>
StoreRepository
+GetCurrentStore()
SmartUsherService
+Usher(customer)
UsherContext
+StoreRepository
+SeatRepository
+CustomerRepository
+SmartUsherService
 選用DI Framework,填充Context內容
門店帶位前台
<<inteface>>
CustomerRepository
+AddCustomer(customer)
+GetAllByStoreId(storeId)
<<inteface>>
SeatRepository
+SetSeat(seat)
+GetAllByStoreId(storeId)
<<inteface>>
StoreRepository
+GetCurrentStore()
SmartUsherService
+Usher(customer)
UsherContext
+StoreRepository
+SeatRepository
+CustomerRepository
+SmartUsherService
DI Framework
SQL
StoreRepository
SQL
SeatRepository
SQL
CustomerRepository
<<create>> <<create>> <<create>>
<<create>>
DI Framework
 基礎知識
 需求分析
 系統分析
 系統設計
 系統實作
 持續回饋
 持續回饋問題,完整封裝領域知識
問題反饋
領域模型領域知識 領域物件
領域驅動設計
K.NET講師 Clark

Weitere ähnliche Inhalte

Was ist angesagt?

百度前端性能监控与优化实践
百度前端性能监控与优化实践百度前端性能监控与优化实践
百度前端性能监控与优化实践
Welefen Lee
 
Windows Azure Virtual Machine Services for Developers
Windows Azure Virtual Machine Services for DevelopersWindows Azure Virtual Machine Services for Developers
Windows Azure Virtual Machine Services for Developers
Jeff Chu
 

Was ist angesagt? (20)

Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
 
SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17 SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17
 
我們與Azure DevOps的距離
我們與Azure DevOps的距離我們與Azure DevOps的距離
我們與Azure DevOps的距離
 
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
 
客服系統的軟體架設計分享
客服系統的軟體架設計分享客服系統的軟體架設計分享
客服系統的軟體架設計分享
 
Monitoring Tools 大亂鬥 - Consul
Monitoring Tools 大亂鬥 - ConsulMonitoring Tools 大亂鬥 - Consul
Monitoring Tools 大亂鬥 - Consul
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
 
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
 
領域驅動設計
領域驅動設計領域驅動設計
領域驅動設計
 
前端编译平台
前端编译平台前端编译平台
前端编译平台
 
百度前端性能监控与优化实践
百度前端性能监控与优化实践百度前端性能监控与优化实践
百度前端性能监控与优化实践
 
Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練22016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
大規模微服務導入 - #2 從零開始的微服務 .NET Core 框架設計
大規模微服務導入 - #2 從零開始的微服務 .NET Core 框架設計大規模微服務導入 - #2 從零開始的微服務 .NET Core 框架設計
大規模微服務導入 - #2 從零開始的微服務 .NET Core 框架設計
 
容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中
 
Windows Azure Virtual Machine Services for Developers
Windows Azure Virtual Machine Services for DevelopersWindows Azure Virtual Machine Services for Developers
Windows Azure Virtual Machine Services for Developers
 
What are programs? 兼談現代化軟體開發
What are programs? 兼談現代化軟體開發What are programs? 兼談現代化軟體開發
What are programs? 兼談現代化軟體開發
 
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart FactorytwMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart Factory
 

Ähnlich wie 領域驅動設計 (Domain Driven Design)

版本控制系统进阶
版本控制系统进阶版本控制系统进阶
版本控制系统进阶
killmyday
 
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
ITband
 
service-oriented agile team-Q con-beijing2012
service-oriented agile team-Q con-beijing2012service-oriented agile team-Q con-beijing2012
service-oriented agile team-Q con-beijing2012
Qiao Liang
 
web开发中的职业发展方向
web开发中的职业发展方向web开发中的职业发展方向
web开发中的职业发展方向
Cao Li
 

Ähnlich wie 領域驅動設計 (Domain Driven Design) (20)

twMVC#11 | 架構設計入門
twMVC#11 | 架構設計入門twMVC#11 | 架構設計入門
twMVC#11 | 架構設計入門
 
面對移動化App挑戰的架構設計
面對移動化App挑戰的架構設計面對移動化App挑戰的架構設計
面對移動化App挑戰的架構設計
 
DDD x Architecture
DDD x ArchitectureDDD x Architecture
DDD x Architecture
 
[DDD] 快快樂樂學DDD
[DDD] 快快樂樂學DDD[DDD] 快快樂樂學DDD
[DDD] 快快樂樂學DDD
 
版本控制系统进阶
版本控制系统进阶版本控制系统进阶
版本控制系统进阶
 
2023 08 - SRE 實踐與開發平台指南 - 書友見面會
2023 08 - SRE 實踐與開發平台指南 - 書友見面會2023 08 - SRE 實踐與開發平台指南 - 書友見面會
2023 08 - SRE 實踐與開發平台指南 - 書友見面會
 
淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)
 
开源应用日志收集系统
开源应用日志收集系统开源应用日志收集系统
开源应用日志收集系统
 
實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)
 
Foodie 餐廳推薦系統
Foodie 餐廳推薦系統Foodie 餐廳推薦系統
Foodie 餐廳推薦系統
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & development
 
构建高性能MySQL系统
构建高性能MySQL系统构建高性能MySQL系统
构建高性能MySQL系统
 
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練32015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3
 
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
 
如何使用微軟Power系列服務的看法
如何使用微軟Power系列服務的看法如何使用微軟Power系列服務的看法
如何使用微軟Power系列服務的看法
 
網路規劃與設計
網路規劃與設計網路規劃與設計
網路規劃與設計
 
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練22015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
 
打造面向服务的敏捷团队 Q con-beijing2012
打造面向服务的敏捷团队 Q con-beijing2012打造面向服务的敏捷团队 Q con-beijing2012
打造面向服务的敏捷团队 Q con-beijing2012
 
service-oriented agile team-Q con-beijing2012
service-oriented agile team-Q con-beijing2012service-oriented agile team-Q con-beijing2012
service-oriented agile team-Q con-beijing2012
 
web开发中的职业发展方向
web开发中的职业发展方向web开发中的职业发展方向
web开发中的职业发展方向
 

Mehr von Jeff Chu

Microsoft Azure 概觀 (2014-4-2 雲端達人班)
Microsoft Azure 概觀 (2014-4-2 雲端達人班)Microsoft Azure 概觀 (2014-4-2 雲端達人班)
Microsoft Azure 概觀 (2014-4-2 雲端達人班)
Jeff Chu
 
Microsoft Azure 虛擬機器與虛擬網路 (2014-4-2 雲端達人班)
Microsoft Azure 虛擬機器與虛擬網路 (2014-4-2 雲端達人班)Microsoft Azure 虛擬機器與虛擬網路 (2014-4-2 雲端達人班)
Microsoft Azure 虛擬機器與虛擬網路 (2014-4-2 雲端達人班)
Jeff Chu
 
GWAB 2014 Taipei: 由本地移轉至雲端 - 構思與實踐
GWAB 2014 Taipei: 由本地移轉至雲端 - 構思與實踐GWAB 2014 Taipei: 由本地移轉至雲端 - 構思與實踐
GWAB 2014 Taipei: 由本地移轉至雲端 - 構思與實踐
Jeff Chu
 
雲端的架構開發 (Designing Cloud Application Architecture with Windows Azure Platform)
雲端的架構開發 (Designing Cloud Application Architecture with Windows Azure Platform)雲端的架構開發 (Designing Cloud Application Architecture with Windows Azure Platform)
雲端的架構開發 (Designing Cloud Application Architecture with Windows Azure Platform)
Jeff Chu
 

Mehr von Jeff Chu (20)

.NET Conf 2019 高雄場 - .NET Core 3.0
.NET Conf 2019 高雄場 - .NET Core 3.0.NET Conf 2019 高雄場 - .NET Core 3.0
.NET Conf 2019 高雄場 - .NET Core 3.0
 
Developing Serverless application with Microsoft Azure and Cognitive Services
Developing Serverless application with Microsoft Azure and Cognitive ServicesDeveloping Serverless application with Microsoft Azure and Cognitive Services
Developing Serverless application with Microsoft Azure and Cognitive Services
 
.NET Innovations and Improvements
.NET Innovations and Improvements.NET Innovations and Improvements
.NET Innovations and Improvements
 
Microsoft Azure IoT 手把手實作 @ K.NET by Maduka (2017-8-12)
Microsoft Azure IoT 手把手實作 @ K.NET by Maduka (2017-8-12)Microsoft Azure IoT 手把手實作 @ K.NET by Maduka (2017-8-12)
Microsoft Azure IoT 手把手實作 @ K.NET by Maduka (2017-8-12)
 
Innovations of .NET and Azure (Recaps of Build 2017 selected sessions)
Innovations of .NET and Azure (Recaps of Build 2017 selected sessions)Innovations of .NET and Azure (Recaps of Build 2017 selected sessions)
Innovations of .NET and Azure (Recaps of Build 2017 selected sessions)
 
利用微軟雲端平台打造完整 IoT 服務鍊 (maduka)
利用微軟雲端平台打造完整 IoT 服務鍊 (maduka)利用微軟雲端平台打造完整 IoT 服務鍊 (maduka)
利用微軟雲端平台打造完整 IoT 服務鍊 (maduka)
 
Developing serverless applications with azure functions
Developing serverless applications with azure functionsDeveloping serverless applications with azure functions
Developing serverless applications with azure functions
 
Connect() Mini 2016
Connect() Mini 2016Connect() Mini 2016
Connect() Mini 2016
 
Windows 與 Azure 的容器旅程 @ Skilltree Day
Windows 與 Azure 的容器旅程 @ Skilltree DayWindows 與 Azure 的容器旅程 @ Skilltree Day
Windows 與 Azure 的容器旅程 @ Skilltree Day
 
物件導向設計原則:SOLID + DI
物件導向設計原則:SOLID + DI物件導向設計原則:SOLID + DI
物件導向設計原則:SOLID + DI
 
例外處理實務
例外處理實務例外處理實務
例外處理實務
 
Machine Learning, Big Data, Insights
Machine Learning, Big Data, InsightsMachine Learning, Big Data, Insights
Machine Learning, Big Data, Insights
 
Global Azure Bootcamp 2015 Taipei: Planning and Migrating your Application fr...
Global Azure Bootcamp 2015 Taipei: Planning and Migrating your Application fr...Global Azure Bootcamp 2015 Taipei: Planning and Migrating your Application fr...
Global Azure Bootcamp 2015 Taipei: Planning and Migrating your Application fr...
 
Cloud computing for manufacturing
Cloud computing for manufacturingCloud computing for manufacturing
Cloud computing for manufacturing
 
Microsoft Azure 新功能導覽 @ Build 2014
Microsoft Azure 新功能導覽 @ Build 2014Microsoft Azure 新功能導覽 @ Build 2014
Microsoft Azure 新功能導覽 @ Build 2014
 
Microsoft Azure 概觀 (2014-4-2 雲端達人班)
Microsoft Azure 概觀 (2014-4-2 雲端達人班)Microsoft Azure 概觀 (2014-4-2 雲端達人班)
Microsoft Azure 概觀 (2014-4-2 雲端達人班)
 
Microsoft Azure 虛擬機器與虛擬網路 (2014-4-2 雲端達人班)
Microsoft Azure 虛擬機器與虛擬網路 (2014-4-2 雲端達人班)Microsoft Azure 虛擬機器與虛擬網路 (2014-4-2 雲端達人班)
Microsoft Azure 虛擬機器與虛擬網路 (2014-4-2 雲端達人班)
 
GWAB 2014 Taipei: 由本地移轉至雲端 - 構思與實踐
GWAB 2014 Taipei: 由本地移轉至雲端 - 構思與實踐GWAB 2014 Taipei: 由本地移轉至雲端 - 構思與實踐
GWAB 2014 Taipei: 由本地移轉至雲端 - 構思與實踐
 
從雲端看資訊科技的未來 (2014-03-26 國立嘉義大學資管系週會演講)
從雲端看資訊科技的未來 (2014-03-26 國立嘉義大學資管系週會演講)從雲端看資訊科技的未來 (2014-03-26 國立嘉義大學資管系週會演講)
從雲端看資訊科技的未來 (2014-03-26 國立嘉義大學資管系週會演講)
 
雲端的架構開發 (Designing Cloud Application Architecture with Windows Azure Platform)
雲端的架構開發 (Designing Cloud Application Architecture with Windows Azure Platform)雲端的架構開發 (Designing Cloud Application Architecture with Windows Azure Platform)
雲端的架構開發 (Designing Cloud Application Architecture with Windows Azure Platform)
 

領域驅動設計 (Domain Driven Design)