لینک های برتر

      لینک های داغ

 
   
  




آموزش کامپيوتر :: اينترنت

موضوع: مفاهيم اوليه Clr فريمورک دات نت

مفاهيم اوليه Clr فريمورک دات نت (1)
يک برنامه ASP.NET ، يک برنامه فرم هاي ويندوز ، يک سرويس وب ، يک برنامه مختص موبايل ، يک برنامه توزيعي و يا يک برنامه که چندين مدل از برنامه هاي فوق را با يکديگر ترکيب مي نمايد ، نمونه هائي از برنامه هائي مي باشند که مي توان آنها را بر اساس زيرساخت ارائه شده ، پياده سازي نمود. CLR ، داراي مزاياي متعددي بمنظور پياده سازي سريع و آسان نرم افزار با قابليت مهم ارتباط و يکپارچگي بين کدهاي نوشته توسط زبانهاي متفاوت برنامه نويسي است .
درمجموعه مقالاتي که در اين زمينه ارائه خواهد شد به بررسي CLR ، خواهيم پرداخت .

CLR ، ابزاري ( Engine) است که دستورالعمل هاي IL)Intermediate Language) را بعنوان ورودي اخذ و در ادامه آنها را به دستورالعمل هاي زبان ماشين ترجمه و در نهايت آنان را اجراء مي نمايد. موضوع فوق ، بدين معني نيست که CLR ، دستورالعمل ها را تفسير مي نمايد. عبارت فوق ، بدين دليل بيان شده است که بنوعي به اين موضوع اشاره گردد که CLR ، محيط لازم بمنظور اجراي کد IL را فراهم مي نمايد. بمنظور نيل به اهداف مورد نظر خصوصا'' : کارآمدي کدها و قابليت حمل آنان ، هسته اجرائي مي بايست، شرايط ومحيط لازم بمنظور ايجاد کد با لحاظ نمودن اهداف موردنظر ( کارآمد ، قابليت حمل) را ارائه نمايد. کارآمدي کدها ، يکي از مسائل کليدي در رابطه با محيط اجراء خواهد بود. اگر کد، با سرعت قابل قبول اجراء نگردد ، تمام ويژگي هاي ديگر موجود در سيستم ، تحت الشعاع قرار خواهند گرفت .

قابليت حمل ، امکان استفاده از نرم افزار را مستقل از نوع پردازنده و دستگاه فراهم مي نمايد. بنابراين افزايش تعداد پردازنده ها و دستگاههائي که CLR مي تواند بر روي آنها اجراء گردد، همواره داراي اهميت خاص خود خواهد بود. ماکروسافت و اينتل براي مدت زمان زيادي ، داراي همکاري مناسبي در عرصه تجارت بودند. ماکروسافت کم و بيش از خط پردازنده هاي اينتل بمنظور اجراء نرم افزارهاي خود ، استفاده مي کرد.بدين ترتيب ، ماکروسافت ، بدون وجود نگراني ( حمايت از معماري چندين پردازنده اي و دستورالعمل هاي مربوطه ) ، اقدام به ايجاد و پياد ه سازي نرم افزار مي نمود. شرکت ماکروسافت هرگز نگران ارائه يک نسخه خاص از محصولات خود براي يک نسخه خاص از پردازنده هاي Motoral 68XXX ، نبود ، چراکه اصولا'' آنها را حمايت نمي کرد .

بروز محدوديت در حمايت از پردازنده ها در زمان انتقال از برنامه ها يمبتني بر Win16 به Win32، بعنوان يک مسئله مهم ،مطرح گرديد. ( ما عملا'' داراي API با نام Win16 نبوده ايم ، ولي مي توان اين واژه را براي API قبل از Win32 استفاده کرد) . ماکروسافت اگر مي خواهد همچنان بعنوان يکي از شرکت هاي فعال در زمينه توليد و طراحي نرم افزار در سطح جهان مطرح باشد ، مي بايست تدابير لازم در خصوص قابليت حمل نرم افزارهاي پياده سازي شده خود را بر روي محيط هاي متفاوت فراهم نمايد. باتوجه به تغييرات بنيادين و مهم در طراحي و پياده سازي برنامه هاي مبتني بر وب طي ساليان اخير و ضرورت استفاده از دستگاههاي متعدد بمنظور ارتباط به اينترنت و در نهايت استفاده از خدمات برنامه هاي موجود ، ما با واقعيت بزرگ ديگري نيز مواجه هستيم و آن اينکه هر يک از دستگاههاي موجود ( تلفن هاي موبايل ، کامپيوترهاي hand-held ، tablet ، ) داراي معماري و پردازنده اختصاصي خود مي باشند. با توجه به وضعيت موجود، مي بايست تمهيدات و تدابير خاصي در رابطه با طراحي و پياده سازي انديشيده گردد که ماحصل آن قابليت حمل نرم افزار از يک معماري خاص به معماري ديگر باشد .

ماکروسافت نيز در صدد حضوري فعال تر و ارائه نرم افزار در رابطه با دستگاه هاي فوق ، است ، بديهي است مي بايست اقدامي صورت مي گرفت که پاسخگوي واقعيت هاي جديد صنعت نرم افزارباشد . ماکروسافت در پاسخ به محدوديت هاي موجود، خواسته هاي جديد و حل مشکل قابليت حمل به ساير پردازنده ها ، تصميم به ايجاد يک محيط اجراء و يا CLR نمود ه است .
در ادامه اين مقاله ، قصد داريم بدون درگير شدن به جزيئات مربوطه ، به بررسي محيط اجراء پرداخته امکانات آن را در رابطه با اجراي برنامه هاي managed ، بررسي نمائيم .
مفاهيم اوليه Clr فريمورک دات نت (2)

در دات نت ، واحد اجراء و بکارگيري ، اسمبلي (Assembly ) است . فرآيند اجراء، همواره با يک اسمبلي که داراي انشعاب exe . مي باشد ، آغاز مي گردد . برنامه مي تواند از کد اشتراکي بکمک Importing اسمبلي که شامل کد مشترک بهمراه يک مرجع صريح است ، استفاده نمايد ( براي اضافه نمودن مرجع ، مي توان از AddReference در ويژوال استوديو دات نت استفاده کرد ) برنامه ها همچنين مي توانند با استفاده از Assembly.Load و يا Assembly.loadForm ، اقدام به استقرار يک اسمبلي در حافظه نمايند .
در ادامه ، لازم است با برخي از اصطلاحات آشنا و تعريف مناسبي از آنها را ارائه نمائيم .

اسمبلي(Assembly ) . اسمبلي واحد اوليه بکارگيري نرم افزار در فريمورک دات نت است .يک اسمبلي مي تواند شامل مراجعي به ساير اسمبلي ها و ماژول ها باشد .

ماژول( Module ) . ماژول، فايلي شامل محتويات اجرائي است . يک اسمبلي مي تواند يک و يا بيش از يک ماژول را کپسوله نمايد. يک ماژول بدون اينکه يک اسمبلي به آن مراجعه اي داشته باشد ، Stand alone نمي گردد . کلاسي در کنابخانه کلاس پايه ( System) ، مسئوليت کپسوله نمودن اکثر ويژگي هاي يک '' ماژول '' را برعهده دارد ( مشابه اسمبلي ). اين کلاس Module ، نام دارد.

APPDomain ، بعنوان يک پردازه کم حجم ( سبک ) در نظر گرفته مي شود.قبل از دات نت ، ايزولاسيون از طريق جداسازي پردازش ها از يکديگر و بکمک سيستم عامل انجام مي گرديد. اگر پردازه اي ، عمليات نامشحص و تعريف نشده اي را انجام که باعث بروز مشکل براي ادامه حيات خود مي گرديد ، حرکت وي باعث بروز اختلال در تمام سيستم نشده و صرفا'' مشکل بوجود آمده در ارتباط با پردازه خواهد بود . با توجه به اينکه ''نوع ها'' ،بصورت کاملا'' هدايت شده توسط فريمورک دات نت کنترل مي گردند ، مي توان از روش هائي بمنظورپياده سازي سطح مشابهي ايزولاسيون در ارتباط با يک پردازه استفاده کرد . اين روش Application Domain ويا AppDomain ناميده مي شود. همانند اسمبلي و ماژول ، يک کلاس در کتابخانه کلاس فريمورک دات نت ، اکثر ويژگي ها و پتانسيل هاي مربوط به يک Application Domain را کپسوله مي نمايد. کلاس فوق ، AppDomain ناميده شده و در namespace با نام System قرار دارد .

IL يا MSIL . واژه IL از Intermediate Language و MSIL از Microsoft Intermediate Language ، اقتباس شده اند . IL ، زباني است که اسمبلي ها توسط آن نوشته شده و شامل مجموعه اي از دستورالعمل هائي است که کد مربوط به برنامه را ارائه مي نمايند. به زبان فوق بدين دليل بدين دليل '' مياني '' ( Intermediate ) ، اطلاق مي گردد ، چون هنوز بصورت native code درنيامده است . در زمان مورد نطر ، کدهاي IL توسط کمپايلر JIT به native code ، ترجمه خواهند شد .

JIT . واژه JIT از کلمات Just-In-Time اقتباس شده است . از کمپايلر فوق ، بمنظور ترجمه کدهاي IL به native code استفاده مي شود.

مفاهيم اوليه Clr فريمورک دات نت (3)

در حالت کد غيرمديريت يافته ( Unmanaged) ، کمپايلر و linker بر روي کدهاي مربوطه عمليات خود را آغاز و آنها را به native code تبديل مي نمايند . بدين ترتيب ،دستورالعمل ها مي توانند بلافاصله اجراء گردند. لازم است به اين نکته مهم اشاره گردد که در صورتيکه قصد استفاده از برنامه نوشته شده بر روي محيط هاي متفاوت ( ساير پلات فرم ها ) وجود داشته باشد ، مي بايست براي هر يک نسخه اي جداگانه را کمپايل کرد. در برخي حالات ، امکان ايجاد و ترجمه نسخه هاي متعدد بمنظور اجراء بر روي محيط هاي متفاوت ، امري مطلوب بنظر نمي رسد ، در چنين مواردي سعي مي گردد ، صرفا'' يک نسخه ارائه گردد. نسخه فوق ، بگونه اي طراحي و پياده سازي مي گردد که بتواند با محيط هاي متفاوت سازگار باشد .
بدين ترتيب ، امکان اجراء نرم افزارهاي توليدي در محيط هاي متفاوت ، فراهم خواهد شد . وجود پتانسيل در بطن يک دستگاه سخت افزاري يک موضوع است و ارائه برنامه اي که زمينه بهره برداري از پتانسيل هاي مربوطه را فراهم و برنامه اي که از پتانسيل هاي دستگاه فوق ، در نهايت استفاده مي نمايد ، موضوعات ديگري است .

مثلا'' امروز ما کمتر شاهد ارائه نرم افزار از طرف شرکت هاي توليد کننده اي مي باشيم که تاکيد و اصرار بر استفاده از يک محيط سخت افزاري نظير وجود يک '' شتاب دهنده گرافيک '' ، داشته باشند . در چنين موارد علاوه بر اينکه توليد کننده '' شتاب دهنده گرافيک '' ، مي بايست براي هر '' کارت شتاب دهنده گرافيک '' ، برنامه اي خاص را ارائه نمايد ، بلکه همچنين پياده کنندگان مي بايست از برناهه هاي مجزائي براي هر يک از کارت ها ي عرضه شده ، استفاده نمايند . '' شتاب دهنده گرافيک '' ، صرفا'' يک نمونه در اين رابطه بوده و مي توان به مواردي ديگر نظير : disk cache,memory cache ، شبکه هاي با سرعت بالا ، سيستم هاي مبتني بر چندين پردازنده و سخت افزارهاي خاص بمنظور پردازش تصاوير، اشاره کرد .

يکي از اولين مراحلي که CLR در ارتباط با اجراء يک برنامه انجام مي دهد ، بررسي متدي است که مي بايست اجراء گردد ( آيا به native code ،تبديل شده است ؟) . در صورتيکه متد به native code ، تبديل نشده باشد ، کد موجود در متد بصورت JITd) Just - In - time compild) خواهد بود . تاخير در ترجمه يک متد ، داراي دو مزيت است :

يک شرکت مي تواند نسخه اي از نرم افزار توليد ي خود را براحتي بر روي محيط مورد نظر خود منتقل ( در محيط فوق نسخه اي از CLR نصب شده است ) و از CLR بمنظور مديريت و سفارشي نمودن کدها، متناسب با محيط سخت افزاري مربوطه ، استفاده نمايد .

کمپايلرهاي JIT قادر به استفاده از مزاياي بهينه سازي مي باشند . بدين ترتيب ، امکان اجراء سريعتر يک برنامه نسبت به يک برنامه همه منظور( نسخه unmanaged برنامه ) ، فراهم مي گردد . سيستم هائي که داراي پردازنده هاي 64 بيتي مي باشند ، داراي يک مد '' سازگاري '' خواهند بود که به برنامه هاي سي و دو بيتي اجازه مي دهد بدون اعمال تغييرات بر روي يک پردازنده 64 بيتي اجراء گردند .اگر برنامه اي به IL ترجمه گردد ، مي تواند از مزاياي پردازش 64 بيتي بهره مند گردد (موتور JIT ، قادر به target نمودن پردازنده جديد 64 بيتي است) .

فرآيند استقرار يک متد در حافطه ( Loading ) و ترجمه آن ، در صورت نياز تکرار تا زمانيکه تمام متدها ي موجود در برنامه ترجمه و يا برنامه متوقف گردد .

مفاهيم اوليه Clr فريمورک دات نت (4)

دستورالعمل ها . CLR ، نيازمند ليستي از دستورالعمل هاي MSIL است . هر متد داراي اشاره گري به مجموعه دستوراتي است که بعنوان بخشي از متا ديتا ي مورد نظري است که به آن مرتبط شده است.

Signature . هر متد داراي يک Signature است و CLR نيازمند استفاده از يک signature براي هر متد است . signature ، برگرداندن نوع ، تعداد پارامتر و نوع پارامترها را تشريح مي نمايد.

Exception Handling Array . دستورالعمل خاصي از IL که مربوط به برخورد با exception باشد ، وجود ندارد . در اين رابطه از دايرکتيوهائي خاص در مقابل دستورالعمل هاي IL ، استفاده مي گردد . در مقابل دستورالمل هاي Exception-handling ، اسمبلي داراي ليستي از exceptions است . ليست فوق، شامل نوع exception ، يک آدرس offest به اولين دستورالعمل پس از بلاک exception try ، طول مربوط به بلاک try ، است . ليست فوق ، همچنين شامل آفست به handler code ، طول handler code ، و يک token که مسئول تشريح کلاسي است که از آن بمنظور کپسوله نمودن exception استفاده مي گردد .

اندازه Evaulation stack . داده فوق ، از طريق متا ديتا اسمبلي قابل دسترس خواهد بود. مي توان آن را از طريق maxstack x در ليست ILDASM مشاهده نمود. مقدار x ، اندازه پشته مورد نظر است . اندازه منطقي پشته که توسط x ، مشخص شده است ، حداکثر آيتم هائي را که مي توان در پشته ، مستقر ( Push ) نمود ، مشخص مي نمايد. اندازه فيزيکي آيتم ها و پشته به CLR واگذار تا در زمان اجراء آن را مشخص نمايد (زمانيکه متد JITd است ) .

تشريح بردارهاي محلي . هر متد نيازمند تعريف و ذخيره سازي محلي آيتم هاي مورد نياز است. evaluation stack ،( برداري منطقي از آيتم ها بهمراه نوع هر آيتم) و استفاده از يک flag در متاديتا بمنظور مشخص نمودن ضرورت مقداردهي اوليه ( مقدارصفر ) متغيرهاي محلي در ابتداي فراخواني يک متد ، نمونه هائي در اين زمينه مي باشند.

با استفاده از اطلاعات فوق ، CLR ، قادر به ايجاد يک abstraction از چيزي خواهد بود که native stack frame است. عموما'' هر پردازنده و يا ماشين يک stack frame را شکل که شامل آرگومانها ( پارامترها ) و يا مرجع به آرگومانها ي مربوط به متد است . در وضعيتي مشابه ، متغيرهاي برگردانده شده در stack frame بر اساس فراخواني که وابسته به يک پردازنده و يا ماشين خاص است ، ذخيره مي گردند. اولويت پارامترهاي ورودي و خروجي در رابطه با يک ماشين خاص ، مشخص مي گردد . با توجه به اينکه تمام اطلاعات مورد نياز براي هر متد در دسترس است ، CLR ، قادر به تشخيص وضعيت مورد نظر stack frame ، در زمان اجراء است .
فراخواني يک متد بگونه اي انجام خواهد شد که CLR داراي حداقل کنترل در رابطه با اجراء متد و حالت آن باشد .زمانيکه CLR ، يک متد را فرامي خواند ، متد و حالت آن تحت کنترل CLR خواهد بود ( Thread of control ) .


مطلب بعدی   ::  مطلب قبلی



بهترین فروشگاه آنلاین
ابتدا محصول خود را انتخاب و خرید کنید بعد از تحویل مبلغ را پرداخت کنید


فروشگاه آنلاین - اول بخر بعدا پرداخت کن

- لينک هاي برگزيده -
  ترفندهاي جستجو در گوگل قسمت سوم
  فرايند ازدواج و مراحل آن
  فيلم بدون خشونت
  حسام الدين سراج » وداع 2 » شوخ شيرين
  کهربا
  خواب نوشين » خواب نوشين
  فيلم هاي ايراني در بازار فيلم كن
  تبادل موسيقی رايگان ممنوع!
  کوير » مرداب
  اي تبديل پسوندهاي مختلف فايل هاي ويدئويي به يكديگر
خطر استفاده از سفید کننده پوست
حليم
اريترومايسين ERYTHROMYCIN
زورگيري و راه هاي مقابله با آن
آموزش دلفی (بخش سوم)
يونجهAlfalfa
خطر استفاده از سفید کننده پوست
تصاوير جالب و ديدني14
«طلاق»، فاجعه‌اي در انفجار خانواده
ساختمان های پایتخت ؛ پناهگاه های پر خطر
  
صفحه اول  : تقشه سایت : لینک باکس