مبانی .NET (.NET Fundamentals)
.NET یک Runtime + SDK + Framework Libraries است؛ CLR، BCL و SDK سه رکن اصلی آن برای اجرا، استفاده و ساخت برنامهها هستند.
چرا مهم است؟
قبل از ورود به ASP.NET Core یا EF Core باید بدانید کد C# دقیقاً چطور از IL به Machine Code میرسد و CLR/BCL/SDK هرکدام چه نقشی دارند.
.NET چیست؟
.NET یک Runtime + SDK + Framework Libraries است که از چند زبان پشتیبانی میکند: C#، F#، Visual Basic. امروزه نسخه اصلی آن .NET (مانند .NET 8/9) است و جایگزین .NET Framework قدیمی شده.
اجزای اصلی .NET
CLR (Common Language Runtime) — محیط اجرای برنامه؛ وظایف: اجرای کد، مدیریت حافظه، Garbage Collection، مدیریت Exception، امنیت و Type Safety.
BCL (Base Class Library) — مجموعه کتابخانههای استاندارد (کار با فایل، تاریخ/زمان، Collection، Threading، Networking):
List<string> names = new(); // بخشی از BCL
SDK (Software Development Kit) — ابزارهای ساخت و اجرا: Compiler، CLI Commands، Templates، Build Tools:
dotnet new
dotnet build
dotnet run
dotnet test
نحوه اجرای کد
C# Code → Compiler → IL (Intermediate Language) → CLR → Machine Code
کد C# مستقیماً به زبان ماشین تبدیل نمیشود؛ ابتدا به IL و سپس توسط CLR اجرا میشود.
Managed Code
کدی که توسط CLR مدیریت میشود؛ مزایا: مدیریت خودکار حافظه، امنیت بیشتر، کاهش Memory Leak.
Garbage Collection
User user = new User();
user = null; // بعد از مدتی GC حافظه Object را آزاد میکند
Namespace و Assembly
Namespace برای سازماندهی کلاسها (namespace MyApp.Services { class UserService {} }) و جلوگیری از تداخل نامها استفاده میشود.
Assembly واحد خروجی برنامه (.dll/.exe) است و شامل IL Code، Metadata و Manifest میشود.
JIT Compiler و .NET Runtime
JIT (Just-In-Time Compiler) کد IL را هنگام اجرا به Machine Code تبدیل میکند تا بر اساس محیط اجرا بهینهسازی شود.
انواع Runtime: .NET Runtime · ASP.NET Core Runtime · Desktop Runtime — مثلاً اجرای یک Web API نیاز به ASP.NET Core Runtime دارد.
.NET Framework در برابر .NET
| .NET Framework | .NET |
|---|---|
| فقط Windows | Cross Platform |
| قدیمی | مدرن |
| Web Forms | ASP.NET Core |
| WCF | gRPC / REST |
| محدودتر | Performance بهتر |
انواع پروژه رایج
Console Application · ASP.NET Core (Web API، MVC، Minimal API) · Worker Service (سرویسهای Background) · Class Library
Dependency Injection
یکی از قابلیتهای داخلی .NET برای کاهش وابستگی کلاسها و تستپذیری بهتر:
public class OrderService
{
private readonly ILogger logger;
public OrderService(ILogger logger) => this.logger = logger;
}
Configuration و Logging
تنظیمات از appsettings.json، Environment Variables یا User Secrets خوانده میشود. سطوح رایج Logging: Trace · Debug · Information · Warning · Error · Critical
نکته کلیدی: یک برنامه C# اجرا میشود چون Compiler آن را به IL تبدیل میکند، سپس CLR با کمک JIT آن را به کد ماشین تبدیل میکند و Runtime مسئول Memory Management و Garbage Collection در طول اجراست.
خلاصه
- .NET از سه رکن اصلی تشکیل شده: CLR (اجرا)، BCL (کتابخانه استاندارد) و SDK (ابزار ساخت).
- کد C# قبل از اجرا به IL تبدیل میشود و JIT آن را هنگام اجرا به Machine Code تبدیل میکند.
- Namespace و Assembly سازماندهی کد و خروجی برنامه را مدیریت میکنند؛ DI و Configuration از قابلیتهای داخلی .NET هستند.
