مفاهيم اوليه برنامه نويسی در دات نت New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 پنجشنبه  3  فروردين  1396  2017  Mar.  23   Thursday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 مفاهيم اوليه برنامه نويسی در دات نت ( بخش دوم )

 مديريت وب

12406

7

3.1

با توجه به جایگاه داده در عصر حاضر و  لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر  روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و  خدمات خود  را از طریق  سایت www.fabak.ir  به مخاطبان محترم عرضه می نماید

 

مفاهيم اوليه برنامه نويسی در دات نت - بخش دوم  

مفاهيم اوليه برنامه نويسی در دات نت ( بخش دوم )

در بخش اول اين مقاله به بررسی يک برنامه نمونه ساده دات نت پرداخته شد و از اين رهگذر با برخی  مفاهيم اوليه و در عين حال مهم  برنامه نويسی  در دات نت آشنا شديم . در بخش دوم اين مقاله به بررسی فرآيند اجراء پرداخته و بدنبال آن با برخی ديگر از مفاهيم اساسی برنامه نويسی در دات نت آشنا خواهيم شد .
در فريمورک دات نت ، CLR زير ساخت لازم برای يک محيط اجراء مديريت يافته ( اداره شده ) را فراهم می نمايد . در زمان پياده سازی  يک برنامه در فريمورک دات نت ، برنامه مورد نظر می تواند  با استفاده از هر يک از زبان های سازگار با CLR ، نوشته گردد. کمپايلر استفاده شده ، کدها را به مقصد CLR ، ترجمه می نمايد . پس از فرآيند ترجمه کد نوشته شده ،  يک ماژول مديريت يافته( اداره شده )  ايجاد خواهد شد. ماژول فوق، در  فايلی  که PE)Portable Executable) ، ناميده می شود، قرار گرفته و شامل اطلاعات زير خواهد بود :

  •  MSIL)Microsoft Intermediate Language) ، کمپايلر کد نوشته شده  را به MSIL ترجمه می نمايد . کد فوق ، مجموعه ای از دستورالعمل های مستقل از نوع پردازنده  بوده و  در ادامه با توجه به نوع پردازشگر به کدهای مختص ماشين تبديل می گردند.
  • Type metadata .اطلاعات فوق ،  نوع ها ، اعضاء و ساير مراجع  استفاده شده توسط  CLR  در زمان اجراء را بطور کامل تشريح خواهد کرد.
  • مجموعه ای از ساير منابع . منابع فوق ،  شامل موارد متععدی نظير فايل های Jpg .  و يا Bmp . ،  می باشند .

اگر در زمان استفاده از کمپايلر ويژوال بيسيک از سوئيچ target /  ، استفاده و مقدار آن  Exe و يا Library  در نظر گرفته شود ، کمپايلر يک ماژول اجرائی را توليد که يک اسمبلی (Assembly ) خواهد بود.  اسمبلی ها  بخش ضروری و اساسی برنامه نويسی در فريمورک دات نت بوده و CLR از آنان بعنوان  واحدهای پايه  و بمنظور اشتراک ، بکارگيری امنيت و ورژن های متفاوت، استفاده می نمايد. CLR  دات نت ، صرفا" کدهای MSIL را که  در يک اسمبلی موجود  می باشند ، اجراء خواهد کرد . در صورتيکه بهمراه سوئيچ target /  (در کمپايلر ويژوال بيسيک ) ، از Module استفاده شود ، کمپايلر يک ماژول مديريت يافته را توليد که يک اسمبلی نخواهد بود .ماژول توليده شده ، شامل يک مانيفست نبوده و نمی تواند توسط CLR ، اجراء گردد.    يک ماژول مديريت يافته را می توان به يک اسمبلی  و از طريق استفاده از کمپايلر ويژوال بيسيک و يا با استفاده از Assembly Linker) Al.exe) اضافه نمود. در ادامه به تشريح MSIL ، متاديتا و اسمبلی خواهيم پرداخت .

کد اجرائی 
در زمان اجرای  يک برنامه مديريت يافته ، لودر سيستم عامل ، CLR را در حافظه مستقر و در  ادامه زمينه اجرای  کد MSIL ماژول های مديريت يافته ، فراهم می گردد. با توجه به اينکه پردازنده  ميزبان در مقطع کنونی ، قادر به اجرای مستقيم دستورالعمل های MSIL  نخواهد بود، CLR ، می بايست در ابتدا دستورالعمل های MSIL را به کد مختص ماشين و با توجه به نوع پردازنده ،  تبديل نمايد .
CLR ، تمام کدهای MSIL را به دستورالعمل های مستقل از پردازنده  در زمان لود ، ترجمه نخواهد کرد . در مقابل،  CLR  در زمان فراخوانی هر يک از توابع ، دستورالعمل های مربوطه را به کد مختص پردازنده تبديل خواهد کرد.MSIL ، صرفا" در زمان مورد  نياز، ترجمه خواهد شد . عناصر CLR که مسئوليت انجام عمليات فوق را برعهده دارند، کمپايلر JIT)Just in Time) ، ناميده می شود . ترجمه JIT ، باعث صرفه جوئی  حافظه و زمان  در حين مقداردهی اوليه برنامه می گردد .

Appliaction Domain 
سيستم عامل و محيط های اجراء نوع های خاصی از ايزولاسيون ( تمايز)  بين برنامه ها را ارائه می نمايند . با ارائه سرويس فوق ، اين اطمينان بوجود خواهد آمد که يک برنامه در حال اجراء قادر به تاثير منفی بر ساير برنامه ها ی غير مرتبط ،  نخواهد بود . ويژگی فوق ، يک واحد ايمن و چندکاره  پردازش  را  ارائه  نموده و CLR بر اساس آن قادر به ايزولاسيون بين برنامه ها خواهد بود. حوزه های برنامه ، عموما" توسط ميزبانان زمان اجراء که مسئوليت فعال نمودن  CLR   قبل از اجرای برنامه ها  را برعهده دارند ، فراهم می گردد.

متاديتا
هر کمپايلر که مقصد آن CLR است ، نيازمند توزيع ( انتشار) کامل متاديتا  در هر يک از ماژول های مديريت يافته است .متا ديتا ، مجموعه ای از جداول داده بوده که بصورت کامل هر يک از عناصر تعريف شده در يک ماژول را تشريح می نمايد .اطلاعات فوق ، شامل نوع داده ، اعضاء بهمراه تعاريف مربوطه ،  پياده سازی و مراجعه به ساير نوع ها و اعضاء باشد . متاديتا ، تمامی اطلاعات موردنيازبرای ارتباط عناصر نرم افزاری توليده شده را در اختيار CLR قرار خواهد داد .رويکرد فوق ، جايگزينی مناسب برای  تمامی  تکنولوژی های قديمی نظير:  IDL)Interface Defination Language) ، کتابخانه های نوع و ثبت خارجی ( External registration ) ، می باشد.  متا ديتا همواره در يک فايل exe . و يا dll .  ، حضور داشته  و شامل کد MSIL است . بنابراين ،  امکان  تفکيک متاديتا  از کد MSIL  وجود نخواهد داشت .با توجه به اينکه  متاديتا در يک  مستقل از يک زبان برنامه نويسی خاص بوده و در يک محل مرکزی نظير ريجستری ويندوز ذخيره نمی شوند ، امکان تشريح اتوماتيک برنامه های دات نت  ، فراهم می گردد.

 متاديتا دارای کاربردهای متعددی است که مهمترين آنها عبارتند از :

  • مکان يابی و لود کلاس ها . با توجه به اينکه متا ديتا و MSIL در يک فايل مشابه قرار دارند ، تمام اطلاعات موجود در اين فايل برای CLR ، در زمان ترجمه قابل استفاده بوده  و ضرورتی به استفاده از فايل های هدر(header) وجود نخواهد داشت ( تمام نوع ها در هر اسمبلی توسط مانيفست مربوطه اسمبلی ، تشريح می گردند ).

  • تاکيد امنيت . متا ديتا ، می تواند شامل مجوزهای لازم بمنظور اجراء کد باشد ( البته عکس عبارت فوق نيز ممکن است وجود داشته باشد ، يعنی متا ديتا می تواند شامل مجوزهای لازم بمنظور اجراء کد نباشد ) . سيستم امنيتی از مجوزها استفاده تا باعث ممانعت کد از دستيابی به منابعی  گردد که مجوز لازم برای دستيابی به آنان وجود ندارد 

MSIL 
MSIL  مايکروسافت که در برخی حالات Managed code ناميده می شود ، دستورالعمل هایی می باشند کمپايلرآنها را در زمان ترجمه کد اوليه  ، توليد می نمايد. صرفنظر از سازماندهی منطقی آنان ، اکثر اسمبلی ها شامل کدهائی  با فرمت MSIL می باشند . MSIL يک زبان ماشين مستقل از پردازنده  بوده که توسط مايکروسافت و مشاوره با ساير توليدکنندگان کمپايلر،  ايجاد شده است .  MSIL يک زبان بمراتب سطح بالاتر نسبت به اکثر زبان های ماشين است . MSIL شامل دستورالعمل های لازم برای عمليات متداولی  نظير : دستوراتی برای ايجاد ، مقداردهی و صدا زدن متدهای مربوط به يک شی ( اشياء ) ، دستورات لازم برای عمليات منطقی جاری ، Control Flow ,DMA و Exception handling  می باشد .
قبل از اينکه کد MSIL قادر به اجراء گردد ، می بايست  به کد مختص يک پردازنده  خاص  توسط يک کمپايلر JIT ، تبديل گردد. CLR ،  يک کمپايلر JIT با معماری خاص برای هر نوع معماری پردازنده ، ارائه می نمايد . کمپايلرهای JIT  مبتنی بر يک معماری خاص ، امکان نوشتن کد مديريت يافته را فراهم تا در ادامه و بکمک آن امکان ترجمه و توليد کد وابسته به  يک معماری خاص فراهم و در نهايت  زمينه اجراء کد نوشته شده ، فراهم گردد.(هر کد مديريت يافته که API مختص يک سيستم عامل  و يا کتابخانه ها را  استفاده می نمايد ،  صرفا"  قادر به اجراء بر روی  سيستم های عامل خاصی  خواهد بود ) .

اسمبلی ها 
يکی ديگر از عملياتی که CLR ، انجام می دهد لود و اجرای برنامه های دات نت است . برنامه های دات نت بعنوان اسمبلی بکار گرفته می شوند . اسمبلی شامل يک و يا چندين فايل  EXE  و يا DLL بهمراه اطلاعات متا ديتا است . متا ديتا مربوط به تمام اسمبلی در مانيفست اسمبلی ذخيره می گردد . CLR ، از اسمبلی بعنوان واحدهای عملياتی جهت اشتراک و استفاده مجدد استفاده می نمايد. يک اسمبلی ، واحد بکارگيری کلاس است ( در مقايسه با يک Dll منطقی ) هر اسمبلی شامل تمامی فايل های فيزيکی است که واحد اجرائی ( عملياتی ) را تشکيل خواهد داد ( ماژول مديريت يافته ، منابع ، فايل های داده ) .  از لحاظ مفهومی ،  اسمبلی ، روشی را بمنظور مشاهده مجموعه ای از فايل ها بعنوان يک موجوديت ، فراهم می نمايد. استفاده از اسمبلی ها بمنظور ايجاد يک برنامه ، يک بايد است . در اين راستا می توان ، نحوه بسته بندی اسمبلی ها  بمنظور استفاده  را انتخاب کرد.

مانيفيست اسمبلی ( Assembly Manifest
يک اسمبلی شامل بلاکی از داده ها است که "مانيفست " ، ناميده می شود . مانيفست ، جدولی است که هر entry آن نام يک فايل بوده و  بعنوان بخشی از اسمبلی در نظر گرفته خواهد شد.مانيفست شامل متا ديتا ئی است که بمنظور مشخص نمودن ملزومات ورژن ، يکسان سازی امنيت ، و ساير  اطلاعاتی  مورد نيازی است که  از آنان  بمنظور تعريف حوزه  اسمبلی و مراجع لازم بمنظور دستيابی و استفاده از منابع ها و کلاس ها ، استفاده می گردد. با توجه به اينکه متاديتا  باعث می شود که يک اسمبلی دارای ويژگی خود تشريحی گردد ،  CLR همواره دارای اطلاعات مورد نياز در رابطه با اسمبلی بمنظور اجراء آن خواهد بود . تمامی برنامه ها که توسط CLR اجراء می گردند ، می بايست ترکيبی از يک  و يا چندين اسمبلی باشند . تمام فايل هائی که يک اسمبلی را ايجاد می نمايند در مانيفست اسمبلی ليست می گردند . مانيفست ، قادر به ذخيره شدن  در يک و يا چندين فايل است:

  •  اسمبلی های تک فايل  (  Single-file) . اگر  اسمبلی صرفا" دارای يک فايل مرتبط باشد  ، مانيفست همرا ه  و مرتبط با  فايل  PE ، خواهد بود .

  •  اسمبلی های چند فايل ( Multi-file )  ، اگر اسمبلی دارای بيش از يک فايل مرتبط باشد ، مانيفست می تواند بصورت  يک فايل stand alone  بوده و يا در يکی از فايل های PE  در اسمبلی  مستقر گردد.

ابزارهای CLR  
 
CLR  ، در رابطه با تست و اشکال زدائی کد MSIL دو ابزار را ارائه می نمايد:

  • اسمبلر MSIL . اسمبلر MSIL ( فايل ILasm.exe ) کد MSIL را بعنوان ورودی اخذ و يک فايل PE شامل نمايش باينری کد MSIL بهمراه متا ديتا مورد نياز را توليد می نمايد . گرامر استفاده بصورت زير است:

ILasm [options] filename [options]

  • برنامه MSIL Disassembler . با استفاده از برنامه فوق ( فايل ILdasm.exe ) می توان بررسی لازم در خصوص متديتا و کد  disassembled هر يک از ماژول های مديريت يافته را انجام داد .

استفاده از برنامه ILdasm.exe   
برنامه ILDASM ، قادر به نمايش متاديتا و دستورالعمل های MSIL مرتبط با کد دات نت است . ابزار فوق ، بمنظور اشکال زدائی و افزايش شناخت شما نسبت به زير ساخت دات نت بسيار مفيد است . برنامه زير ، کد نوشته شده به زبان ويژوال بيسيک  را بمنظور نمايش يک عبارت ساده  در خروجی نشان می دهد .

يک برنامه نمونه  نوشته شده به زبان VB.NET

Imports  System
Public Class MainApp
     Public Shared Sub Main( )
          Console.WriteLine(
"Welcome to .NET Programming " )
      End Sub
End Class 

برای ترجمه برنامه فوق و با  استفاده از کمپايلر ويژوال بيسيک ، دستور زير را وارد می نمائيم :

> VBC Welcome.VB

پس از اجرای دستور فوق ، فايل Welcome.exe توليد می گردد .

  • مرحله اول : در برنامه ويژوال استوديو دات نت و از طريق خط دستور برنامه Welcome.exe  را فعال می نمائيم  :( ildasm Welcome.exe )  . پس از باز نمودن آيکون MainApp  ، رابط کاربر گرافيکی Disassembler اطلاعاتی را در رابطه با فايل Welcome.exe نمايش خواهد داد.

  • مرحله دوم : نمايش محتويات مانيفست . بر روی MANIFEST  کليک  نموده و در ادامه شاهد نمايش پنجره MANIFEST خواهيم بود.

در بخش سوم اين مقاله به بررسی کمپايلر JIT و ساير موارد در ارتباط با برنامه نويسی  دات نت ، خواهيم پرداخت .



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382