Seniorسختی 4 از ۵· در 71٪ مصاحبههای این حوزه پرسیده شده
Clean Architecture چیست و جهت وابستگیها در آن چگونه است؟
☆نشان کردنپاسخ کوتاه
معماری لایهای که در آن جهت همه وابستگیها بهسمت داخل (Domain) است و لایههای بیرونی مثل دیتابیس و UI جزئیات قابل تعویض محسوب میشوند.
پاسخ کامل
چهار لایه معمول: Domain، Application، Infrastructure، Presentation.
قاعده طلایی Dependency Rule است: کد لایه داخلی هرگز نباید چیزی از لایه بیرونی بداند. بنابراین:
Domainبه هیچچیز وابسته نیست.Applicationفقط بهDomainوابسته است و Interfaceها را تعریف میکند.Infrastructureآن Interfaceها را پیاده میکند (وابستگی معکوس میشود).PresentationبهApplicationو — فقط برای سیمکشی DI — بهInfrastructure.
نتیجه: تعویض SQL Server با چیز دیگر، یا تعویض Web API با یک Console App، هسته کسبوکار را دستنخورده باقی میگذارد.
مثال کد
// Application — تعریف قرارداد
public interface ICapsuleRepository
{
Task<Capsule?> GetBySlugAsync(string slug, CancellationToken ct = default);
}
// Infrastructure — پیادهسازی
public class CapsuleRepository : ICapsuleRepository { /* Dapper + SP */ }
نکته مهم
این همان چیزی است که تست معماری (NetArchTest) در این پروژه بررسی میکند: هیچ ارجاعی از Domain به لایههای بالاتر مجاز نیست.
اشتباه رایج
❌ گذاشتن Attributeهای EF Core یا [Table] روی موجودیتهای Domain — این یعنی Domain به یک فناوری خاص دیتابیس وابسته شده است.
