مرور سریع مفاهیم بکاند داتنت و معماری
LINQ و Collectionها، طولعمر سرویسها در DI، سبکهای معماری، انواع API و مدلهای Concurrency در .NET.
جمعبندی نکات پراکندهٔ بکاند که معمولاً در طراحی و مصاحبههای .NET بارها تکرار میشوند — از تفاوت IQueryable و IEnumerable تا انتخاب بین REST و gRPC.
فهرست بخشها
LINQ و Collectionها0/2
Tracking در برابر NoTracking و تفاوت رفتاری List، ICollection، IEnumerable و IQueryable.
var users = await db.Users.AsNoTracking().ToListAsync();
برای APIهای فقط-خواندنی (مثل GET لیست)، همیشه AsNoTracking بزنید.
تفاوت IEnumerable و IQueryable سؤال کلاسیک مصاحبهٔ EF Core است: فیلتر روی IQueryable قبل از ToList در دیتابیس اجرا میشود، فیلتر روی IEnumerable در حافظهٔ اپلیکیشن.
فیلتر کردن روی IEnumerable بهجای IQueryable باعث میشود کل جدول از دیتابیس بارگذاری شود و بعد فیلتر روی آن در حافظه اجرا شود.
Nullable و Required0/1
رفتار Nullable Reference Types با مدلهای Validation.
[Required]
public string Test { get; set; }
طولعمر سرویسها در Dependency Injection0/3
سه طولعمر اصلی ثبت سرویس در کانتینر DI داخلی ASP.NET Core.
builder.Services.AddSingleton<IMyCache, MyCache>();
نگهداشتن وضعیت مخصوص یک کاربر (مثل شناسهٔ کاربر جاری) در یک سرویس Singleton، باعث نشتی اطلاعات بین کاربران مختلف میشود.
builder.Services.AddScoped<IOrderService, OrderService>();
تزریق یک سرویس Scoped داخل یک سرویس Singleton خطای Captive Dependency میدهد — یکی از رایجترین خطاهای DI در ASP.NET Core.
builder.Services.AddTransient<IEmailSender, EmailSender>();
سبکهای معماری نرمافزار0/4
Clean Architecture، Onion Architecture، Microservices و DDD.
انواع API0/7
دستهبندی اصلی API ها بر اساس مدل ارتباطی: Request/Response در برابر Event-Driven.
این یکی از سؤالات رایج مصاحبهٔ معماری بکاند است — پاسخ خوب همیشه شامل «بستگی دارد به...» است، نه یک جواب مطلق.
مدلهای Concurrency در .NET0/4
روشهای مختلف اجرای موازی و غیرهمزمان در .NET Core.
public async Task<int> GetDataAsync()
{
await Task.Delay(1000);
return 1;
}
Parallel.For(0, 10, i =>
{
Console.WriteLine(i);
});
Task.Run(() =>
{
// کد روی Thread جدا
});
CQRS و چند الگوی طراحی رایج0/5
جداسازی خواندن و نوشتن، و چهار الگوی طراحی پرکاربرد.
پروتکلها و ارتباطات0/5
gRPC، JWT، RabbitMQ، Socket و SignalR — ابزارهای ارتباطی پرکاربرد در بکاند .NET.
