در بخش قبلی آموزش سی شارپ، با برخی مفاهیم در .NET Framework آشنا شدیم. در ادامه قصد داریم مفاهیم را بیشتر باز کرده و برخی خدمات .NET Framework را با هم بررسی کنیم. مطالبی که در این قسمت به آنها خواهیم پرداخت به شرح زیر می باشند:
قسمت های قبلی این آموزش از طریق لینک های زیر قابل دسترس می باشند:
همانطور که در بخش قبلی خدمت دوستان گفتیم، CLR قلب تپنده دات نت بوده و اکثر وظایف زمان اجرای برنامه های دات نت به عهده CLR می باشد. در حقیقت، برای اجرای برنامه های مبتنی بر دات نت، حتما" باید نسخه مربوطه .NET Framework بر روی سیستم مقصد نصب شده باشد. در این بخش قصد داریم تا برخی از سرویس های CLR را خدمت دوستان معرفی کرده و در مورد دو سرویس، یعنی JIT و GC به تفصیل صحبت کنیم. در تصویر زیر نمای کلی از سرویس های CLR را مشاهده می کنید:
روند اجرای کدها در دات نت، کمی پیچیده ولی در عین حال، بسیار کارامد است. زیرا طراحی این قسمت توسط شرکت مایکروسافت طوری انجام شده که اجرای کدها به بهینه ترین شکل ممکن انجام شود. همانطور که در قسمت قبلی گفتیم، سرویسی که وظیفه اجرای کدها در دات نت را دارد، کامپایلر JIT یا Just-In-Time می باشد. در زیر به صورت قدم به قدم به تشریح روند کامپایل و اجرای کدها، از زمان کامپایل توسط کامپایلر زبان برنامه نویسی تا زمان اجرای کد توسط JIT می پردازیم:
نکته 1: هر اسمبلی دات نت برای اجرا نیاز به یک نقطه شروع یا Entiry Point دارد که Class Loader در ابتدا این بخش، یعنی Entry Point را در حافظه بارگذاری کرده و JIT آن را اجرا می کند.
نکته 2: برنامه های نوشته شده توسط دات نت، می توانند شامل چندین هزار خط و بخش مجزا باشند، از مزیت های JIT این است که برای اجرای برنامه ها، کل کدها را یکجا به کد ماشین تبدیل نمی کند، بلکه تنها بخش مورد نیاز برای اجرا توسط Class Loader در حافظه بارگذاری شده و توسط JIT اجرا می شود. با این کار سرعت باگذاری اولیه برنامه های دات نت بسیار بالا می رود.
اما MCE یا Managed Code Execution دقیقا" به چه معناست؟ همانطور که گفتیم، CLR پروسه ای برای اجرای کدها دارد که به شرح زیر می باشد:
پروسه ایی در بالا برای اجرای کدها در دات نت ذکر شد به MCE یا همون Managed Code Execution شناخته میشه. البته مطالب در مورد این موضوع بسیار است که به دلیل تخصصی بودن مطالب، در بخش پیشرفته آموزش سی شارپ به تفصیل به موضوعات مربوط به CLR و اجرای کدها خواهیم پرداخت.
یکی از کابوس های برنامه نویسان، بهتره بگیم بزرگترین کابوس، مدیریت و استفاده بهینه از حافظه کامپیوتر می باشد. برنامه ای که از حافظه استفاده بهینه داشته باشد، سرعت اجرا و عملکرد بهتری دارد. اگر شما با زبان هایی که مدیریت حافظه در آنها به صورت خودکار نباشد، کار کرده باشید، حتما" واژه کابوس را تائید می کنید. اما در دات نت، مسئله مدیریت و استفاده بهینه از حافظه بوسیله سرویس GC یا Garbage Collector به صورت کامل حل شده است. در حقیقت سرویس GC وظیفه مانیتور کردن حافظه در حین اجرای برنامه و پاک سازی آن را به عهده دارد. به همین دلیل شما به عنوان برنامه نویس، هیچ گونه نگرانی در مورد پاک سازی حافظه را نخواهید داشت.
پروسه آزاد سازی حافظه در دات نت، کمی پیچیده است، اما به طور کلی، در مدیریت حافظه توسط CLR، دو وظیفه کلی وجود دارد. تخصیص حافظه و آزاد سازی حافظه که این وظایف به صورت خودکار توسط CLR انجام می شوند.در ادامه آموزش بخشی را به سرویس GC اختصاص خواهیم داد که در آن بخش به طور کامل با پروسه های تخصیص و آزاد سازی حافظه، Finalizer ها و Generation ها در GC آشنا خواهیم شد.با پایان بخش چهام آموزش سی شارپ، مفاهیم ابتدایی دات نت نیز به پایان می رسد. به امید خدا از بخش بعدی، کار اصلی ما، یعنی شروع نوشتن کدها به زبان سی شارپ آغاز خواهد شد. در بخش بعدی با محیط Visual Studio آشنا شده و اولین برنامه خود را به زبان سی شارپ خواهیم نوشت.
نویسنده : حسین احمدی
منبع : جزیره برنامه نویسی وب سایت توسینسو
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است
#آموزش_دات_نت #آموزش_سی_شارپ #فریم_ورک_دات_نت #آموزش_برنامه_نویسی #زبان_برنامه_نویسی_سی_شارپ
به نظر من کارت ول نکن
من باویژوال فاکس پرو برنامه نویسی می کنم و در حال حاضر نسبت به برنامه نویسی تحت وب ناآشنا هستم فوق العاده عالیه ممنون
فوق العاده عالیه ممنون
مهندس من ي خواهشي دارم اگه ميشه PDF هر صفحه را زير هر صفحه بزاريد تا بچه هاي مثل ما كه اينترنت كمي دارند بتونيم بعدا از طريق آفلاين استفاده مي كنيم.
با تشكر.....
ممنون از شما، از قسمت بالای صفحه، امکان دریافت مطالب به صورت PDF و همچنین نسخه قابل چاپ وجود داره.
سلام استاد
میشه لطفا راجع به Exception Manager بیشتر توضیح بدید و اینکه منظور از استثناها دقیقا چیه؟
سلام، Exception ها در حقیقت خطاهایی هستند که در برنامه های دات نت اتفاق می افتن، برای مثال، زمانی که شما عددی رو تقسیم بر صفر می کنید خطای Divide By Zero رخ میده، حالا هر Exception ای که اتفاق میافته یک کلاس معادل داره، همین خطای تقسیم بر صفر کلاسی با نام DivideByZeroException براش تعریف شده که زمان وقوع اطلاعات مربوط به خطا در این کلاس در اختیار کاربر قرار میگیره. Exception Manager یک سرویس در .NET Framework هست که کار مدیریت Exception ها رو بر عهده داره.
متشکرم استاد.
با سلام
بنده خیلی علاقمند به یادگیری یک زبان برنامه نویسی مبتنی بر وب هستم ، متاسفانه علیرغم اینکه این توانایی رو در خودم میبینم و احساس میکنم که می بایست از ابتدا بنده در این زمینه تحصیل می کردم در دانشگاه رشته مدیریت صنعتی رو خوندم و الان ۶ ساله که توی یک بانک دولتی کار می کنم .
کار روتین دهنم رو سرویس کرده و دلم می خواد به علاقه اصلیم ( برنامه نویسی ) برگردم ، به گفته اطرافیان ذهن بسیار خلاقی دارم و احساس می کنم با یادگیری برنامه نویسی میتونم از این ذهن خلاق بهترین استفاده رو بکنم .
می خواستم بنده رو راهنمایی کنید با توجه به اینکه تقریبا پیش زمینه لازم برای یادگیری مطالبی مانند مقاله فوق ندارم ( هرچند به ظاهر سری مقالات فوق قدم به قدم و از ابتدا داره مباحث رو تشریح میکنه ) باید از کجا شروع کنم
ممنون دوستان