مبانی دات نت
دات نت ، پلات فرم جديد مايکروسافت به منظور تحقق نظريه : " نرم افزار به عنوان سرويس " است . دات نت يک محيط پياده سازي است که به کمک آن مي توان اقدام به ايجاد و بکارگيري نرم افزار و نسل جديدي از عناصر موسوم به " سرويس هاي وب " نمود . تمامي محصولات اصلي مايکروسافت از ويژوال استوديو دات نت تا ويندوز و نهايتا" مجموعه آفيس ، متاثر از پلات فرم فوق شده و خواهند شد . دات نت به پياده کنندگان اين امکان را خواهد داد که با زبان برنامه نويسي مورد علاقه خود ، اقدام به پياده سازي برنامه ها نمايند . ويژگي ( پتانسيل ) فوق از طريق معرفي CLR)Common Language Runtime ) ميسر شده است . در اين مقاله قصد داريم به بررسي دات نت پرداخته و پتانسيل ها و قابليت هاي آن را تشريح نماييم . در جولاي سال 2000 ، شرکت مايکروسافت در کنفرانس پياده کنندگان حرفه اي (PDC ) ، در شهر Orlando ايالت کاليفرنيا ، جزئيات بيشتري از نسل جديد پلات فرم خود ( دات نت ) به منظور پياده سازي برنامه هاي ويندوز و اينترنت را در اختيار علاقه مندان خصوصا" پياده کنندگان نرم افزار قرار داد . محوريت ابتکار فوق ، بر فريمورک دات نت استواربوده ونشاندهنده يک پلات فرم مناسب به همراه کتابخانه هاي کلاس گسترده اي است که پتانسيل هاي متعددي را در اختيار قرار مي دهد . يکي از نکات قابل توجه در پلات فرم فوق ، استفاده از XML و SOAP به منظور ارتباط بين نرم افزارها ي موجود در اينترنت ( نرم افزارهاي مبتني بر وب ) است . در اين راستا مجموعه اي از محصولات مبتني بر سرويس دهنده با نام سرويس دهندگان Enterprise دات نت به منزله نسل جديدي از محصولات Backoffice مايکروسافت مطرح شد . فريمورک دات نت ، مدلي کاملا" جديد به منظور برنامه نويسي و بکارگيري نرم افزار را ارائه نموده است . "بيل گيتس"، در سخنراني خود در PDC ، بدين نکته اشاره داشت که در هر پنج تا شش سال گذشته ما شاهد يک تحول عمده در رابطه با پياده سازي نرم افزار بوده ايم . آخرين موارد در اين زمينه به سوئيچ از DOS به ويندوز در سال 1990 و گذر از پياده سازي شانزده بيتي به سي و دو بيتي ( از ويندوز widows 3.x به ويندوز NT/95 ) در اواسط دهه 90 ميلادي است. با معرفي دات نت در PDC ، پياده کنندگان آن را معماري مناسبي براي پياده سازي نرم افزار ( برنامه هاي Desktop و برنامه هاي وب ) مشاهده نمودند . ويژوال استوديو دات نت ، اولين محصول مبتني بر دات نت مايکروسافت بوده که در سال 2001 در اختيار علاقه مندان قرار گرفت . اهميـت دات نت براي مايکروسافت تا بدين حد است که در سال 2001 ، بيش از هشتاد درصد منابع بخش تحقيق و توسعه اين شرکت در رابطه با آن صرف شده است . زبان سي شارپ ، که زباني جديد براي برنامه نويسي در دات نت است به عنوان زبان استاندارد براي پياده سازي داخلي در شرکت مايکروسافت پذيرفته شده است . يک پلات فرم مناسب براي آينده دات نت ، اولين پلات فرم طراحي شده از صدر تا ذيل با در نظر گرفتن واقعيتي با نام اينترنت است . دات نت از يک ماشين مجازي خاص در اين زمينه استفاده مي نمايد . ماهيت ماشين مجازي فوق ، به گونه اي است که از API ويندوز فاصله گرفته و در اين رابطه از يک کتابخانه کلاس استفاده مي نمايد که مي توان به جرات اين ادعا را داشت که تاکنون نظير آن ، ايجاد نشده است . امکان استفاده از زبان هاي متعدد برنامه نويسي وجود خواهد داشت . معماري دات نت ، امکان ارتباط بين زبان ها را بسادگي فراهم خواهد کرد . دات نت ، يک رويکرد جديد در رابطه با پياده سازي نر م افزار را مطرح نموده است . نگاه به دات نت ، عمدتا" بصورت سيستم هاي توزيع شده است . با استفاده از XML ، امکان اجراي توابع بر روي کامپيوترهاي متفاوت يک سازمان ويا جهان فراهم مي گردد و جلوه اي زيبا در همياري به منظور اجراي يک برنامه ، به نمايش در خواهد آمد . از اين منظر ، سيستم ها از سرويس دهندگان تا سيستم هاي بدون کابل ، قادر به اشتراک پلات فرم عمومي يکساني خواهند بود . با استفاده از نسخه هاي دات نت که براي تمام آن ها در دسترس خواهد بود ، امکان ارتباط مناسب آن ها با يکديگر فراهم خواهد شد . دات نت ، به منظور طراحي و پياده سازي برنامه هاي سنتي نيز راهکارها و امکانات مناسبي را ارائه مي کند تا از اين طريق امکان پياده سازي و بکارگيري اين نوع از نرم افزارها ، به سادگي فراهم آيد . برخي از تکنولوژي هاي ارائه شده در دات نت نظير فرم هاي ويندوز ، تلاشي در اين راستا است . ايده هاي اوليه از اواخر سال 1995 ، شرکت مايکروسافت نگاهي خاص و قابل توجه نسبت به اينترنت نمود . هدف مايکروسافت در اين زمينه پيوند بين پلات فرم ويندوز و اينترنت بود . ماحصل تلاش مايکروسافت در اين زمينه ارائه مدل برنامه نويسي Windiws DNA بود . در اين راستا مجموعه اي از ابزارها و تکنولوژي هاي مبتني بر اينترنت ، طراحي و ارائه گرديد . ASP ، از اولين تلاش هاي مايکروسافت در اين زمينه است . عملا" در اين زمينه ( مطرح شدن اسکريپت هاي مفسري ) يک برگشت به عقب نسبت به پياده سازي ساخت يافته و شيءگرا را شاهد بوده ايم . طراحي ، اشکال زدايي و نگهداري چنين کدهاي غير ساخت يافته اي مسائل خاص خود را خواهد داشت . ساير زبان ها نظير ويژوال بيسيک به صورت موفقيت آميز در رابطه با برنامه نويسي بر روي اينترنت و پلات فرم مايکروسافت استفاده مي گرديد . ولي اغلب از آن به منظور ايجاد عناصري که از طريق ASP ، به خدمت گرفته مي شدند ، استفاده مي شد . در اين رابطه تلاش هاي اندکي نيز در جهت ايجاد يک اينترفيس مبتني بر وب بر روي زبان هاي سنتي نظير webclasses در VB ، نيز انجام شد ولي هيچکدام از تلاش هاي فوق ، در سطح گسترده اي مورد استقبال و پذيرش قرار نگرفت . مايکروسافت در صدد حل آشفتگي هاي همراه برنامه هاي ويندوز DNA بود . ويندوز DNA ، تصويري مناسب از يک معماري Three-Tire و مبتني بر COM بود که تکنولوژي ASP در لايه Presentation ، اشياء Bussiness در لايه مياني و يک engine بانک اطلاعاتي رابطه اي در لايه Data آن قرار مي گرفت . مفاهيم همراه DNA ،کامل و بي عيب بود اما در زمان استفاده عملياتي چالش هاي خاص خود را به دنبال داشت . پياده سازي عناصر COM ، مستلزم يک سطح مناسب از دانش و مهارت است و مي بايست زمان زيادي در اين رابطه صرف گردد . بکارگيري نرم افزارهاي DNA ، نيز مسائل خاص خود را داشت ( مسائل مربوط به شماره نسخه ، نصب عناصر و عناصري که با آن مرتبط مي باشند ) . به موازات تلاش ساير شرکت ها در رابطه با ارائه راهکارهايي خاص به منظور پياده سازي برنامه هاي وب ، شرکت مايکروسافت در صدد برطرف نمودن محدوديت هاي مدل برنامه نويسي DNA گرديد . تولد دات نت در اوايل سال 1998 ، گروهي از پياده کنندگان نرم افزار در مايکروسافت ، کار خود را بر روي نسخه اي جديد از IIS (نسخه چهار) ، به اتمام رساندند که داراي چندين ويژگي جديد در رابطه با ASP بود . در اين راستا ، قابليت هاي جديدي به منظور پياده سازي برنامه هاي وب در ويندوز NT فراهم گرديد .گروه پياده کننده داراي ايده هاي متعددي براي اعمال اصلاحات جديد بودند . گروه فوق ، کار خود را بر روي يک معماري جديد براي پياده سازي ايده هاي مطرح شده آغاز نمود . اين پروژه ، NGWS)Netx Generation Window Services) نام گرفت . پس از ارائه ويژوال استوديو شش ، در اواخر سال 1998 ، تلاش براي ايجاد نسخه اي جديد از ويژوال استوديو در دستور 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 ، محيطي است که برنامه هاي دات نت به کمک آن اجرا مي گردند . برنامه هاي نوشته شده توسط هر يک از زبان هاي سازگار با دات نت پس از ترجمه توسط کامپايلر مربوطه به MSIL)Microsoft Intermediate Language) ترجمه مي گردند ( به زبان فوق IL نيز گفته مي شود ) . هدف از طراحي CLR نيل به اهداف زير بوده است : 1- پياده سازي سريع و آسان 2- برخورد اتوماتيک با مقولاتي همچون مديريت حافظه 3- حمايت از ابزارهاي متعدد 4- قابليت توسعه و گسترش متناسب با محيط بکارگيرنده پياده سازي سريع و آسان يک فريمورک گسترده و يکپارچه ، امکان نوشتن کد کمتر و با قابليت استفاده مجدد را در اختيار پياده کنندگان قرارخواهد داد . با توجه به اينکه سيستم ( 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 در اين بخش به بررسي کلاس هاي پايه فريمورک دات نت و اينترفيس هاي کاربر و برنامه خواهيم پرداخت . در ادامه بر روي لايه بعد متمرکز و به بررسي امکانات ارائه شده خواهيم پرداخت . اين لايه ، کلاس هاي پايه فريمورک دات نت ناميده شده و مسئوليت ارائه سرويس ها و مدل هاي اشياء براي داده ، عمليات ورودي و خروجي ، امنيت و موارد ديگر را بر عهده دارد . نسل بعدي 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 ) . پياده کنندگان در اين رابطه با انجام عملياتي مختصر ، قادر به استفاده از سرويس هاي وب خواهند بود.آنان مي بايست به عضوي از سرويس وب شده و فريمورک دات نت ساير مسائل موجود را دنبال و مديريت خواهد کرد . رويکرد فوق، تغيير معماري برنامه هاي وب را بدنبال داشته و امکان ارتباط سرويس هاي وب با يکديگر و بر روي بستر وب ، ميسر خواهد شد . سرويس هاي وب داراي نقش و جايگاهي بسيار مهم در توليد نسل جديدي از برنامه هاي مبتني بر وب مي باشند . سرويس هاي وب، گزينه اي مناسب براي جايگزين شدن با برخي از پکيج هاي نرم افزاري خواهند بود. اهميت XML در دات نت اکثر پتانسيل هاي ارائه شده بمنظور ارتباط بين هر يک از اجزاء دات نت ، با استفاده از XML ميسر مي گردد . مثلا" سرويس هاي وب ، کاملا" وابسته به XML براي ارتباط با اشياء از راه دور مي باشند. ADO.NET ارتباط تنگاتنگي با XML براي ارائه راه دور داده دارد .زمانيکه ADO.NET يک Dataset را ايجاد مي نمايد ( يک ساختار بمراتب پيچيده تر نسبت به نسخه قبلي Recordset ) ، داده بمنظور پردازش آتي توسط ADO.NET به XML تبديل و پس از اعمال تغييرات بر روي XML ، مجددا" داده بمنظور ذخيره سازي براي مکان مورد نظر ارسال خواهد شد .با استفاده از XML در حوزه هاي متفاوتي از دات نت ، امکان ارتباط و يکپارچگي بين عناصر مورد نظر چندين برابر مي گردد. XML در دات نت داراي جايگاهي خاص و مهم بوده و مي توان آن را بمنزله پتانسيلي در نظر گرفت که تمامي عناصر مورد نظر را بيکديگر مرتبط مي نمايد