[Asp.Net Core] 簡易的使用MediatR

簡易的使用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