Seniorسختی 3 از ۵· در 70٪ مصاحبههای این حوزه پرسیده شده
MediatR در ASP.NET Core چه نقشی دارد؟
☆نشان کردنپاسخ کوتاه
یک کتابخانه که الگوی Mediator را پیاده میکند: Controller بهجای صدا زدن مستقیم سرویسها، یک Command/Query را به MediatR میفرستد و MediatR آن را به Handler مربوطه هدایت میکند.
پاسخ کامل
این کار باعث میشود Controller هیچ وابستگی مستقیمی به منطق کسبوکار نداشته باشد — فقط _mediator.Send(request) را صدا میزند. افزودن رفتار مشترک (مثل Validation یا Logging) هم با Pipeline Behaviorها روی همهٔ Requestها بهصورت متمرکز ممکن میشود.
مثال کد
public class OrdersController : ControllerBase
{
private readonly IMediator _mediator;
[HttpPost]
public async Task<IActionResult> Create(CreateOrderCommand cmd) =>
Ok(await _mediator.Send(cmd));
}
نکته مهم
MediatR در پروژههای Clean Architecture معمولاً در لایهٔ Application قرار میگیرد.
اشتباه رایج
❌ نوشتن منطق کسبوکار مستقیم داخل Handler بدون عبور از Domain Entity (باعث پراکندگی قواعد کسبوکار میشود).
