SlideShare a Scribd company logo
1 of 29
Gelis 程式設計訓練營
軟體開發之路
吳俊毅 Gelis - FB 軟體開發之路-經營者
關於我
• 部落格 (Gelis 技術隨筆)
http://gelis-dotnet.blogspot.tw/
• FB 粉絲團(Gelis 的程式設計訓練營)
https://www.facebook.com/gelis.dev.learning/?ref=bookmarks
• FB 社團 (軟體開發之路)
https://www.facebook.com/groups/361804473860062/?ref=ts&fref=ts
集英信誠 -資深.NET技術顧問
Domain Domain
相依性
實作篇
Web page title
http://www.url.com
XX銀行線上房屋貸款申請系統
存檔 取消
中文姓名: text
行動電話:
電子信箱:
text
text
出生日期:
婚姻狀況:
公司名稱:
收入來源:
現住房屋:
通訊地址:
/ /
text
年收入:
職稱:
text
text
text
text
text
text
領域驅動開發
領域驅動開發
程式碼結構 業務領域 習慣用
法 建模
通用語言(Ubiquitous Language)
迭代
• 完善模型的同時,也同步完善程式碼
Business Language
商業語言
Technical Language
技術語言
線上房貸
申請系統
Use Case Scenario
銀行
顧客
貸款條件
.NET Core
Framework
Message Queue
Two-Phase Commit
MSSQL
Redis
Clean Architecture
CQRS
SMPP Server
Account
Ubiquitous Language
通用語言
Domain
Modeling
房貸利率
契約
擔保品
MVC
C# Project Templates
領域驅動分為兩大部分:
(一). 戰略建模(Strategic)
(二). 戰術建模(Tactical)
Bounded Context (限界上下文)
Sub Domain (子領域)
Context Map (上下文地圖)
Bounded Context A
Housing Loans Application
Bounded Context B
Message System
Bounded Context C
Interest rate
U
D
U
D
U
D
• Application Service (應用服務)
• Entities (實體)
• Value Object (值物件)
• Aggregates (聚合)
• Domain Service (領域服務)
• Repository (儲存庫)
Entities (實體)
生命週期
獨一無二
Value Object (值物件)
度量一個東
西 只要兩個值對象的屬性
相等,那麼它們就是相等的
• 值對像是不可變的,如果要改變值對象的內容,那
就重新創建一個值對象
• 值對像沒有生命週期
• 例如:金額、數值 或 貨幣單位,顏色 等等..
Domain Service (領域服務)
操作
• 領域服務不具有狀態性
Application Service (應用服務)
Use Case
Aggregates (聚合)
領域邊界
聚合邊界 建模 一群具有關聯的
領域物件集合在一起
Repository (儲存庫)
(封裝/儲存)
• 根據業務情境與領域思維來設計實體、而非由資料儲存來設計
≠
Domain Modeling ORM Model or ER-Model
領域實體結構不一定完全等於≠資料儲存結
戰術建模(Tactical Modeling)
相依性
【Policy and Levels】
『各元件的〔層級〕』
• 【低層級】 【高層級】
• 例子:
案例:線上房貸申請系統
• 銀行顧客,或是非銀行顧客可到網路銀行線上房貸申請首頁,使用網銀帳號或
簡訊密碼進行身份認證後,可填寫「基本資料」與「貸款資料」,
• 非銀行顧客須先填寫「基本資料」
• 誰與系統互動?
• 確認哪些為外部系統?
 Scenario
Demo:
使用 .NET 5 建立程式碼
Q&A

More Related Content

What's hot

Net 6 的 blazor 開發新視界
Net 6 的 blazor 開發新視界Net 6 的 blazor 開發新視界
Net 6 的 blazor 開發新視界Gelis Wu
 
前端大型系統的基石 TypeScript
前端大型系統的基石 TypeScript前端大型系統的基石 TypeScript
前端大型系統的基石 TypeScriptGelis Wu
 
架構設計好簡單系列 設計符合團隊的範本精靈 (Project template)
架構設計好簡單系列   設計符合團隊的範本精靈 (Project template)架構設計好簡單系列   設計符合團隊的範本精靈 (Project template)
架構設計好簡單系列 設計符合團隊的範本精靈 (Project template)Gelis Wu
 
Web 2.0經濟價值
Web 2.0經濟價值Web 2.0經濟價值
Web 2.0經濟價值jehuen
 
Asp.net mvc 基礎
Asp.net mvc 基礎Asp.net mvc 基礎
Asp.net mvc 基礎Gelis Wu
 
【第一期】开发的前端之痛 by 银环
【第一期】开发的前端之痛 by 银环【第一期】开发的前端之痛 by 银环
【第一期】开发的前端之痛 by 银环tbosstraining
 
如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)Gelis Wu
 

What's hot (7)

Net 6 的 blazor 開發新視界
Net 6 的 blazor 開發新視界Net 6 的 blazor 開發新視界
Net 6 的 blazor 開發新視界
 
前端大型系統的基石 TypeScript
前端大型系統的基石 TypeScript前端大型系統的基石 TypeScript
前端大型系統的基石 TypeScript
 
架構設計好簡單系列 設計符合團隊的範本精靈 (Project template)
架構設計好簡單系列   設計符合團隊的範本精靈 (Project template)架構設計好簡單系列   設計符合團隊的範本精靈 (Project template)
架構設計好簡單系列 設計符合團隊的範本精靈 (Project template)
 
Web 2.0經濟價值
Web 2.0經濟價值Web 2.0經濟價值
Web 2.0經濟價值
 
Asp.net mvc 基礎
Asp.net mvc 基礎Asp.net mvc 基礎
Asp.net mvc 基礎
 
【第一期】开发的前端之痛 by 银环
【第一期】开发的前端之痛 by 银环【第一期】开发的前端之痛 by 银环
【第一期】开发的前端之痛 by 银环
 
如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)
 

More from Gelis Wu

Blazor in NET 8 的重大改變___________________
Blazor in NET 8 的重大改變___________________Blazor in NET 8 的重大改變___________________
Blazor in NET 8 的重大改變___________________Gelis Wu
 
.NET 7 升級教戰手冊_V1.0.pdf
.NET 7 升級教戰手冊_V1.0.pdf.NET 7 升級教戰手冊_V1.0.pdf
.NET 7 升級教戰手冊_V1.0.pdfGelis Wu
 
顧問養成秘技 - 顧問服務實戰.pptx
顧問養成秘技 - 顧問服務實戰.pptx顧問養成秘技 - 顧問服務實戰.pptx
顧問養成秘技 - 顧問服務實戰.pptxGelis Wu
 
Blazor Component 開發實戰
Blazor Component 開發實戰Blazor Component 開發實戰
Blazor Component 開發實戰Gelis Wu
 
一個 ASP.NET Core 2.1 開發指南
一個 ASP.NET Core 2.1 開發指南一個 ASP.NET Core 2.1 開發指南
一個 ASP.NET Core 2.1 開發指南Gelis Wu
 
Dot netstandard2.0與.net的未來發展
Dot netstandard2.0與.net的未來發展Dot netstandard2.0與.net的未來發展
Dot netstandard2.0與.net的未來發展Gelis Wu
 
客製化的 Web api 的框架設計
客製化的 Web api 的框架設計客製化的 Web api 的框架設計
客製化的 Web api 的框架設計Gelis Wu
 
Asp.net identity 2.0
Asp.net identity 2.0Asp.net identity 2.0
Asp.net identity 2.0Gelis Wu
 
Azure PaaS (WebApp & SQL Database) workshop solution
Azure PaaS (WebApp & SQL Database) workshop solutionAzure PaaS (WebApp & SQL Database) workshop solution
Azure PaaS (WebApp & SQL Database) workshop solutionGelis Wu
 
活用 Application insight
活用 Application insight活用 Application insight
活用 Application insightGelis Wu
 
企業現代化網站架構
企業現代化網站架構企業現代化網站架構
企業現代化網站架構Gelis Wu
 
Css java script 前端網頁設計概論(day2).pics
Css java script 前端網頁設計概論(day2).picsCss java script 前端網頁設計概論(day2).pics
Css java script 前端網頁設計概論(day2).picsGelis Wu
 
Visual studio 2010 塑模化應用程式講座v4
Visual studio 2010 塑模化應用程式講座v4Visual studio 2010 塑模化應用程式講座v4
Visual studio 2010 塑模化應用程式講座v4Gelis Wu
 
Css java script 前端網頁設計概論(day1)
Css java script 前端網頁設計概論(day1)Css java script 前端網頁設計概論(day1)
Css java script 前端網頁設計概論(day1)Gelis Wu
 
C sharp物件導向 分層架構課程
C sharp物件導向   分層架構課程C sharp物件導向   分層架構課程
C sharp物件導向 分層架構課程Gelis Wu
 
.Net framework 技術架構發展與 c# 6.0
.Net framework 技術架構發展與 c# 6.0.Net framework 技術架構發展與 c# 6.0
.Net framework 技術架構發展與 c# 6.0Gelis Wu
 
使用 Release management 2013 進行自動化部署
使用 Release management 2013 進行自動化部署使用 Release management 2013 進行自動化部署
使用 Release management 2013 進行自動化部署Gelis Wu
 
使用 Quartz
使用 Quartz使用 Quartz
使用 QuartzGelis Wu
 

More from Gelis Wu (18)

Blazor in NET 8 的重大改變___________________
Blazor in NET 8 的重大改變___________________Blazor in NET 8 的重大改變___________________
Blazor in NET 8 的重大改變___________________
 
.NET 7 升級教戰手冊_V1.0.pdf
.NET 7 升級教戰手冊_V1.0.pdf.NET 7 升級教戰手冊_V1.0.pdf
.NET 7 升級教戰手冊_V1.0.pdf
 
顧問養成秘技 - 顧問服務實戰.pptx
顧問養成秘技 - 顧問服務實戰.pptx顧問養成秘技 - 顧問服務實戰.pptx
顧問養成秘技 - 顧問服務實戰.pptx
 
Blazor Component 開發實戰
Blazor Component 開發實戰Blazor Component 開發實戰
Blazor Component 開發實戰
 
一個 ASP.NET Core 2.1 開發指南
一個 ASP.NET Core 2.1 開發指南一個 ASP.NET Core 2.1 開發指南
一個 ASP.NET Core 2.1 開發指南
 
Dot netstandard2.0與.net的未來發展
Dot netstandard2.0與.net的未來發展Dot netstandard2.0與.net的未來發展
Dot netstandard2.0與.net的未來發展
 
客製化的 Web api 的框架設計
客製化的 Web api 的框架設計客製化的 Web api 的框架設計
客製化的 Web api 的框架設計
 
Asp.net identity 2.0
Asp.net identity 2.0Asp.net identity 2.0
Asp.net identity 2.0
 
Azure PaaS (WebApp & SQL Database) workshop solution
Azure PaaS (WebApp & SQL Database) workshop solutionAzure PaaS (WebApp & SQL Database) workshop solution
Azure PaaS (WebApp & SQL Database) workshop solution
 
活用 Application insight
活用 Application insight活用 Application insight
活用 Application insight
 
企業現代化網站架構
企業現代化網站架構企業現代化網站架構
企業現代化網站架構
 
Css java script 前端網頁設計概論(day2).pics
Css java script 前端網頁設計概論(day2).picsCss java script 前端網頁設計概論(day2).pics
Css java script 前端網頁設計概論(day2).pics
 
Visual studio 2010 塑模化應用程式講座v4
Visual studio 2010 塑模化應用程式講座v4Visual studio 2010 塑模化應用程式講座v4
Visual studio 2010 塑模化應用程式講座v4
 
Css java script 前端網頁設計概論(day1)
Css java script 前端網頁設計概論(day1)Css java script 前端網頁設計概論(day1)
Css java script 前端網頁設計概論(day1)
 
C sharp物件導向 分層架構課程
C sharp物件導向   分層架構課程C sharp物件導向   分層架構課程
C sharp物件導向 分層架構課程
 
.Net framework 技術架構發展與 c# 6.0
.Net framework 技術架構發展與 c# 6.0.Net framework 技術架構發展與 c# 6.0
.Net framework 技術架構發展與 c# 6.0
 
使用 Release management 2013 進行自動化部署
使用 Release management 2013 進行自動化部署使用 Release management 2013 進行自動化部署
使用 Release management 2013 進行自動化部署
 
使用 Quartz
使用 Quartz使用 Quartz
使用 Quartz
 

深入淺出領域驅動設計:以 .NET 5 與線上房貸申請系統為例