مشاهده نسخه کامل
: آموزش زبان برنامه نوسی #C
( این مجموعه شامل 30 ( سی ) فصل است اگر مایل به ادامه دادن تا آخرین مبحث آن هستید ، با ارائه نظرات مثبت خود در ادامه این مطلب ، بنده را جهت تقدیم به دوستان یاری رسانید . ) باتشکر
فصل اول .
مقدمه ای بر C#.NET
دراين فصل آموزش میدهیم :
* مروري بر چارچوب NET. معماري و ويژگيها .
*CLR : مروري بركارهاي قابل انجام توسط قسمت زمان اجراي چارچوب .
* کامپایلر .JIT NET فقط در لحظه بارگذاري اسمبلي ها و تاييد كد لازم است .
* CLS و CTS قوانینی که سازگاری CLR و تعامل بين زباني را مديريت ميكنند.
* اسمبليها : نگاهي كوتاه به ساختار يك اسمبلي ، فلسفهي پشت آن و تفاوت مابين اسمبليهاي خصوصي و اشتراكي.
* FCL : اين كتابخانه صدها كلاس پايه ي گروه بندي شده در فضاهاي نامي منطقي را فراهم ميكند .
* ابزار توسعه : بوسیلهی .NET چندین ابزار با هدف توسعهي كد فراهم شده است . اين ابزارشاملILdasm برای نمایش کد winCV براي مشاهده خصوصيات يك كلاس وابزار ديگر پيكربندي چارچوب .
* كامپايل كردن واجراي برنامههاي #C کاربرد کامپایلر# C ازخط فرمان و گزينه هايي براي پيكربندي يك برنامه .
استفادهي كاراي يك زبان ، يادگيري گرامر و ويژگيهاي زبان را نياز دارد . درحقيقت بخش اعظم منحني يادگيري براي تکنولوژی جدید به محيط برنامه نويسي مرتبط است . حرفه اي شدن در#C کافی نیست . معمار نرم افزار و توسعه دهندهی موفق باید کتابخانه های اصیل کلاس و ابزار تولید آنها را بشناسد .
ازمنظربرنامه نويسي platform . net شامل يك محيط اجرايي پيوند خورده به يك كتابخانه كلاس پايه است ،كه در اين فصل FCL , CLR و طرز کار با platform . net بررسی خواهد شد .
----------------------------------------------------------------------------
ArashMiniStar
09-09-2010, 17:06
ممنون از لطفتون.ولی فکر نکنم دوستان نیازی به آموزش داشته باشند.من خودم 3 تا ایبوک آموزش سی شارپ دارم که از کتاب های تو بازار کامل تره !
فکر کنم وقتتونو رو مباحث پیشرفته بگذارید خیلی بهتره.
ضمنا ویژوال بیسیک رو که فراموش نکردین ؟:31:
من کاملا موافقم :) چون که یه کلاس C# رفتم که اصلا به درد نمیخورد و حالا میخوام مباحثی رو که ناقص تدریس شده رو خودم با استفاده از منابع اینترنتی یاد بگیرم با تشکر از شما.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
برادر محترم
اولا این را بدانید آدم با خواندن یک یا دو یا چند کتاب در مباحث مختلف علمی ، خدای آن علم نمیشود . ثانیا ، هیچ کتابی را نمیتوان پیدا کرد که کاملترین کتاب ها باشد . ثالثا ، مبحثی را که هنوز ادامه ندادیم از کجا متوجه شدی که کامل است یا ناقص ؟؟!!... رابعا ، بهتر است که فکر فردی جایگزین افکار عمومی نگردد .
با تشکر :31:
_______________
عزیزم ! :40:
shahinfarasystem
10-09-2010, 00:44
سلام دوست عزیز استقبال می کنم
مخصوصا اتصال به دیتابیس ....
ممنون از لطفتون.ولی فکر نکنم دوستان نیازی به آموزش داشته باشند.من خودم 3 تا ایبوک آموزش سی شارپ دارم که از کتاب های تو بازار کامل تره !
فکر کنم وقتتونو رو مباحث پیشرفته بگذارید خیلی بهتره.
ضمنا ویژوال بیسیک رو که فراموش نکردین ؟:31:
دوست عزیز اگه داری لطف کن لینک شو بذار تا ما هم مستفیض شیم !:31:
ArashMiniStar
10-09-2010, 21:40
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
برادر محترم
اولا این را بدانید آدم با خواندن یک یا دو یا چند کتاب در مباحث مختلف علمی ، خدای آن علم نمیشود . ثانیا ، هیچ کتابی را نمیتوان پیدا کرد که کاملترین کتاب ها باشد . ثالثا ، مبحثی را که هنوز ادامه ندادیم از کجا متوجه شدی که کامل است یا ناقص ؟؟!!... رابعا ، بهتر است که فکر فردی جایگزین افکار عمومی نگردد .
با تشکر :31:
_______________
عزیزم ! :40:
من نگفتم چه کتابی کاملتره یا ناقص تر.
گفتم رو مباحث پیشرفته کار کنین برامون بیشتر مفیده.
منم فکر کنم دوستان رو مباحث پیشرفته مشکل دارن.
اگه بتونین برای ویژوال بیسیک هم بذارین ممنون می شم.
---------- Post added at 10:40 PM ---------- Previous post was at 10:37 PM ----------
دوست عزیز اگه داری لطف کن لینک شو بذار تا ما هم مستفیض شیم !:31:
لینک هاشو ندارم.اینترنتم هم آخر شارژشه.نمی تونم آپلود کنم.
هر وقت بتونم براتون اپلود می کنم.:10:
ArashMiniStar
10-09-2010, 21:49
من کاملا موافقم :) چون که یه کلاس C# رفتم که اصلا به درد نمیخورد و حالا میخوام مباحثی رو که ناقص تدریس شده رو خودم با استفاده از منابع اینترنتی یاد بگیرم با تشکر از شما.
کلاس باید یک جای کاملا معتبر می رفتید.
به نظر من اگه بتونید با کتاب برنامه نویسی رو جلو ببرید بهتر از اونه.
اگه تو خارج بودین که دیگه عالی بود بره کلاس.:8:
چون معتبرن ، امتحان های مایکروسافت رو هم می تونین بدید.
Payman_62
11-09-2010, 01:00
سلام.
آقا آرش همه در یه سطح نیستند. همه همه کتاب هارو ندارن. شما اگه به این مطالب تسلط دارید میتونید تاپیک های دیگه رو بازدید کنید.
H A M A S
11-09-2010, 05:21
به تمام دوستانی که مثل من جسته و گریخته یه چیزهایی بلدن توصیه میکنم شروع به نوشتن پروژه بکنن
اینجور به صورت کاربردی میتونن یاد بگیرن نه تئوری!
================================================== ================
خیلی از دوستان با بانک اطلاعاتی در دات نت مشکل دارن(ado.net)
میان بالا-میان پایین سورس ها رو دانلود میکنن--سرشون از اون همه کد سوت میکشه
خلاصه گیج میشن
امروز روشی به نام linq اومده که متحول کرده کار با داده ها رو و خیلی خیلی ساده تر از ado.net هست
دوستان با یادگیری سینتکس و سپس مطالعه این کتاب میتونن نیازهاشون رو برطرف کنن
توصیه اکید برای دانلود
لینک دانلود کتاب
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ArashMiniStar
14-09-2010, 15:48
من که فکر کنم این دوستمون یک تاپیک زد رفت!:27:
---------- Post added at 04:48 PM ---------- Previous post was at 04:46 PM ----------
سلام.
آقا آرش همه در یه سطح نیستند. همه همه کتاب هارو ندارن. شما اگه به این مطالب تسلط دارید میتونید تاپیک های دیگه رو بازدید کنید.
در مورد سی شارپ این همه کتاب هست.ولی در مورد مباحث پیشرفتش چطور؟:31:
Enemy Killer
14-09-2010, 15:55
سلام دوستان من هم هستم
درمورد سي شارپ لطفا يكي توضيح بده ببينيم چيه ؟
mahdi7610
14-09-2010, 21:14
سلام دوستان من هم هستم
درمورد سي شارپ لطفا يكي توضيح بده ببينيم چيه ؟
یه زبان برنامه نویسی تحت NET. هست :دی
سلام دوستان من هم هستم
درمورد سي شارپ لطفا يكي توضيح بده ببينيم چيه ؟
رجوع شود به ويكي...!؟! :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشيد...!
am_merman01
15-09-2010, 08:38
به تمام دوستانی که مثل من جسته و گریخته یه چیزهایی بلدن توصیه میکنم شروع به نوشتن پروژه بکنن
اینجور به صورت کاربردی میتونن یاد بگیرن نه تئوری!
================================================== ================
خیلی از دوستان با بانک اطلاعاتی در دات نت مشکل دارن(ado.net)
میان بالا-میان پایین سورس ها رو دانلود میکنن--سرشون از اون همه کد سوت میکشه
خلاصه گیج میشن
امروز روشی به نام linq اومده که متحول کرده کار با داده ها رو و خیلی خیلی ساده تر از ado.net هست
دوستان با یادگیری سینتکس و سپس مطالعه این کتاب میتونن نیازهاشون رو برطرف کنن
توصیه اکید برای دانلود
لینک دانلود کتاب
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام خدمت دوستان عزیز:10:
میشه لینک دانلود رو از جای دیگه ای معرفی کنید من حوصله عضویت تو این سایت رو ندارم
با تشکر
سلام دوستان من هم هستم
درمورد سي شارپ لطفا يكي توضيح بده ببينيم چيه ؟
مايكروسافت در مصاف با جاوا، بدنبال ارائه يك زبان كامل بود كه سايه جاوا را در ميادين برنامه نويسی كم رنگ تر نمايد. شايد بهمين دليل باشد كه #C را ايجاد كرد. شباهت های بين دو زبان بسيار چشمگير است. مايكروسافت در رابطه با ميزان استفاده و گسترش زبان فوق بسيار خوشبين بوده و اميدوار است بسرعت زبان فوق گستردگی و مقبوليتی به مراتب بيشتر از جاوا را نزد پياده كنندگان نرم افزار پيدا كند.
با توجه به نقش محوری اين زبان، از آن بعنوان مادر زبانهای برنامه نويسی در دات نت نام برده می شود. مورد فوق به تنهائی، می تواند دليل قانع كننده ای برای يادگيری اين زبان باشد، ولی دلايل متعدد ديگری نيز وجود دارد كه در ادامه به برخی از آنها اشاره می گردد.
مطرح شدن بعنوان يك استاندارد صنعتی
انجمن توليدكنندگان كامپيوتر اروپا (ECMA) زبان #C را در سوم اكتبر سال 2001 بعنوان يك استاندارد پذيرفته (ECMA-334) و بدنبال آن تلاش های وسيعی برای كسب گواهی ISO نيز انجام شده است. زبان فوق در ابتدا توسط شركت مايكروسافت و بعنوان بخشی از دات نت پياده سازی و بلافاصله پس از آن توسط شركت های اينتل، هيوليت پاكارد و مايكروسافت مشتركا، جهت استاندارسازی پيشنهاد گرديد.
زبان #C بگونه ای طراحی شده است كه نه تنها وابستگی به يك Platform خاص را ندارد، بلكه در اغلب موارد وابستگی RunTime نيز ندارد. كامپايلر #C می تواند بر روی هر نوع معماری سخت افزاری طراحی و اجرا گردد. در برخی از نسخه های اوليه كامپايلر زبان فوق كه توسط برخی از شركت های جانبی ارائه شده است، كدهای #C را به بايت كدهای جاوا كمپايل می كنند. يكی از چنين كامپايلرهائی را می توان در سايت Halcyonsoft.com مشاهده نمود. بنابراين كدهای #C براحتی قابليت حمل بر روی محيط های متفاوت را دارا خواهند بود.
مشخصات تعريف شده زبان #C با ساير استاندارهای تعريف شده ECMA نظير (ECMA-335) CLI (Common Language Infrastructure) بخوبی مطابقت می نمايند. CLI قلب و روح دات نت و CLR(Common Language Runtime) است. اولين نسخه از كامپايلر زبان #C كه از CLI استفاده می كند، NET Framwork. مايكروسافت است.
با توجه به موارد گفته شده، مشخص می گردد كه اين زبان بسرعت بسمت استاندارد شدن حركت و با تاييد استانداردهای مربوطه از طرف انجمن های معتبر بين المللی و حمايت فراگير شركت های معتبر كامپيوتری در دنيا مسير خود را بسمت جهانی شدن بخوبی طی می نمايد.
#C چيست ؟
طراحان زبان #C با تاكيد و الگوبرداری مناسب از مزايای زبانهائی نظير ++C، C و جاوا و ناديده گرفتن برخی از امكانات تامل برانگيز و كم استفاده شده در هر يك از زبانهای فوق، يك زبان برنامه نويسی مدرن شی گراء را طراحی كرده اند. در مواردی، برخی از ويژگی های استفاده نشده و درست درك نشده در هر يك از زبانهای گفته شده، حذف و يا با اعمال كنترل های لازم بر روی آنها، زمينه ايجاد يك زبان آسان و ايمن برای اغلب پياده كنندگان نرم افزار بوجود آمده است. مثلا C و ++C می توانند مستقيما با استفاده از اشاره گرها عمليات دلخواه خود را در حافظه انجام دهند. وجود توانائی فوق برای نوشتن برنامه های كامپيوتری با كارائی بالا ضرورت اساسی دارد. اما در صورتيكه عملياتی اينچنين بدرستی كنترل و هدايت نگردند، خود می تواند باعث بروز مسائل (Bugs) بيشماری گردد.
طراحان زبان #C، با درك اهميت موضوع فوق، اين ويژگی را كماكان در آن گنجانده ولی بمنظور ممانعت از استفاده نادرست و ايجاد اطمينان های لازم مسئله حفاظت نيز مورد توجه قرار گرفته است. جهت استفاده از ويژگی فوق، برنامه نويسان می بايست با صراحت و به روشنی خواسته خود را از طريق استفاده از Keyword های مربوطهاعلان نمايند( فراخوانی يك توانائی و استفاده از آن).
#C بعنوان يك زبان شی گراء عالی است. اين زبان First-Class را برای مفهوم Property (Data Member) بهمراه ساير خصائص عمومی برنامه نويسی شی گراء حمايت می كند. در C و ++C و جاوا يك متد get/set اغلب برای دستيابی به ويژگی های هر Property استفاده می گردد. CLI همچنان تعريف Property را به متدهای get/ser ترجمه كرده تا بدين طريق بتواند دارای حداكثر ارتباط متقابل با ساير زبانهای برنامه نويسی باشد. #C بصورت فطری Events ، Declared Value، Reference Type ، Operator Overloading را نيز حمايت می كند.
كد مديريت يافته
با استفاده از نسخه پياده سازی شده #C توسط مايكروسافت، می توان همواره كد مديريت يافته ای را توليد كرد. يك برنامه #C پس از كامپايل، بصورت برنامه ای در خواهد آمد كه شامل دستورالعمل های تلفيق شده ( CIL (Common Intermediate Language است (درست بر خلاف دستورالعمل های مختص يك ماشين خاص). CIL (گاها با نام MSIL(Microsoft Intermediate Language) با به اختصار IL نيز ناميده می شود ) ، در مفهوم مشابه بايت كدهای جاوا بوده و شامل مجموعه ای از دستورالعمل های سطح پايين قابل فهم توسط تكنولوژی مبتنی بر CLI نظير CLR مايكروسافت خواهد بود. اين برنامه ها بدين دليل كد مديريت يافته، ناميده می شوند كه CLR مسئوليت تبديل اين دستورالعمل ها به كدهای قابل اجرا برروی ماشين و ارائه اغلب سرويس های اساسی برای كدينگ نظير : Garbage Collection، مديريت Heap و عمر مفيد يك Object و يا Type Verification را فراهم می كند.
روش يادگيری #C
يادگيری اين زبان برای افراديكه دارای سابقه آشنائی با يكی از زبانهای برنامه نويسی ++C، C و يا جاوا باشند كار مشكلی نخواهد بود، حتی افراديكه دارای آشنائی اوليه با جاوااسكريپت و يا ديگر زبانهای برنامه نويسی نظير ويژوال بيسك می باشند، امكان پذير و راحت خواهد بود. برخی از برنامه نويسان حرفه ای بر اين باور هستند كه #C نسبت به VB.NET با اقبال بيشتر و سريعتری مواجه خواهد شد، چراكه #C نسبت به ويژوال بيسك خلاصه تر است. حتی برنامه های بزرگ و پيچيده ای كه توسط #C نوشته می گردند خواناتر، كوتاه و زيبا خواهند بود. برخی از ويژگی های ارائه شده در #C نظير Unsigned Integer، Operator OverLoading و امنيت بيشتر Type ها، در VB.NET وجود نداشته و اين امر می تواند دليلی بر فراگيرتر شدن #C نسبت به VB.NET نزد برنامه نويسان با تجربه باشد.
برای يادگيری هر يك از زبانهای حمايت شده در دات نت، می بايست از BCL (Basic Class Library) مربوط به NET Framework. شروع كرد. #C خود صرفا دارای ۷۷ کلمه کليدی يا Keyword بوده كه برای اكثر برنامه نويسان غريب نخواهند بود. در مقابل BCL، دارای ۴۵۰۰ كلاس و تعداد بيشماری متد و Property است كه برنامه نويسان #C، می توانند از آنها برای انجام عمليات دلخواه خود استفاده نمايند. شايد يكی از مسائل قابل توجه جهت يادگيری اين زبان برای برخی از برنامه نويسان حرفه ای عدم وجود برخی از ويژگی ها و امكاناتی باشد كه در گذشته و از طريق ساير زبانهای استفاده شده، بخدمت گرفته می شدند. مثلا عدم وجود امكاناتی جهت توارث چندگانه (MI) سلسله مراتبی يك شئ.
خلاصه
بدون شك فراگيری و تسلط بر زبان #C بمنزله كسب يك پتانسيل با ارزش بوده كه ثمرات آن برای برنامه نويسان در حال و آينده ای نه چندان دور بيشتر هويدا خواهد شد. استاندارد بودن و وجود كتابخانه ای مملو از كلاس اين اطمينان را بوجود خواهد آورد كه با فراگيری زبان فوق و كسب، مهارت های لازم، به يك توانائی فرا محيطی جديد دست پيدا خواهيم كرد كه امكان استفاده از آن بر روی محيط های متفاوت وجود خواهد داشت. ويژگی ها و قابليت های بيشمار اين زبان از جمله دلايل قانع كننده ديگری است كه فراگيری آن را توجيه پذير و منطقی می كند.
و من اله التوفیق
1-1-مروری بر ساختار .NET
ساختار .NET بصورت يك محيط مجتمع براي توسعه و اجراي برنامه هاي اينترنتي،برنامه هاي كاربردي ويندوز( ميزكار) و حتي دستگاههای موبایل طراحی شده است . اهداف اصلی آن به صورت زیر است .
- فراهم ساختن يك محيط شيگرايي مابين دامنه اي ازكاربردها.
- با فراهم ساختن اين محيط،تداخل نسخه هاي dll را کم و پروسه توزیع و نصب کد را ساده میکند .
- یک محیط قابل حمل بر اساس استانداردهاي تاييدشده آماده ميسازد تا بتوانندتوسط هر سيستم عاملي ميزباني شوند .
درحال حاضر #C و یک بخش اصلی از زمان اجرای .NET به نام CLI بوسیلیه ECMA استاندارد شدهاند .
- فراهم ساختن یک محیط مدیریت شده که اجرای امن را به سادگی تایید میکند .
طراحان چارچوپ .NET برای رسیدن به این اهداف بزرگ روی یک معماری به توافق رسیدند که چارچوب را به دو بخش تجزیه میکند CLR و FCL .
clr ( پیاده سازی CLI توسط مایکروسافت ) اجرای کد و همه کارهای تخصیص یافته به آن همچون کامپایل ، مدیریت حافظه ، امنیت ، مدیریت ریسمان و ایمنی از نوع داده ، کد اجرا شده تحت نظر CLR ( کد مدیریت شده مینامند ) ، کد مدیریت نشده توسط CLR همچون com و API را اداره مکیند .
FCL قطعه اصلی دیگر میباشد . یک کتابخانه کد قابل استفاده مجدد ( شامل کلاسها ، ساختارها و غیره ) که برای برنامههای اجرای شده تحت دات نت در دسترس است . همه زبانهای دات نت این کتابخانه کلاس مشترک را استفاده میکنند . پس این مفاهیم در همه زبانهای دات نت مشترک خواهد بود .
sinashahab
18-09-2010, 16:11
می تونید رو اینجا هم حساب کنید.
خودم و 5تا از برنامه نویسا داریم هر روز روش کار می کنیم تا بتونم منبع مفیدی از برنامه نویسی بشویم :
programming.ramiz.ir:8:
موفق باشید.
H A M A S
19-09-2010, 17:48
سلام خدمت دوستان عزیز:10:
میشه لینک دانلود رو از جای دیگه ای معرفی کنید من حوصله عضویت تو این سایت رو ندارم
با تشکر
بفرما دوست عزیز...
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ArashMiniStar
20-09-2010, 12:55
اگه میشه آموزشو شروع کنید.منتظریم ها!
1-1-1- .NET و استانداردهای CLI
یک توسعه دهنده قبل از صرف زمان برای یادگیری .NET و C# میپرسد : آیا این مهارت را میتواند به PLATFORM های دیگر تبدیل کند ؟ آیا محصول NET. مایکروسافت فقط مختص سیستم عامل ویندوز است ؟ آیا قابل حمل و اجرایی است و قابل استفاده بر روی سیستم های عامل دیگر نیز میباشد ؟ برای جواب دادن به این سوالات درک رابطه بین C# و استانداردهای CLI ضروری میباشد.
CLI یک محیط اجرایی مجازی مستقل از PLATFORM را تعریف میکند . در واقع هیچ سیستم عاملی را تعیین نمیکنه و برای لینوکس هم همانند ویندوز راحت است . بخش استاندارد مرکزی تعریف یک Common Intermediate Language ) CLI) است که باید توسط کامپایلرهای مطیع CLIتولید شود . بخش دیگر سیستم نوع (Type System ) است . که همه انواع دادههای پشتیبان شده توسط هر زبان مطیع CLI را تعریف میکند . این کد میانی به زبان اصلی سیستم عامل میزبان کامپایل میشود .
CLI استانداردهایی را برای C# در بر دارد که به وسیله مایکروسافت توسعه و ارتقا یافتهاند .
(Fortran,Pascal,Pythen,Defacto).
در ادامه بحثمان نحوه پیاده سازی مایکروسافت از استانداردهای CLI را تشریح میکنیم . فرض ما برآناستكهميتوانيمازكدهايق بلينوشتهشدهنيزاستفاده کنیم و كدهايپياده سازيشدهتوسط .NET به سیستم عامل دیگری منتقل نخواهد شد و محیط مجازی گفته شده نیز شفاف است .
1-2- CLR
CLRتمام چرخه ي زندگي يك برنامه كاربردي رامديريت ميكند. آن كد را يافته وكامپايل ميكند. كلاسهاي تخصيص يافته را بارگذاري ميكند. اجرايش را مديريت ميكند ومديريت اتوماتيك حافظه را مطمئن ميسازد . آن ارتباط بين زباني را پشتيباني ميكند ، تا تعامل مابين كدهاي نوشته شده در زبانهاي مختلف را مجاز دارد . اين بخش كاركرد داخلي CLR را نشان ميدهد. آن يك بحث عمقي نيست وفقط ميخواهد شما را با اصطلاح آن آشنا سازد.
1-2-1 کامپایل کردن کد .NET
کامپایلرهای مطیع CLR کدی تولید میکنند که کد هدف زمان اجرا بوده و برای یک cpu خاص پیشنهاد شده است . این کد به نام cll است . IL یا MSIL یک زبان از نوع اسمبلی است که در یک فایل DLL یا EXE بسته بندی میشود . توجه کنید که اسمبلی ها فایل هایی با استاندارد اجرایی نیستند . لازم است یک کامپایلر زمان اجرا به نام JIT و IL به یک کد ماشین خاص تبدیل کند . ( زمانیکه برنامه واقعا اجرا میشود ) . چون CLR مسئول مدیریت این IL است ، این کد میانی یکی از کلیدهای رویارویی با اهداف اسمی چارچوب .NET از نظر سازگاری زبان است .
هدف دیگر .NET قابلیت حمل platform است . که با محلی کردن ( localizing ) ایجاد کد ماشین در کامپایلر JIT فراهم میشود . بدین معنی که IL تولید شده روی یک Platform میتواند روی Platform دیگری که چارچوب خاص خودش و یک کامپایلر JIT با کد ماشین خاص خودش را دارد ، اجرا شود .
کامپایلرهایی که کد هدف آنها CLR است ، برای هر ماژول علاوه بر تولید IL ، باید فراداده¬ای ( metadata ) را نیز صادر کنند . در فراداده¬ها مجموعه¬ای از جداول قرار مي گيرند تا هر ماژول ، كد خود – توصيف (Self descriptive ) داشته باشد . در جداول علاوه بر توصيف كامل كد، اطلاعاتي درباره اسمبلي ها نيز وجود دارد . اين اطلاعات شامل موارد د يگر نيز هستند: چه نوع داد ه هايي در دسترس هستند ؟
نام هر نوع داده، اعضاي نوع داده، دامنه يا ميدان د يد نوع داده و ويژگي هاي هر نوع داده ديگر . فراداده هاي ديگري كه
كاربردهاي زيادي دارند:
*مهمترین کابرد آن بوسیله کامپایلر JIT است که اطلاعات همه نوع داده¬های مورد نیاز برای کامپایل کردن را مستقیما از فراکد جمع آوری میکند . این اطلاعات را برای بررسی کد که به کار میبرد تا مطمئن شود برنامه عملیات را به درستی انجام میدهد . برای مثال JIT از طریقه مقایسه¬ی پارامترهای متد ، فراخوانی صحیح را مطمئن میسازد .
*فراداده¬ها در پروسه جمع آوری زباله استفاده میشوند . جمع کننده زباله ، برای شناسایی فیلدها و ارجاعات آنها از فراداده¬ها استفده میکند و میتواند تعیین کند حافظه¬ی چه اشیایی میتوانند آزاد شوند یا نه .
*.NET یک مجموعه از کلاس¬ها برای خواندن فراداده¬های یک برنامه فراهم میکند این توانایی به نام انعکاس(Reflection)شناخته میشود که یک ویژگی قدرتمند است و اجازه میدهد یک برنامه در زمان اجرا ، کد را مورد جستجو قرار دهد و بر اساس اطلاعات یافته شده تصمیم گیری کند . میتوان صفات سفارشی را به فراداده اضافه کرد .
IL و فراداده¬ برای فراهم ساختن ارتباط بین زبانی بسیار مهم هستند . اما دنیای واقعی به همه کامپایلرهای .NET که یک مجموعه¬ی مشترک از انواع داده¬ای و توصیف زبان را پشتیبانی میکنند ، منوط است . برای مثال دو زبان در IL سازگار نیستند . اگر یک عدد صحیح علامت دار 32 بیتی را پشتیبانی کند و دیگری آن را پشتیبانی نکند . آنها ممکن است گرامر متقاوتی را داشته باشند اما باید روی انواع داده¬ای پایه که پشتیبانی میکنند توافق داشته باشند .
همانطور که قبلا بحث شده CLI یک توصیف رسمی به نام CTS تعریف میکند که بخش مکمل CLR است . آن شرح میدهد که چگونه انواع داده¬ای تعریف میشوند و چگونه باید رفتار کنند تا بوسیله CLR پشتیبانی شوند .
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.