Yusefnejad

یوسف نژاد

Yusefnejad

یوسف نژاد

۲۵ مطلب با کلمه‌ی کلیدی «NET Framework.» ثبت شده است

هنگامیکه که یه اسمبلی برای اجرا به حافظه بارگذاری میشه، CLR کدهای موجود رو بر مبنای متد به متد اجرا میکنه. یعنی برای اجرای یه قطعه کد اونها رو عملا به صورت قطعاتی که کوچکترین واحدش متدها هستند درنظر میگیره و سپس برای اجرای متدها، کد IL موجود رو برای کامپایل JIT به حافظه بارگذاری میکنه و بعدش کار اجرای کدهای کامپایل شده به زبان ماشین رو بصورت خط به خط انجام میده.

اما این وسط تو اجرای این کدها ممکنه ارجاعی به اعضای نوع های دیگه وجود داشته باشه. خب حالا میشه پرسید که CLR دقیقا چیجوری این نوع ها رو شناسایی میکنه؟ چیجوری محل دقیق اونا رو تو اسمبلی هابی که اونا رو تعریف کرده پیدا میکنه؟ و چیجوری کدهای موردنیاز رو به حافظه بارگذاری میکنه؟

با وجود همه تمهیداتی که برنامه نویسا تو زمان توسعه یه محصول درنظر میگیرن، اما در زمان اجرا تو کامپیوتر مقصد مسائل و مشکلاتی ممکنه پیش بیاد. بنابراین دادن دسترسی مدیریت بخشی از اپلیکیشن به کاربر در محیط واقعی کاری مفید و مناسب به نظر میرسه. البته دادن این اختیارات باید با احتیاط کامل انجام بشه تا تو روند اجرای برنامه اختلال یا کارشکنی رخ نده.

تو قسمت قبلی مطالب مقدماتی داده های نسخه اسمبلی ارائه شد. در ادامه و تو این قسمت مباحث تکمیلی این موضوع، شامل شماره نسخه و فرهنگ اسمبلی و همچنین نحوه کار با این داده ها تو ویژوال استودیو (که بیشتر به محیط عملی توسعه نزدیکه) ارائه میشه.

هنگامیکه یه فایل PE برای یه اسمبلی تولید میشه (چه توسط csc.exe و چه بوسیله al.exe)، اطلاعات استانداردی برای نگهداری نسخه کامل اسمبلی هم به اون فایل اضافه میشه. این استاندارد مطابق استاندارد نسخه Win32 هستش. برای آشنایی بیشتر با ساختار داده ای این منبع تو یه فایل استاندارد ویندوزی میشه از اینجا کمک گرفت.

تو مطلب «اسمبلی های چند فایله»، روش تولید یه اسمبلی چند فایله با استفاده از کامپایلر سی شارپ نشون داده شد. علاوه بر این روش، راه دیگه ای هم برای تولید چنین اسمبلی هایی وجود داره و اون استفاده از ابزار AL.exe یا Assembly Linker هست. این ابزار رو هم مثل ابزار ILDasm.exe میشه تو SDKهای ویندوز پیدا کرد که به همراه ویژوال استودیو نصب میشه. 

تو مطلب ساخت اسمبلی مدیریت شده، درباره نحوه کارکردن با کامپایلر #C بحث شد. روشها و انواع مختلف قابل تولید توسط این کامپایلر شرح داده شد. علاوه بر موارد اشاره شده، این کامپایلر یه سوییچ مهم دیگه برای تولید یه ماژول مدیریت شده هم داره. این سوییچ بصورت t:module/ استفاده میشه و مشخص میکنه که کامپایلر به جای تولید یه اسمبلی کامل فقط باید یه ماژول مدیریت شده تولید کنه.

در ادامه مطلب قبلی که درباره کلیات متادیتای یه اسمبلی بحث شد، تو این قسمت، بخش مهم دیگه ای از این داده ها، یعنی مانیفست (manifest) و جداول اون تو متادیتای اسمبلی بحث میشه.

فایل program.exe محصول مثال مطلب ساخت اسمبلی مدیریت شده، چیزی بیشتر از یه فایل PE به همراه یکسری داده های اضافه مثل جداول متادیتاست. این فایل تو تعریفی پیشرفته تر، یه «اسمبلی» هست. این جداسازی تعریف و متمایز کردنش یعنی چی؟ خب پس اول به تعریف دقیقتر از یه اسمبلی آورده میشه.

تو مطلب «ساخت اسمبلی های مدیریت شده» نحوه تولید یه اسمبلی شرح داده شد. برای این فرایند یه مثالی هم آورده شد که درنهایت فایل اجرایی program.exe برای اون تولید شد. خوب حالا ممکنه این سوال پیش بیاد که این فایل تولید شده دقیقا چیه و از چه قسمتهایی تشکیل شده؟ تو این مطلب سعی شده تا به این سوالات پاسخ داده بشه.

تو این مطلب کامپایل کد سی شارپ به کد IL با کامپایلر سی شارپ یا CSC (مخفف C# Compiler) و ساخت ماژول یا اسمبلی مدیریت شده (Managed Assembly) و ذخیره نتیجه تو یه فایل که قابلیت توزیع و انتشار داره، شرح داده میشه.

امروزه تمامی اپلیکیشن ها در نهایت از چندین «نوع» مرتبط یا غیر مرتبط با هم تشکیل شدن که ممکنه توسط افراد یا گروهها و یا شرکتهای مختلفی توسعه داده شده باشن. درضمن شرکتهای زیادی تو دنیا کتابخونه ها و کمپوننت ها و نوع های مختلفی تولید میکنن که به عنوان اجزای تشکیل دهنده محصولات شرکتهای مختلف در سرتاسر دنیا مورد استفاده قرار میگیرن. استفاده از این نوع های آماده زمان نهایی تولید محصولات نرم افزاری رو بطور قابل ملاحظه ای کاهش میده، اما ریسک هایی هم داره.

آخرین نظرات