.NET Framework:
.NET یک پلتفرم توسعه نرمافزار است که توسط مایکروسافت ایجاد شده و به توسعهدهندگان امکان میدهد برنامههای مختلفی را برای ویندوز، وب، موبایل و حتی دیگر سیستمعاملها توسعه دهند. .NET از چندین زبان برنامهنویسی پشتیبانی میکند، از جمله C#, VB.NET و F#. این پلتفرم ابزارهایی فراهم میکند که فرآیند توسعه، اجرا و مدیریت برنامههای مختلف را آسانتر میسازند.
اجزای اصلی .NET عبارتند از:
کتابخانه کلاسهای پایه (Base Class Library – BCL): مجموعهای از کلاسها و توابع استاندارد که توسعهدهندگان میتوانند در کدنویسی خود از آنها استفاده کنند. این کلاسها توابع پایهای را برای عملیاتهایی مانند کار با فایلها، دستکاری رشتهها، ورودی/خروجی و شبکه فراهم میکنند.
زبانهای برنامهنویسی: .NET از چندین زبان پشتیبانی میکند که در محیط این پلتفرم میتوانند اجرا شوند. زبانهایی مثل C#, VB.NET و F# رایجترین هستند.

CLR (Common Language Runtime):
یکی از بخشهای کلیدی .NET، CLR است. CLR در واقع موتور اجرایی پلتفرم .NET است که وظیفه اجرای برنامهها را به عهده دارد.
وظایف CLR شامل:
کامپایل Just-In-Time (JIT): کدهای نوشته شده توسط توسعهدهندگان ابتدا به کدی با نام MSIL (Microsoft Intermediate Language) یا همان “زبان میانی” تبدیل میشوند. وقتی یک برنامه اجرا میشود، CLR این کد میانی را به کد ماشین تبدیل میکند تا روی سیستم عامل قابل اجرا باشد.
مدیریت حافظه: CLR حافظه را به صورت خودکار مدیریت میکند. این شامل جمعآوری حافظههای بیاستفاده (Garbage Collection) نیز میشود، که به این معنی است که CLR حافظهای که دیگر نیازی به آن نیست را آزاد میکند.
مدیریت امنیت: CLR همچنین بررسی میکند که برنامه در محدودهای امن اجرا شود و از برخی تهدیدات امنیتی جلوگیری میکند.
مدیریت استثناءها (Exception Handling): CLR سیستم مدیریت استثناءها را پشتیبانی میکند که در صورت بروز خطاها در زمان اجرا، آنها را شناسایی و مدیریت میکند.
مدیریت چند نخی (Threading): CLR به صورت داخلی قابلیت پشتیبانی از چند نخی (multi-threading) را دارد و اجرای همزمان کدها را مدیریت میکند.
ارتباط بین .NET و CLR:
در پلتفرم .NET، توسعهدهنده کدی را در زبانهای پشتیبانی شده (مانند C#) مینویسد. این کدها ابتدا به یک زبان میانی به نام IL (Intermediate Language) کامپایل میشوند. در زمان اجرا، CLR این IL را به کد ماشین مخصوص سیستم عامل تبدیل و آن را اجرا میکند. CLR تضمین میکند که برنامهها به درستی مدیریت شوند، امنیت لازم رعایت شود و منابع سیستم بهینه مصرف شوند.
مزایای .NET و CLR:
چند زبانی بودن: یکی از ویژگیهای بارز .NET این است که از چندین زبان برنامهنویسی پشتیبانی میکند که همگی در نهایت توسط CLR اجرا میشوند.
پرتابل بودن: برنامههای .NET را میتوان بر روی سیستمهای مختلف اجرا کرد، به شرطی که پلتفرم داتنت در آن سیستم نصب شده باشد.
مدیریت خودکار حافظه: CLR با جمعآوری خودکار زبالهها (Garbage Collection)، از هدررفت حافظه جلوگیری میکند.
سازگاری با سیستمهای مختلف: .NET Core و .NET 5/6 به عنوان نسخههای کراس-پلتفرم .NET معرفی شدهاند که از سیستمعاملهای ویندوز، لینوکس و مک پشتیبانی میکنند.
در کل، .NET Framework و CLR زیرساختی قوی برای توسعه نرمافزارهای مقیاسپذیر، امن و کارا فراهم میکنند که از مزیتهایی مانند پشتیبانی از چندین زبان و مدیریت بهینه منابع بهرهمند هستند.