انواع مدل كدينگ در ASP. NET 2.0 ( بخش دوم )
اين مطلب از طريق سايت شرکت سخاروش در اختيار شما گذاشته شده است .

مدل كدينگ در ASP. NET 2.0 

انواع مدل كدينگ در ASP. NET 2.0 ( بخش دوم )
در بخش اول پس از بيان برخی مفاهيم اساسی برنامه های وب به انواع مدل كدينگ در ASP.NET 2.0  اشاره گرديد . در اين بخش به بررسی روش های ترجمه  و مفهوم page class در ASP.NET 2.0 خواهيم پرداخت .

روش های ترجمه در ASP.NET 2.0 
ASP.NET به همراه خود يك مدل ترجمه را ارائه داده است كه در آن اسمبلی ها به صورت پويا ترجمه می گردند . برنامه همواره به عنوان يك نسخه ترجمه شده ( با هدف افزايش كارآئی ) اجراء می گردد .
ASP.NET از سه روش مختلف برای ترجمه برنامه های وب استفاده می كند : 

در زمان ايجاد يك وب سايت جديد ، ASP.NET به صورت پيش فرض گزينه Dynamic compilation را انتخاب می نمايد . اين بدان معنی است كه تمامی كد و صفحات به عنوان فايل های حاوی كد و تگ بر روی سيستم فايل سرويس دهنده وب ذخيره می گردند و ASP.NET بطور اتوماتيك آنها را ترجمه خواهد كرد . در چنين مواردی ، پاسخ به اولين درخواست نيازمند صرف زمان بيشتری است تا ASP.NET بتواند تمامی صفحه را ترجمه نمايد .
برای site precompilation ، می بايست از يك ابزار جداگانه با نام aspnet_compiler.exe  جهت ترجمه برنامه وب استفاده كرد. كمپايلر فوق در دايركتوری Microsoft .NET Framework قرار دارد و می بايست در ابتدا از آن بر روی ماشين تست و پياده سازی استفاده كرد و در ادامه خروجی را بر روی ماشين عملياتی بكار گرفت .
كمپايلر فوق چندين فايل را در دايركتوری مقصد ايجاد می نمايد . در صورتی كه دقيق تر محتويات يكی از فايل های aspx . را بررسی نمائيم ، مشاهده خواهيم كرد كه فايل فوق حاوی هيچگونه تگ مفيدی نمی باشد و صرفا" شامل اطلاعات زیر است :

 "This is a marker file generated by the precompilation tool, and should not be deleted!"

تمامی كد واقعی و تگ ها به باينری ترجمه و در دايركتوری Bin قرار داده می شوند . پس از اين كار می توان محتويات و ساختار دايركتوری ايجاد شده را بر روی ماشين مقصد بكار گرفت و دايركتوری فوق را به عنوان دايركتوری مجازی پيكربندی تا شرايط اجرای برنامه فراهم گردد .  

مفهوم  page class  در ASP.NET 
پس از درخواست يك صفحه ASP.NET از سرويس دهنده و به منظور پاسخ گوئی به كاربران، می بايست در سمت سرويس دهنده پردازش های متعددی صورت پذيرد . كدی كه در سمت سرويس دهنده اجراء می گردد منحصرا" كدی نيست كه توسط پياده كننده ايجاد شده است . در مقابل ، ASP.NET در زمان اجراء يك و يا چندين كلاس را كه دقيقا" عمليات مورد نظر را انجام خواهد داد توليد و ترجمه می نمايد .
يك صفحه ASP.NET به عنوان يك unit اجراء و شامل عناصر سمت سرويس دهنده موجود در صفحه ( نظير كنترل ها ) و كد مربوط به event-handlers است كه توسط پياده كننده نوشته شده است . پياده كنندگان مجبور نيستند كه صفحات را از قبل به اسمبلی ترجمه نمايند . ASP.NET بطور پويا صفحات را ترجمه و آنها را در اولين مرتبه ای كه توسط يك كاربر درخواست می گردند ، ترجمه می نمايد . در صورتی كه در صفحه و ساير منابع مربوط به آن تغييراتی ايجاد شده باشد ، صفحه بطور اتوماتيك مجددا" ترجمه می گردد .
كلاس و يا كلاس هائی كه توسط كمپايلر ايجاد می گردد به نوع كدينگ ( مدل Inline code  و يا  code-behind ) بستگی دارد .

مدل Inline code
در اين مدل ، تگ ها و عناصر سمت سرويس دهنده به همراه كد مربوط به event-handler در يك فايل با انشعاب aspx . قرار می گيرد . كمپايلر يك كلاس جديد را كه مشتق شده از كلاس page  و يا يك كلاس پايه سفارشی تعريف شده توسط خصلت Inherits دايركتيو Page@ را توليد و ترجمه می نمايد .
مثلا" در صورتی كه دارای يك صفحه وب ASP.NET با نام SamplePage1 در فهرست ريشه برنامه وب باشيم ، يك كلاس جديد با نام ASP.SamplePage1_aspx از كلاس Page مشتق می گردد . برای صفحات موجود در فولدرهای برنامه ، از نام فولدر به عنوان بخشی در نام كلاس توليد شده استفاده می گردد . كلاس توليد شده شامل تعاريف كنترل های موجود در صفحه aspx .، كد های سفارشی و  event handlers  است .
پس از توليد صفحه ، كلاس ايجاد شده به يك اسمبلی ترجمه و پس از استقرار در  application domain ، امكان اجرای آن به منظور توليد خروجی مورد نظر جهت ارسال برای مرورگر فراهم می گردد . در صورتی كه در صفحه تغييراتی داده شود كه بر روی كلاس توليد شده تاثير بگذارد ( نظير افزودن كنترل های جديد و تغيير در كد ) ، كلاس ترجمه شده غيرمعتبر شده و يك كلاس جديد ايجاد می گردد .
شكل 1 ، مدل توارث برای page class در صفحات وب ASP.NET كه از مدل inline code ( يا تك فايل ) استفاده می كنند را نشان می دهد .

 مدل توارث page class در مدل inline code
شكل 1 :  مدل توارث page class در  inline code

صفحات code-Behind
در مدل code-Behind ، تگ های صفحه به همراه عناصر سمت سرويس دهنده ( شامل تعاريف كنترل ها ) در يك فايل aspx . ذخيره می گردند و كد صفحه در يك فايل جداگانه ديگر قرار می گيرد . فايل حاوی كد شامل يك partial class است (تعريف يك كلاس با استفاده از كليد واژه Partial ) . وپژگی فوق اين موضوع را به اثبات می رساند كه فايل فوق صرفا" شامل بخشی از تمام كدی است كه كلاس كامل صفحه را ايجاد می نمايد . در partial class ، كد مورد نياز برنامه كه عمدتا" شامل  event handlers است به آن اضافه می گردد ( امكان اضافه كردن متدها و يا خصلت هائی ديگر با توجه اهداف عملياتی يك صفحه نيز وجود دارد ) .
مدل توارث برای صفحات code-behind نسبت به صفحات Inline code از پيچيدگی بيشتری برخوردار است :

شكل 2 مدل توارث  برای page class در يك صفحه وب ASP.NET كه از مدل code-Behind استفاده می كند را نشان می دهد .

 مدل توارث page class در مدل  code-Behind
شكل 2 :  مدل توارث page class در   code-Behind

در بخش سوم به بررسی سه پرسش اساسی در خصوص ماهيت مدل كدينگ در ASP.NET خواهيم پرداخت .  


استفاده از اين مطلب  با ذکر منبع و اهداف غيرانتفاعی بلامانع است .
http://www.srco.
ir