معماری نمونه یک پروژه داتنت چطور باید باشد؟
یک چیدمان مرجع از لایهها و پوشهها برای پروژههای داتنت که میتوان آن را بهعنوان نقطه شروع هر پروژه جدید استفاده کرد.
چرا مهم است؟
داشتن یک ساختار مرجع، تصمیمگیری درباره «این فایل کجا باید برود» را از روز اول پروژه حذف میکند و هماهنگی بین اعضای تیم را سادهتر میکند.
چیدمان نمونه (Clean/Onion-Style)
src/
MyApp.Domain/ → Entity، Value Object، قواعد کسبوکار خالص
MyApp.Application/ → Use Caseها، Interface سرویسها، DTO
MyApp.Infrastructure/ → پیادهسازی Interfaceها: EF Core، ایمیل، فایل
MyApp.Api/ → Controllerها، Middleware، Program.cs
tests/
MyApp.UnitTests/
MyApp.IntegrationTests/
قاعده جهت وابستگی
هر لایه فقط به لایههای «داخلیتر» وابسته است: Api → Application → Domain و Infrastructure → Application/Domain؛ Domain به هیچچیز وابسته نیست.
نکات مهم
- هر پروژه (
.csproj) دقیقاً همین مرزها را با Reference بین پروژهها اجرایی میکند — نقض قاعده باعث خطای Build میشود، نه فقط یک نظر Code Review. - برای پروژههای خیلی کوچک، همین ساختار را میتوان در قالب پوشهبندی داخل یک پروژه واحد (Vertical Slice سبکتر) هم پیاده کرد.
اشتباه رایج
❌ کپی این ساختار برای یک اسکریپت یا API خیلی کوچک صرفاً چون «استاندارد» است — این چیدمان برای پروژههایی که واقعاً پیچیدگی کسبوکار دارند ارزش میآفریند؛ برای یک CRUD ساده، سربار غیرضروری است.
منبع و مطالعه بیشتر
خلاصه
یک معماری نمونه معمولاً چهار لایه Domain/Application/Infrastructure/Api دارد که جهت وابستگی همیشه رو به داخل است. این چیدمان را فقط برای پروژههای با پیچیدگی واقعی به کار ببرید. مرجع کامل: کتاب معماری وب اپلیکیشن مدرن مایکروسافت.
