Leadسختی 4 از ۵· در 45٪ مصاحبههای این حوزه پرسیده شده
Pipeline Behavior در MediatR چیست؟
☆نشان کردنپاسخ کوتاه
یک لایهٔ میانی که قبل/بعد از اجرای هر Handler بهطور خودکار اجرا میشود — مثل Validation یا Logging مشترک برای همهٔ Commandها/Queryها.
پاسخ کامل
بهجای نوشتن کد اعتبارسنجی یا لاگگیری در هر Handler بهطور جداگانه، یک IPipelineBehavior<TRequest, TResponse> تعریف میشود که برای همهٔ Requestها (یا زیرمجموعهای از آنها) اجرا میشود.
مثال کد
public class ValidationBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse>
{
public async Task<TResponse> Handle(TRequest request, RequestHandlerDelegate<TResponse> next, CancellationToken ct)
{
// اعتبارسنجی با FluentValidation قبل از رسیدن به Handler
return await next();
}
}
نکته مهم
ترتیب اجرای چند Behavior قابل تنظیم است و در DI Container ثبت میشود.
اشتباه رایج
❌ تکرار کد اعتبارسنجی/لاگ در تکتک Handlerها بهجای استفاده از یک Pipeline Behavior مشترک.
