CQRS命令查詢職責分離模式 | 運動資訊第一站 - 2024年11月
CQRS命令查詢職責分離模式
CQRS命令查詢職責分離模式
Command Query Responsibility Segregation
在DDD的領域中,CQRS模式經常被人誤解,應用在現實世界的軟體專案時更是如此。在本書中,我們將學習與CQRS有關的一切,例如:Event Sourcing、如何針對讀取與寫入的不同來設定資料庫等等。
首先,本書將介紹什麼是CQRS,探討其背後的精神與原則,以及它可以為專案帶來的好處。接下來,我們將說明CQRS的常見誤解與反模式(Anti-Pattern)。我們將討論一個專案範例,逐步且詳盡地展示CQRS實作,這個範例如同我們在現實世界中會遇到的需求,而本書將帶領各位體會CQRS的奧祕。
讀完這本書,你將對CQRS模式以及如何在軟體專案中實作CQRS有更紮實的理解。
在這本書中,你將學到:
・重構為任務型介面,並遠離CRUD思維
・實作命令與查詢處理器的修飾器
・分離出另外一個讀取專用的資料庫
・與CQRS相關的常見誤解,以及最佳實務建議
專文推薦
『我在北科大資工所兼差教軟體架構,課程結合領域驅動設計、Event Storming、CQRS、Clean Architecture、Event Sourcing與TDD。本書雖名為CQRS但卻不只是CQRS,若可融會貫通書中內容,對於靈活運用上述技術亦有莫大助益。』-「搞笑談軟工」板主Teddy Chen
『台灣很少有關於CQRS模式(可以想成是讀寫分離模式)的專書,就算是外文書專門講CQRS模式的也不多,而我發現,在AI與爬蟲應用越來越多的時代,很多應用都需要使用這種技術,於是萌生引入CQRS書籍的意念。……台灣太需要關於這類議題的書籍了。』-博碩文化 總編輯 陳錦輝
作者簡介
Ajay Kumar
・Amazon的作者頁面:amazon.com/author/ajaykumar
・Email:[email protected]、[email protected]
・Linkedin:www.linkedin.com/in/ajaycucek
・Facebook:www.facebook.com/ajaycucek
・Youtube:www.youtube.com/channel/UC1uXEebtqCLYxVdzirKZGIA
・Twitter:twitter.com/ajaycucek
・Instagram:www.instagram.com/ajaycucek/
・Skype:ajaycucek
導讀
推薦序
總編輯的話
Chapter 1:CQRS簡介
CQRS的由來
CQRS的必要性為何
真實情境中的CQRS
本章小結
Chapter 2:範例專案
議題領域說明
簡述應用程式碼
潛在的問題
本章小結
Chapter 3:重構為任務型介面
CRUD介面
任務型介面
拆解update方法
回顧:拆解update方法
任務型的使用者介面
新增與刪除方法
本章小結
Chapter 4:命令與查詢分離
第一道「命令」
CQS與CQRS在命令上的差異
CQRS中的命令與查詢
洋蔥式架構下的命令與查詢
命令與DTO物件
利用Spring框架來建立命令處理器
關於查詢
本章小結
Chapter 5:在命令與查詢處理器上實作修飾器
新需求來了!重試資料庫連線
實作資料庫重試修飾器
修飾設計模式
再來一份修飾器吧
命令與查詢處理器的最佳實務指引
本章小結
Chapter 6:簡化讀取資訊模型
關於讀取資訊模型
領域模型的分離
簡化讀取模型
重點回顧:簡化讀取模型
洋蔥式架構與讀取模型
本章小結
Chapter 7:查詢專用資料庫
關於可擴充性
實務上的資料層級分離實例
設計查詢專用資料庫
建立查詢專用資料庫
重點回顧:建立查詢專用資料庫
可擴充性
建立讀取資料庫時要三思的事情
本章小結
Chapter 8:同步命令與查詢資料庫
狀態驅動投影
同步式的狀態驅動投影
事件驅動投影
一致性
最終一致性
版本控制
CQRS與CAP定理
本章小結
Chapter 9:CQRS的最佳實務與常見誤解
CQRS與Event Sourcing
演化式設計
處理器中發出的命令與查詢
單向命令
CQRS與規格模式
全書總結