Mediatr
MediatR 是一個流行的開源 .NET 庫,通過實現中介者模式來提供簡單靈活的請求/響應處理、命令處理和事件通知,同時促進應用程序組件之間的鬆散耦合。
https://mediatr.app/?utm_source=aipure
產品資訊
已更新:09/11/2024
什麼是Mediatr
MediatR 是 Jimmy Bogard 開發的一個輕量級但強大的庫,用於在 .NET 應用程序中實現中介者設計模式。它作為一個中間件,通過在系統的不同部分之間路由請求、命令、查詢和通知來幫助解耦應用程序組件,而無需它們之間有直接依賴。該庫特別適用於實現命令查詢責任分離 (CQRS) 模式和以清潔和可維護的方式管理進程內消息。
Mediatr 的主要功能
MediatR 是一個輕量級的 .NET 函式庫,實現了中介者模式,提供了一種簡單的方法來處理進程內的消息,且無需依賴。它支持請求/響應模式、命令、查詢、通知和事件,無論是同步還是異步。該函式庫促進了組件之間的鬆散耦合,並有助於在 .NET 應用程序中實現 CQRS(命令查詢職責分離)架構。
管道行為: 支持類似中間件的行為,用於處理橫切關懷,如日誌記錄、驗證和緩存,使開發人員能夠在不修改現有代碼的情況下添加功能
自動處理程序發現: 自動識別並註冊應用程序中的處理程序,減少顯式配置的需求並簡化設置
多種消息類型: 支持多種消息類型,包括請求/響應、命令、查詢、通知和事件,並通過 C# 泛型變體進行智能分派
跨平台兼容性: 支持不同的 .NET 平台,包括 .NET Framework 4.6.1 和 netstandard2.0,使其在各種項目類型中具有靈活性
Mediatr 的用例
Web API 開發: 適合用於構建乾淨、可維護的 ASP.NET Core API,通過將業務邏輯與控制器分離並實現 CQRS 模式
企業應用程序: 有助於管理大型企業應用程序中的複雜性,通過將代碼組織成功能聚焦的模塊並實現鬆散耦合
事件驅動系統: 通過處理應用程序中的通知和事件,促進事件驅動架構的構建
優點
促進乾淨的架構和關注點分離
減少應用程序組件之間的耦合
實現和集成簡單,設置最少
缺點
在高吞吐量場景中可能會引入性能開銷
對於小型應用程序可能會增加不必要的複雜性
僅限於進程內通信
如何使用 Mediatr
安裝所需的 NuGet 套件: 將 MediatR 和 MediatR.Extensions.Microsoft.DependencyInjection NuGet 套件添加到您的 .NET 專案中
在 Startup 中配置 MediatR: 在 ConfigureServices 方法中使用 services.AddMediatR() 將 MediatR 添加到服務集合中,以自動註冊處理程序
創建請求類: 創建一個實現 IRequest(對於無返回值的命令)或 IRequest<T>(對於返回數據的查詢)的類
創建處理程序類: 創建一個實現 IRequestHandler<TRequest> 或 IRequestHandler<TRequest,TResponse> 的處理程序類,並實現 Handle 方法
注入 IMediator: 在需要發送請求的控制器或服務中注入 IMediator 介面
發送請求: 使用注入的 IMediator 通過 Send() 發送請求/響應或通過 Publish() 發送通知
可選:添加行為: 使用 IPipelineBehavior<TRequest,TResponse> 實現管道行為,以處理日誌記錄、驗證和授權等橫切關注點
Mediatr 常見問題
MediatR 是一個 .NET 函式庫,實現了中介者模式,幫助將應用程式邏輯與表示層解耦。它通常用於 ASP.NET Core 應用程式中,以管理組件之間的進程內通信。