簡易的使用MediatR
CQRS - 命令與查詢責任隔離模式
詳細介紹請參考 https://docs.microsoft.com/zh-tw/azure/architecture/patterns/cqrs
MediatR https://github.com/jbogard/MediatR
開發環境
Rider
NetCore 3.0
1. 安裝nuget package
- MediatR
- MediatR.Extensions.Microsoft.DependencyInjection(視情況選擇,這邊用的是NetCore內建的DI
2. 建立一個Handler(負責做事的角色
- 這邊會需要實做一個Interface IRequestHandler<T1,T2>
- T1代表的是接收的Request型別
- T2代表的是回傳的Resposne型別
- 這時會發現T1的型別飄紅線,因為在IRequestHandler有針對T1的型別做where限制
- 直接讓IDE自動實做T1的interface和Handler的實做方法
- 再加上一點方法實現
- 目前為止Handler的部份差不多完成了
4. 接下來需要再Startup上註冊Handler
5. 新增對應的Controller
- 這邊需要注入一個interface,IMediator
- 在Action內透過IMediator提供的Send方法傳入request,會找到對應的Handler做事(依照上面實做的Interface),並回傳對應的resposne型別
6. 接者新增一個用來Create的Handler
- 這邊有用到一個MediatR內建的型別Unit,是用在無回傳結果的方法
7. 接著新增Controller的Action
8. 上述的步驟沒有絕對的順序,仍然依照個人開發習慣而定
先描述簡單的使用方式和流程,後續有需要再繼續補充內容 XD
Sample Code : https://github.com/ianChen806/MediatRSample/tree/master