مبانی دا ت نت
دات نت ، پلات فرم جديد ماکروسافت بمنظور تحقق نظريه : ” نرم افزار بعنوان سرويس ” ، است . دات نت يک محيط پياده سازی است که بکمک آن می توان اقدام به ايجاد و بکارگيری نرم افزار و نسل جديدی از عناصر موسوم به ” سرويس های وب ” ، نمود. تمامی محصولات اصلی ماکروسافت از ويژوال استوديو دات نت تا ويندوز و نهايتا” مجموعه آفيس ، متاثر از پلات فرم فوق شده و خواهند شد . دات نت به پياده کنندگان اين امکان را خواهد داد که با زبان برنامه نويسی مورد علاقه خود ، اقدام به پياده سازی برنامه ها نمايند. ويژگی ( پتانسيل ) فوق از طريق معرفی CLR)Common Language Runtime )، ميسر شده است . در اين مقاله قصد داريم به بررسی دات نت پرداخته و پتانسيل ها و قابليت های آن را تشريح نمائيم .

در جولای سال ۲۰۰۰ ، شرکت ماکروسافت در کنفرانس پياده کنندگان حرفه ای (PDC ) ، در شهر Orlando ايالت کاليفرنيا ، جزئيات بيشتری از نسل جديد پلات فرم خود ( دات نت ) بمنظور پياده سازی برنامه های ويندوز و اينترنت را در اختيار علاقه مندان خصوصا” پياده کنندگان نرم افزار قرار داد . محوريت ابتکار فوق ، بر فريمورک دات نت استواربوده ونشاندهنده يک پلات فرم مناسب بهمراه کتابخانه های کلاس گسترده ای است که پتانسيل های متعددی را در اختيار قرار می دهد. يکی از نکات قابل توجه در پلات فرم فوق،استفاده از XML و SOAP بمنظور ارتباط بين نرم افزارها ی موجود در اينترنت ( نرم افزارهای مبتنی بر وب ) ، است . در اين راستا مجموعه ای از محصولات مبتنی بر سرويس دهنده با نام سرويس دهندگان Enterprise دات نت، مطرح که بمنزله نسل جديدی از محصولات Backoffice ماکروسافت ، می باشند.

فريمورک دات نت ، مدلی کاملا” جديد بمنظور برنامه نويسی و بکارگيری نرم افزار را ارائه نموده است. “بيل گيتس “، در سخنرانی خود در PDC ، بدين نکته اشاره داشتند که در هر پنج تا شش سال ما شاهد يک تحول عمده در رابطه با پياده سازی نرم افزار بوده ايم . آخرين موارد در اين زمينه به سوئيچ از DOS به ويندوز در سال ۱۹۹۰ و گذر از پياده سازی شانزده بيتی به سی و دو بيتی ( از ويندوز widows 3.x به ويندوز NT/95 ) در اواسط دهه ۹۰ ميلادی ، است.

با معرفی دات نت در PDC ، پياده کنندگان آن را معماری مناسبی برای پياده سازی نرم افزار ( برنامه های Desktop و برنامه های وب ) مشاهده نمودند . ويژوال استوديو دات نت ، اولين محصول مبتنی بر دات نت ماکروسافت بوده که در سال ۲۰۰۱ در اختيار علاقه مندان قرار گرفت . اهميـت دات نت برای ماکروسافت تا بدين حد است که در سال ۲۰۰۱ ، بيش از هشتاد درصد منابع بخش تحقيق و توسعه اين شرکت در رابطه با آن صرف شده است . زبان سی شارپ ، که زبانی جديد برای برنامه نويسی در دات نت است بعنوان زبان استاندارد برای پياده سازی داخلی در شرکت ماکروسافت پذيرفته شده است .

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

ايده های اوليه
از اواخر سال ۱۹۹۵ ، شرکت ماکروسافت توجهی خاص و قابل توجه نسبت به اينترنت نمود . هدف ماکروسافت در اين زمينه پيوند بين پلات فرم ويندوز و اينترنت بود. ماحصل تلاش ماکروسافت در اين زمينه ارائه مدل برنامه نويسی Windiws DNA ، بود . در اين راستا مجموعه ای از ابزارها و تکنولوژی های مبتنی بر اينترنت ، طراحی و ارائه گرديد . ASP ، از اولين تلا ش های ماکروسافت در اين زمينه است . عملا” در اين زمينه ( مطرح شدن اسکريپت ها ی مفسری ) يک برگشت به عقب نسبت به پياده سازی ساختيافته و شی گراء را شاهد بوده ايم . طراحی ، اشکال زدائی و نگهداری چنين کدهای غير ساختيافته ای مسائل خاص خود را خواهد داشت . ساير زبانها نظير ويژوال بيسيک بصورت موفقيت آميز در رابطه با برنامه نويسی بر روی اينترنت و پلات فرم ماکروسافت استفاده می گرديد ولی اغلب از آن بمنظور ايجاد عناصری که از طريق ASP ، بخدمت گرفته می شدند ، استفاده می گرديد .در اين رابطه تلاش های اندکی نيز در جهت ايجاد يک اينترفيس مبتنی بر وب بر روی زبان های سنتی نظير webclasses در VB ، نيز انجام شد ولی هيچکدام از تلاش های فوق ، در سطح گسترده ای مورد استقبال و پذيرش قرار نگرفت . ماکروسافت در صدد حل آشفتگی های همراه برنامه های ويندوز DNA بود .

ويندوز DNA ، تصويری مناسب از يک معماری Three-Tire و مبتنی بر COM بود که تکنولوژی ASP در لايه Presentation ، اشياء Bussiness در لايه ميانی و يک engine بانک اطلاعاتی رابطه ای در لايه Data ، قرار می گرفت . مفاهيم همراه DNA ،کامل و بی عيب بود اما در زمان استفاده عملياتی چالش های خاص خود را بدنبال داشت . پياده سازی عناصر COM ، مستلزم يک سطح مناسب از دانش و مهارت است و می بايست زمان زيادی در اين رابطه صرف گردد . بکارگيری نرم افزارهای DNA ، نيز مسائل خاص خود را داشت ( مسائل مربوط به ورژن ، نصب عناصر و عناصری که با آن مرتبط می باشند ) .
بموازات تلاش ساير شرکت ها در رابطه با ارائه راهکارهائی خاص بمنظور پياده سازی برنامه ها ی وب ، شرکت ماکروسافت در صدد برطرف نمودن محدوديت های مدل برنامه نويسی DNA گرديد.

تولد دات نت
در اوايل سال ۱۹۹۸ ، گروهی از پياده کنندگان نرم افزار در ماکروسافت ، کار خود را بر روی نسخه ای جديد از IIS ( نسخه چهار) ، به اتمام رساندند که دارای چندين ويژگی جديد در رابطه با ASP بود .در اين راستا ، قابليت های جديدی بمنظور پياده سازی برنامه های وب در ويندوز NT ، فراهم گرديد.گروه پياده کننده دارای ايده های متعددی برای اعمال اصلاحات جديد بودند . گروه فوق ، کار خود را بر روی يک معماری جديد برای پياده سازی ايده های مطرح شده ، آغاز نمود . اين پروژه ، NGWS)Netx Generation Window Services) ، ناميده گرديد. پس از ارائه ويژوال استوديو شش ، در اواخر سال ۱۹۹۸ ، تلاش برای ايجاد نسخه ای جديد از ويژوال استوديو در دستور NGWS ، قرار گرفت . گروه COM+/MTS در مدل پيشنهادی خود از يک Runtime ، عمومی برای تمامی زبانهای استفاده شده در ويژوال استوديو ، استفاده نمودند . تلاش افراد درگير در پروژه NGWS ادامه تا در نهايـت ، شرکت ماکروسافت در کنفرانس پياده کنندگان حرفه ای (PDC) ، دات نت را معرفی نمود.

مروری بر فريمورک دات نت
فريمورک دات نت ، تمامی لايه های پياده سازی نرم افزار را از سطح سيستم عامل به بالا ، تحت پوشش قرار می دهد. فريمورک فوق، سطحی مناسب وقدرتمند از ارتباط و همبستگی بين تکنولوژی Presentation ، تکنولوژی های Component و تکنولوژی های Data را ارائه می نمايد ( نظير اين ارتباط و همبستگی تاکنون در پلات فرم ويندوز مشاهده نشده است) . معماری فوق ، امکان طراحی و پياده سازی برنامه های مبتنی بر اينترنت و محيط های Desktop ، را بسادگی فراهم و نيازهای هر گروه از نرم افزارهای فوق را بخوبی جواب می دهد . اجزای اصلی فريمورک دات نت در شکل زير نشان داده شده است .

فريمورک دات نت از لايه پائين با عملياتی نظير مديريت حافظه آغاز و بسمت بالا بمنظور ارائه اينترفيس های برنامه ها و کاربران ، دنبال می شود . در بين لايه ها ، لايه های سيستمی ديگر که هر يک دارای پتانسيل های خاصی برای پياده کنندگان می باشند ، وجود دارد.
CLR) Common Language Runtime) ، بمنزله قلب فريمورک دات نت محسوب و engine لازم بمنظور ارائه قابليت های کليدی را ارائه می نمايد . CLR ، شامل عناصر اساسی ديگری نظير: (Common Type System (CTS ، است. علاوه بر مديريت حافظه ، CLR ، مراجعات به اشياء و عمليات Garbage Collection را نيز انجام می دهد .

در لايه ميانی ، ما شاهد نسل جديدی از سرويس های استاندارد نظير ADO.NET و XML می باشيم .سرويس های فوق ، تحت کنترل فريمورک بوده و امکان بکارگيری آنها بصورت جامع و استاندارد در بين تمامی زبانها ، فراهم می گردد . بالاترين لايه ، شامل اينترفيس های برنامه و کاربر است . فرم های ويندوز ، روشی جديد بمنظور ايجاد برنامه های Desktop مبتنی بر win32 می باشند. فرم های وب ، يک رابط کاربر مناسب برای برنامه های مبتنی بر وب را ارائه می نمايند. سرويس های وب ، مکانيزمی بمنظور ارتباط برنامه ها از طريق اينترنت و با استفاده از SOAP ، می باشد. سرويس های وب ، قابل مقايسه با عناصر COM و DCOM بوده با اين تفاوت مهم که در اين راستا از تکنولوژی های متعدد اينترنت ، استفاده می گردد. فرم های وب و سرويس های وب ، اينترفيس اينترنت دات نت را تشکيل و پياد ه سازی آنان از طريق بخش ديگری در فريمورک دات نت که ASP.NET ، ناميده می شود ، محقق می گردد .

پتانسيل های موجود در هر لايه فريمورک دات نت ، توسط هر يک از زبان های سازگار با دات نت ، قابل استفاده خواهد بود. در پايان لازم است به اين نکته اشاره گردد که در اين رابطه ( فريمورک دات نت ) می توان از اينترفيس های مبتنی بر متن ( کاراکتری) نيز استفاده کرد . اين نوع برنامه ها اصطلاحا” Console Application ، ناميده می شوند .
دربخش دوم اين مقاله به بررسی CLR و جايگاه آن در فريمورک دات نت، خواهيم پرداخت .

مبانی دا ت نت ( بخش دوم )
در بخش اول اين مقاله به بررسی و معرفی فريمورک دانت پرداخته گرديد. در اين بخش به بررسی CLR ، يکی از مهمترين عناصر موجود در فريمورک دات نت خواهيم پرداخت .
درابتدا لازم است تعريفی از CLR را داشته باشيم. CLR ، محيطی است که برنامه های دات نت بکمک آن اجراء می گردند . برنامه های نوشته شده توسط هر يک از زبان های سازگار با دات نت پس از ترجمه توسط کمپايلر مربوطه به MSIL)Microsoft Intermediate language) ، ترجمه می گردند ( به زبان فوق ، IL نيز گفته می شود ) .

CLR از نمای نزديک
Common Type System(CTS)
( Data Types ,…)
Intermediate Language(IL) to native code compilers Execution Support (traditional runtime functions) Security
Garbage Collection,Stack Walk ,Code manager
Class Loader and memory layout

هدف از طراحی CLR ، نيل به اهداف زير بوده است :
• پياده سازی سريع و آسان
• برخورد اتوماتيک با مقولاتی همچون مديريت حافظه
• حمايت از ابزارهای متعدد
• قابليت توسعه و گسترش متناسب با محيط بکارگيرنده

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

برخورد اتوماتيک با مقولاتی همچون مديريت حافظه
در دات نت ، مجموعه ای گسترده از زيرساخت های برنامه نويسی بصورت اتوماتيک توسط CLR ارائه می گردد. مديريت حافظه ، نمونه ای مناسب در اين زمينه است . پياده کنندگان نرم افزار بکمک ويژوال بيسيک در زمانی نه چندان دور همواره نگران مسئله مديريت حافظه بودند . پياده کنندگان ويژوال بيسيک اينک و با استفاده از CLR ، نگرانی خاصی در ارتباط با مديريت حافظه ، نخواهند داشت. ( CLR ، دارای توابع متنوعی در رابطه با مديريت حافظه است ) . برنامه نويسانی که از ++C در محيط دات نت استفاده می نمايند ، ديگر ضرورتی به استفاده از CoCreateInstance برای نمونه سازی يک کلاس و يا استفاده از malloc بمنظور اختصاص حافظه ، نخواهند بود. با بکارگيری امکانات CLR در ارتباط با مديريت حافظه می توان با بخدمت گرفتن يک عبارت ساده خواسته خود را مشخص و CLR در زمان مورد نظر ، عمليات اختصاص حافظه را انجام خواهد داد . عملياتی ديگر، نظير جمع آوری اطلاعات زائد از حافظه ، از ديگر فرآيندهای ضروری و مهمی است که توسط CLR و در ارتباط با مديريت حافظه انجام می گردد.
حمايت از ابزارها ی متعدد
همانگونه که احتمالا” حدس زده ايد ، اغلب عملياتی که CLR انجام می دهد، مشابه سيستم عامل است ،موضوع فوق هرگز بعنوان مهمترين رسالت CLR ذکر نمی گردد و می بايست با صراحت به اين نکته ظريف اشاره گردد که هدف از طراحی CLR ، حمايت از پياده سازی نرم افزار با استفاده از زبان های برنامه نويسی متفاوت است . CLR مجموعه قدرتمندی از مدل های اشياء را ارائه که برای طراحان ، ديباگرها مفيد و قابل استفاده ، خواهد بود. با توجه به اينکه مدل های شی ارائه شده ، مربوط به زمان اجراء می باشند ، امکان بکارگيری ابزارهای طراحی شده مبتنی بر مدل های ارائه شده ، در بين تمام زبانهائی که از CLR استفاده می نمايند .، ميسر خواهد بود.

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

متا ديتا
متاديتا ، ” داده ئی در رابطه با داده ” بوده و می توان آن را بعنوان سطحی عميق تر از داده نسبت به خصلت های سطح سيستم در نظر گرفت. متاديتا ، عنصر اساسی برای تحقق اصل برنامه نويسی ساده ( تسهيل در امر برنامه نويسی ) مورد حمايت CLR است. متاديتا توسط يک کمپايلر توليد و بصورت اتوماتيک در يک فايل EXE و يا DLL ذخيره می گردد.فرمت آن بصورت باينری است ولی فريمورک يک API بمنظور صدور متاديتا به / از يک XML Schema و يا يک کتابخانه نوع COM ارائه می دهد . از Schema XML ، می توان در بازيابی ورژن و ساير اطلاعات مرتبط با يک عنصر ترجمه شده ، استفاده کرد. اطلاعات ارائه شده توسط متاديتا ، مجموعه گسترده ای را شامل می شود :

• تشريح يک واحد بکارگيری ( اسمبلی ناميده می شود ) : نام ، ورژن ، فرهنگ ( که می تواند اطلاعاتی نظير زبان پيش فرض کاربر را مشخص نمايد) ، يک کليد عمومی برای بررسی، نوع های صادر شده توسط اسمبلی ، وابستگی ها به ساير اسمبلی ها ، مجوزهای امنيتی مورد نياز بمنظور اجراء
• کلاس های پايه و اينرفيس های استفاده شده توسط اسمبلی
• خصلت های سفارشی : تعريف شده توسط کاربرو يا کمپايلر

برخی از موارد فوق نظير خصلت های سفارشی ، انتخابی می باشند .کمپايلرها يکی از کاربران و استفاده کنندگان متا ديتا می باشند . مثلا” يک کمپايلر می تواند يک ماژول توليد شده نوسط يک کمپايلر متفاوت ديگر را بررسی و از متا ديتا بمنظور استفاده و درج ( Import ) ، نوع های cross-language استفاده نمايند. کمپايلرها می توانند متاد يتا هائی را در ارتباط با ماژول های ترجمه شده خود نيز توليد نمايند.
متا ديتا يکی از روش هائی است که CLR را قادر به حمايت از مجموعه گشترده ای از ابزارها می نمايد . برخی از استفاده کنندگان متاديتا ، عبارتند از :

• طراحان
• ديباگرها
• توليد کنندگان پروکسی
• ساير کمپايلرها
• مرورگرها نوع / شی
حمايت و ارتباط چندين زبان

مهمترين ويژگی و بنوعی هدف CLR ، حمايت از زبانهای برنامه نويسی متفاوت و امکان ارتباط ( همبستگی ) بين زبانهای مختلف است .با بهره گيری از يک سيتم نوع ( CTS ) و با اعمال تمامی کنترل های لازم در ارتباط با فراخوانی اينترفيس، CLR امکان ارتباط مناسب و شفاف بين زبان های برنامه نويسی را فراهم می نمايد.

درگذشته يک زبان برنامه نويسی بکمک عناصر COM ، قادر به نمونه سازی و استفاده از عناصر نوشته شده توسط يک زبان برنامه نويسی ديگر بود .در برخی موارد، فراخوانی اينگونه عناصر، مشکلاتی را از بعد مديريتی ايجاد می کرد. بهرحال Subclassing يک عنصر نوشته شده به زبان ديگر، مستلزم وجود پتانسيلی خاص بودکه صرفا” پياده کنندگان حرفه ای قادر به انجام و استفاده از آن بودند. در فريمورک دات نت، می توان از يک زبان بمنظور subclass ( کلاس زيرمجموعه که از يک کلاس پايه ديگر مشتق شده باشد ) يک کلاس نوشته شده به زبان ديگر استفاده نمود. کلاس نوشته شده به زبان ويژوال بيسيک می تواند از يک کلاس پايه نوشته شده با ++C و يا کوبال به ارث رسيده می باشد. برنامه VB ، ضرورتی به آگاهی از زبان استفاده شده بمنظور نوشته کلاس پايه ، نخواهد داشت .بدين ترتيب ، زمينه بهره گيری و استفاده از تمامی مزايای توارث در پياده سازی فراهم و در صورتيکه کلاس پايه تغيير نمايد ، ضرورتی به ترجمه مجدد کلاس زير مجموعه نخواهد بود.چگونه اين کار انجام می شود ؟

اطلاعات ارائه شده توسط متاديتا ، اين امر را امکان پذير می سازند . در اين رابطه هيچگونه IDL(Interface Definition Language در دات نت وجود نداشته و يک اينترفيس کلاس صرفنظر از زبان استفاده شده برای توليد آن ، همواره يکسان مشاهده خواهد شد. CLR از متايتا بمنظور مديريت تمامی اينترفيس ها و فراخوانی بين زبان ها استفاده می نمايد توارث بين زبانها ، زمينه تحقق يک معماری باز را فراهم خواهد کرد .

سيتم نوع
يکی از اجزاء مهم CLR که حضور و عملکرد آن تاثير مستقیمی بر حمايت از چندين زبان را بدنبال دارد ، CTS)Common Type System) است .در سيستم فوق ، تمامی نوع های داده (حتی نوع هائی نظير : Long و Boolean )، بعنوان شی پياده سازی شده اند . بدين ترتيب هماهنگی بين نوع ها در يک سطح پائين تر و بمنظور سازگاری بيشتر بين زبان ها ، صورت می پذيرد. با توجه به اينکه تمامی زبانها از نوع های کتابخانه ای يکسانی استفاده می نمايند ، فراخوانی يک زبان از زبان ديگر نيازمند تبديل نوع، نخواهد بود.
يکی از مهمترين ويژگی های دات نت ، namespace است .namespace ، امکان سازماندهی کتابخانه های شی را بصورت سلسله مراتبی فراهم می نمايد.بدين ترتيب امکان مراجعه به آنان بسادگی و به دور از هرگونه نا همخوانی و يا تضادی ، محقق خواهد شد .بمنظور استفاده از امکانات موجود در کتابخانه های کلاس ، می بايست در ابتدا برای آنان يک مرجع ايجاد نمود.مرجع فوق ،امکان استفاده از نوع ها را بصورت خلاصه در کد نوشته شده ،فراهم خواهد آورد. در ويژوال بيسيک با استفاده از يک عبارت Import ، اين امر محقق خواهد شد. يک ماژول فرم ويژوال بيسيک در دات نت می تواند بصورت زير ، آغاز گردد :
Imports System.WinForms

Imports MyDebug = System.Diagnostics.Debug

در اولين خط ، امکان استفاده از تمامی خصلت ها و متدها ی استاندارد مرتبط با فرم ها ، برای کد موجود درماژول ، فراهم خواهد شد.دومين خط ، از يک نام مستعار استفاده می نمايد. يک شاخه از ساختار سلسله مراتب شی ( يک مسير مشخص بر روی ساختار درختی ) ، می تواند شناسه خاص خود را داشته باشد که صرفا” در ماژول مربوط معتبر خواهد بود. در ماژول مورد نظر می توان بمنظور مراجعه به شی System.Diagnostics.Debug ، از MyDebug استفاده گردد.

بکارگيری و اجراء
واحد بکارگيری همانگونه که قبلا” اشاره گرديد ، يک اسمبلی است. اسمبلی، می تواند شامل يک و يا چندين فايل بهمراه ويژگی خود تشريحی باشد . اسمبلی شامل يک “مانيفست” بوده که تمامی متاديتا صادر شده توسط اسمبلی و ساير اطلاعات لازم بمنظور بمنظور بکارگيری و اجراء را مشخص می نمايد. يک اسمبلی دارای ورژن خاص خود است . اسمبلی ها با يکديگر ترکيب و برنامه ها را بوجود می آورند . يک برنامه دارای يک و يا چندين اسمبلی بوده و ممکن است شامل فايل ها و داده های اختصاصی برنامه نيز باشد .

کد مبداء ماژول ها ی يک اسمبلی به IL)Intermediate Language) ترجمه می گردند . در ادامه و قبل از اجراء ، IL به کد مختص يک ماشين ترحمه خواهد شد. ترجمه با استفاده از روش های متفاوت و بدفعات ممکن است محقق گردد. معمولا” ترجمه به کد مختص يک ماشين ، صرفا” يک مرتبه انجام و نتيجه برای استفاده در موارد بعد و آتی Cache خواهد شد. CLR ، شامل مجموعه ای از کمپايلرهای JIT)Just-In-Time) است که مسئوليت تبديل IL به کد مختص يک ماشين را برعهده دارند . بدين ترتيب ، می توان برنامه ها ی نوشته شده در دات نت را بصورت کد IL ترجمه شده ، توزيع نمود. در ادامه با استفاده ازکمپايلرهای دات نت بر روی يک ماشين خاص ، کدهای بهينه و مختص آن ماشين توليد خواهد شد.در سناريوی فوق امکان استفاده از اسکريپت ها بهمراه ماژول نيز وجود دارد ، درچنين مواردی آنان قبل از استفاده ترجمه خواهند شد. در سيستم های موجود ، اسکريپت های تفسير شده ( در ASP و يا Windows Scriptiong Host ) ، هرگز ترجمه نمی شوند. در دات نت ، اينچنين اسکريپت هائی در اولين مرتبه دستيابی به IL تبديل و در ادامه به کد مختص ماشين مربوطه تبديل و برای استفاده مجدد cache ، خواهند شد.

در بخش سوم اين مقاله ، به بررسی کلاس های پايه فريمورک دات نت خواهيم پرداخت .
مبانی دا ت نت ( بخش سوم )
آنچه تاکنون گفته شده است :
بخش اول : معرفی فريمورک دانت
بخش دوم : بررسی CLR
در اين بخش به بررسی کلاس های پايه فريمورک دات نت و اينترفيس های کاربر و برنامه خواهيم پرداخت .

در بخش دوم اين مقاله با اولين لايه فريمورک دات نت ( CLR ) آشنا شديم . در ادامه بر روی لايه بعد متمرکز و به بررسی امکانات ارائه شده خواهيم پرداخت . اين لايه ، کلاس های پايه فريمورک دات نت ناميده شده و مسئوليت ارائه سرويس ها و مدل های اشياء برای داده ، عمليات ورودی و خروجی ، امنيت و موارد ديگر را بر عهده دارد . نسل بعدی ADO که ADO.NET ناميده می شود در اين لايه قرار دارد . در لايه فوق ، امکانات و پتانسيل های لازم بمنظور انجام عمليات مرتبط با XML نيز ارائه شده است . پارسر و تبديل کننده XSL ، نمونه هائی از پتانسيل های موجود در اين لايه بمنظور کار با اسناد XML می باشند.
اکثر امکانات و پتانسيل های مورد نيازی که ضرورت فراگيری آنان برای هر برنامه نويس در رابطه با يک زبان برنامه نويسی وجود دارد ، به کلاس های فريمورک منتقل شده است . مثلا” تابع Sqr که در ويژوال بيسيک از آن بمنظور محاسبه جذر يک عدد استفاده می گردد در دات نت وجود نداشته و اين تابع با متد System.Math.Sqrt موجود در کلاس های فريمورک جايگزين شده است .

تمامی زبانهای سازگار با دات نت قادر به استفاده از کلاس های فريمورک می باشند . بدين ترتيب در يک زبان برنامه نويسی نظير کوبال و يا ويژوال بيسيک دات نت ، برای محاسبه جذر يک عدد از تابع مشابهی استفاده خواهد شد .رويکرد فوق ، پيوستگی و ارتباط مناسب بين زبان های متفاوت برنامه نويسی را بدنبال خواهد داشت . تمامی زبان ها به روشی مشابه از متد System.Math.Sqrt استفاده و به کد يکسانی دستيابی خواهند داشت ( اختلاف موجود صرفا” به گرامر استفاده از متد مورد نظر در زبان مربوطه ، برمی گردد) .
اکثر قابليت ها و پتانسيل موجود در کلاس های پايه فريمورک در يک namespace عظيم و با نام System ارائه شده است . namespace فوق ، شامل چندين namespace زيرمجموعه ديگر است . مثلا” Microsoft.VisualBasic شامل Runtime ويژوال بيسيک و کلاس ها ئی بمنظور ترجمه و توليد کد مورد نظر برای برنامه های نوشته شده به زبان ويژوال بيسيک دات نت است .

اينترفيس های کاربر و برنامه
در بالاترين لايه ، دات نت روش هائی را بمنظور تفسير و مديريت رابط های کاربر ( فرم های ويندوز ، فرم های وب ، برنامه های کنسول ) و اينترفيس مورد نيازعناصر از راه دور ( سرويس های وب ) ، ارائه می نمايد .

اينترفيس کاربر : فرم های ويندوز
فرم های ويندوز ( به آنان WinForms هم می گويند ) روشی پيشرفته ويکپارچه بمنظور ايجاد برنامه های Desktop استناندارد سی و دو بيتی را ارائه می نمايند. تمامی زبان ها ی سازگار با دات نت ، قادر به استفاده از پتانسيل فرم های ويندوز در مقابل روش هائی که در حال حاضر استفاده می نمايند ، خواهند بود ( MFC و يا Win32API در ++C و يا موتور VB Forms در ويژوال بيسيک ) . فرم های ويندوز ، مجموعه ای قدرتمند و يکپارجه از کنترل ها و توابع عملياتی را برای تمامی زبانها ارائه و بعنوان بخشی از کلاس های فريمورک در namespace با نام System.WinForms ،ارائه شده است . بدين ترتيب امکان استفاده از فرم های ويندوز توسط تمامی زبان های مبتنی بر دات نت وجود خواهد داشت . با استفاده از Drag & Drop Designer فرم های ويندوز ، می توان اقدام به ايجاد ويژوال فرم های مورد نظر بمنظور استفاده در هر زبان برنامه نويسی نمود.

در ويندوز DNA ، تعداد زيادی از برنامه های داخلی سازمان ها و موسسات مبتنی بر مرورگر بودند ، چراکه هزينه نصب و نگهداری يک برنامه سرويس گيرنده بر روی صدها و يا هزاران ايستگاه بسيار قابل تامل بود . فرم های ويندوز و فريمورک دات نت دارای پتانسيل لازم بمنظور بهينه سازی اقتصادی ( مقرون بصرفه ) نصب و نگهداری يک برنامه سرويس گيرنده با توانائی اجراء بر روی هزاران ايستگاه می باشند . يک برنامه مبتنی بر فرم های ويندوز ،نسبت به برنامه سرويس گيرنده ای که با ويژوال بيسيک نوشته شده باشد ، بسادگی نصب و بهنگام خواهد شد . با استفاده از دستوری نظير : XCOPY ، امکان بکارگيری برنامه بسادگی و بسرعت فراهم و در اين رابطه نيازی به ريجستر نمودن عناصری وجود نخواهد داشت . نصب و بهنگام سازی اينچنين برنامه هائی بمراتب ساده تر از وضعيتی است که قبلا” شاهد آن بوده ايم.بدين ترتيب طراحی و پياده سازی برنامه هائی که نيازمند يک رابط کاربر قدرتمند برای تعداد زيادی از کاربران می باشند ، با استفاده از دات نت بخوبی محقق و عملی خواهد شد ( نسبت به ويندوز DNA ) .

اينترفيس کاربر : فرم های وب
فرم های وب ،يکی از بخش های مهم ASP.NET محسوب و رابط کاربر مبتنی بر يک مرورگر وب را ارائه می نمايند. فرم های وب، نسل جديدی از پياده سازی اينترفيس های مبتنی بر وب را ارائه می نمايند ( جداسازی لی اوت از منطق). فرم های وب شامل دو بخش مجزاء می باشند : يک تمپليت که شامل اطلاعات لی اوت مبتنی بر HTML برای تمامی عناصر رابط کاربر و بخش دوم که شامل تمامی منطق لازم برای ارتباط با رابط کاربر است . بدين ترتيب ، اطلاعات مربوط به کنترل ها بهمراه خصايص و لی اوت مربوطه در يک بخش و کدهای مربوطه در بخش ديگر مستقر خواهند شد. کدها ی نوشته شده رفتار کنترل ها را نظارت و در صورت بروز يک رويداد ، روتين های مربوطه فعال خواهند شد .

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

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

کنترل ها ی سمت سرويس دهنده ، بمنظور تفسير HTML برای طيف متنوعی از مرورگرها و هماهنگی با رويدادها ئی که بر روی صفحه درحال اجراء بر روی سرويس گيرنده محقق می گردند ، می بايست از هوشمندی مناسبی برخوردار باشد . با استفاده از مجموعه ای گسترده از کنترل های ارائه شده بهمراه ويژوال استوديو دات نت ، می توان اينترفيس های مبتنی بر وبی را ايجاد که شباهت بسيار زيادی به اينترفيس های Win32 خواهند داشت . يکی از مهمترين ويژگی های مهم و در عين حال جالب کنترل های سمت سرويس دهنده ، توانائی آنان در ارتباط با مديريت وضعيت خود است . بمنظور مديريت وضعيت يک صفحه ، ضرورتی به نوشتن کدهای خاصی در ASP.NET وجود نخواهد داشت .

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

اينترفيس های برنامه : سرويس های وب
طراحی و پياده سازی برنامه های کامپيوتر، بسمت نسل جديدی از برنامه های غير متمرکز در حال تغيير و تحول است . در ساليان گذشته ، اغلب برنامه ها سرويس های اساسی و مورد نياز خود را از طريق سيستم عامل مربوطه ، دريافت می کردند ( نظير سيستم فايل ) . در ادامه ، قابليت استفاده از توان و پتانسيل موجود در هر نرم افزار برای ساير نرم افزارها فراهم و بدين ترتيب امکان بهره گيری و ارتباط با عناصر نوشته شده فراهم گرديد . تمامی تلاش های انجام شده بر اين واقعيت استوار بود که با بکارگيری پتانسيل ها ی ارائه شده ، توان عملياتی يک نرم افزار افزايش يابد و کمتر به نياز فوق بصورت بنيادی و ريشه ای نگاه می گرديد . در اين رابطه می بايست فونداسيون لازم بمنظور ارتباط بين برنامه ها فراهم و تمامی برنامه ها با اتکاء به زيرساخت ايجاد شده از خدمات يکديگر در جهت ارائه بهينه خدمات خود استفاده نمايند. سرويس های وب ، رويکرد جديدی در اين زمينه می باشند. در سرويس وب ، قابليت های نرم افزار بعنوان يک سرويس عرضه می شود . با استفاده از سرويس های وب ، طراحان و پياده کنندگان می توانند با ترکيب و بکارگيری منابع محلی و از راه دور ، يک سيستم توزيعی و پيوسته را ايجاد نمايند .

در دات نت ، سرويس های وب بعنوان بخشی از ASP.NET پياده سازی می گردند( ASP.NET ، مسئول ارائه تمامی اينترفيس های وب است ) . بدين ترتيب امکان گفتگوی برنامه ها با يکديگر و از طريق وب فراهم می گردد(استفاده از SOAP ) . پياده کنندگان در اين رابطه با انجام عملياتی مختصر ، قادر به استفاده از سرويس های وب خواهند بود.آنان می بايست به عضوی از سرويس وب شده و فريمورک دات نت ساير مسائل موجود را دنبال و مديريت خواهد کرد . رويکرد فوق، تغيير معماری برنامه های وب را بدنبال داشته و امکان ارتباط سرويس های وب با يکديگر و بر روی بستر وب ، ميسر خواهد شد . سرويس های وب دارای نقش و جايگاهی بسيار مهم در توليد نسل جديدی از برنامه های مبتنی بر وب می باشند . سرويس های وب، گزينه ای مناسب برای جايگزين شدن با برخی از پکيج های نرم افزاری خواهند بود.