CodeShot
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 (باعث پراکندگی قواعد کسب‌وکار می‌شود).