معرفی و نحوه کارکرد داتنت
به طور خلاصه، داتنت یک پلتفرم برای توسعه اپلیکشنهای دسکتاپ، موبایل، سرور، وب و
این پلتفرم به طور کلی شامل سه قسمت اصلی هست:
این نسخه برخلاف نسخههای قبلی،
نحوه کارکرد
زمانی که یک کد سیشارپ (یا
وقتی کدتون رو
بعد از تبدیل کدهای شما به
----
به زبان ساده، کدهای شما در زمان
توی قسمتهای بعدی جزئیات این فرایند و
#CLR
👤 QWxp
💎 Channel: @DevelopixCSharp
به طور خلاصه، داتنت یک پلتفرم برای توسعه اپلیکشنهای دسکتاپ، موبایل، سرور، وب و
IOT و بازی هست.این پلتفرم به طور کلی شامل سه قسمت اصلی هست:
1.Languages: C#, F#, Vb, Q# ...etc
2.Runtimes: CLR
3.Libraries: BCL, packages ...etc
اولین نسخه در سال 2002~ تحت عنوان dotnet framework 1.0 منتشر شد که مخصوص توسعه اپلیکیشنهای ویندوز بود؛ تا حدود سال 2016، یک successor با عنوان dotnet core 1.0 معرفی شد. (توسعه نسخه framework همچنان ادامه داره و اخرین نسخه، 4.8.1 حوالی سال 2022 منتشر شده)این نسخه برخلاف نسخههای قبلی،
open-source و cross-platform بود که تحول نسبتاً بزرگی به حساب میومد.نحوه کارکرد
زمانی که یک کد سیشارپ (یا
F# ,vb و بقیه زبانهای داتنت) مینویسید، کد شما برعکس زبانهایی مثل C/CPP و Rust و ... به زبان ماشین تبدیل نمیشن.وقتی کدتون رو
compile میکنید، کدهای شما توسط CLR (در ادامه راجبش صحبت میکنیم) به یک زبان میانی به اسم MSIL یا همون CIL تبدیل میشن.MS-IL: Microsoft Intermediate Language.
CIL : Common Intermediate Lanauge.
(هردو یکی هستن که به طور خلاصه بهشون IL میگیم، نامگذاریهای مایکروسافته دیگه)بعد از تبدیل کدهای شما به
IL، در زمان اجرا تمامی این کدها توسط یک compiler دیگه به اسم JIT به کدهای native یا کدهای قابل فهم machine تبدیل میشن.----
به زبان ساده، کدهای شما در زمان
compile به یک زبان دیگه تبدیل و وقتی برنامتون رو اجرا میکنید، در لحظه اجرا، اون کدها به زبان ماشین تبدیل و اجرا میشن.توی قسمتهای بعدی جزئیات این فرایند و
CLR رو بررسی میکنیم.#CLR
👤 QWxp
💎 Channel: @DevelopixCSharp
👍8❤1🔥1
بررسی CLR - قسمت اول
مهمترین اونها:
که البته سعی میکنم راجب همشون صحبت کنم ولی قبلش باید دقیقا متوجه بشیم که چه اتفاقی برای کد های ما میوفته؛ بعد از تبدیل کد های ما به
زمانی که شما یک کد
اما برای زبان های داتنتی و به طور کلی زبان هایی که روی
به طور خلاصه،
1. نقش JIT
در مرحله اول، کد های
توجه داشته باشید که
2. وظیفه CL
#CLR #JIT
👤 QWxp
💎 Channel: @DevelopixCSharp
CLR: Common Language Runtime
(JVM in Java)
کدهای سیشارپ مثل جاوا، روی یک virtual machine اجرا میشن، یک محیط ایزوله و managed شده که وظیفه کنترل و مانیتور کد هارو به عهده داره. CLR از اجزای مختلفی تشکیل شده،مهمترین اونها:
JIT, CL, CTS, CLS, Memory Manager, GC, Security Manager, Thread Manager, Exception Manager
هستن.که البته سعی میکنم راجب همشون صحبت کنم ولی قبلش باید دقیقا متوجه بشیم که چه اتفاقی برای کد های ما میوفته؛ بعد از تبدیل کد های ما به
IL ، چالش اصلی، محیطی هست که کد های ما قراره داخلش اجرا بشن، یکی از دلایل وجود CLR و JIT هم همینه؛ کد های IL ای که برای ما تولید شدن، مربوط به هیچ سیستم عامل بهخصوصی نیستن، درواقع IL ساخته شده قابلیت اینو داره که روی تمام سیستم ها اجرا بشه ، چیزی که توی زبان های native طبیعتا امکان پذیر نیست.زمانی که شما یک کد
C/CPP رو Compile میکنید، کد های شما مخصوص یک محیط، یک CPU و معماری هستن، کد های تولید شده امکان اجرا روی محیط های دیگه رو ندارن، اگه برای ویندوز کد نوشتید، کد شما روی لینوکس اجرا نمیشه و برعکس ... اما برای زبان های داتنتی و به طور کلی زبان هایی که روی
VM اجرا میشن اینطور نیست.به طور خلاصه،
CLR به ما کمک میکنه که کدهامون رو توی محیط های مختلف اجرا کنیم1. نقش JIT
JIT: Just-In-Time Compiler
با درنظر گرفتن تمام این موارد، چطور کد های IL روی سیستم های مختلف قابل اجرا هستن؟ در مرحله اول، کد های
IL شما به وسیله JIT، به کد های native تبدیل میشن، اگر برنامه شما روی لینوکس اجرا میشه ، JIT کد های IL رو برای لینوکس compile میکنه، و اگر روی ویندوز اجرا بشه ، برای ویندوز؛ به این فرایند اصطلاحا JIT'ing گفته میشه.توجه داشته باشید که
JIT فقط کد هایی رو تبدیل به native میکنه که CL اونهارو Load کرده باشه.2. وظیفه CL
CL: Class Loader
احتمالا خودتون میتونید حدس بزنید که نقش CL چیه، وظیفه مدیریت و load کردن کلاس ها به عهده CL هست، زمانی که یک کلاس رو توی کد استفاده میکنید، تا زمانی که برنامه به اون قسمت از کد نرسه، کلاس رو Load نمیکنه، به محض نیاز، کلاس توسط CL توی حافظه load میشه و بعد از استفاده هم طبیعتا از بین میره.#CLR #JIT
👤 QWxp
💎 Channel: @DevelopixCSharp
👍5🔥2
بررسی CLR - قسمت دوم
3.وظیفه CTS
تمامی زبان های داتنت درنهایت از یک
نقش
برای درک بهتر، یک
این سه
پس متوجه شدیم که وظیفه
4.بررسی CLS
هر زبان، تحت قوانین مشترکی نوشته و پیاده سازی میشه که درنتیجه، باعث میشه تمام زبان ها یک ساختار رو داشته باشن ولی با شکل و شمایل مختلف.
به عنوان مثال ، در هر سه زبان
تمام این قوانین توسط
به زبان ساده،
#CLR #CTS #CLS
👤 QWxp
💎 Channel: @DevelopixCSharp
3.وظیفه CTS
CTS: Common Type System
هر زبان برنامه نویسی، یک type system داره که مختص همون زبان هست. مشخصا type های زبان Go توسط زبان Rust قابل درک نیست و ... ؛ اما برای داتنت اینطور نیست.تمامی زبان های داتنت درنهایت از یک
type system واحد استفاده میکنن که در واقع همون CTS هست.نقش
CTS، کنترل و مدیریت type ها در managed code هست. برای درک بهتر، یک
value type مثل INT رو درنظر بگیرید، این type در تمام زبان ها وجود داره، توی سیشارپ و افشارپ به عنوان int میشناسیمش، توی vb به عنوان integer.این سه
type ، همشون درنهایت باید به type قابل درک برای IL تبدیل بشن، که توی این مثال int32 هست.پس متوجه شدیم که وظیفه
CTS ، تبدیل تایپ type های ما به type های قابل درک CLR و مدیریت اون ها هست.4.بررسی CLS
CLS : Common Language Specification
زبان های داتنتی قابلیت این رو دارن که باهم ترکیب بشن، به عنوان مثال ، شما میتونید از یک کتابخانه ای که به زبان C# نوشته شده ، توی F# یا VB استفاده کنید، با برعکس ، این قابلیت به لطفا قوانین مشترک زبان های داتنت وجود داره .هر زبان، تحت قوانین مشترکی نوشته و پیاده سازی میشه که درنتیجه، باعث میشه تمام زبان ها یک ساختار رو داشته باشن ولی با شکل و شمایل مختلف.
به عنوان مثال ، در هر سه زبان
c#, f# ,vb فانکشن ها دارای اسم، ورودی، خروجی و .. هستن، شاید چیدمان یا نحوه تعیین کردنشون متفاوت باشه ، اما درنهایت برای IL ، هر سه زبان یکی هستن.تمام این قوانین توسط
CLS کنترل و مدیریت میشن.به زبان ساده،
CLS قابلیت همکاری یا Interoperability رو به زبان های داتنتی میده. زبان هایی که تحت قوانین CLS پیاده سازی میشن، به اصطلاح CLS complaint هستن.#CLR #CTS #CLS
👤 QWxp
💎 Channel: @DevelopixCSharp
👍4🔥1