بررسی روش های ترجمه و مفهوم page class در ASP.NET 2.0 New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 شنبه  31  تير  1396  2017  Jul.  22   Saturday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 انواع مدل كدينگ در ASP. NET 2.0 ( بخش دوم )

 مديريت وب

10106

3

3.7

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

 

مدل كدينگ در 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 از سه روش مختلف برای ترجمه برنامه های وب استفاده می كند : 

  •  Classic precompilation : اين مدل ترجمه همزمان با عرضه اولين نسخه ASP.NET ارائه گرديد . در اين روش ، بخش هائی از وب سايت نظير فايل های code-behind و هر نوع اسمبلی مرجع ترجمه و بخش هائی ديگر نظير فايل های حاوی تگ (فايل های aspx . ، و  ASMX ) در زمان اجراء و همزمان با اولين مرتبه درخواست  ، بطور پويا ترجمه می شوند . از مدل فوق صرفا" به همراه مدل code-behind سنتی  كه در آن صفحه واقعی از كلاس پايه ترجمه شده به ارث رسيده باشد ، می توان استفاده كرد.
    در روش فوق ، فايل های code-behind به اسمبلی ترجمه و در دايركتوری bin /  قرار می گيرند و فايل های aspx . بر اساس نياز و درخواست ترجمه می شوند .

  •  Dynamic compilation :  اين مدل ترجمه همزمان با عرضه اولين نسخه ASP.NET 2.0  ارائه گرديد  و در آن برنامه به همراه تمامی تگ ها و فايل های كد منبع بر روی سرويس دهنده وب بكارگرفته شده  و ASP.NET بطور كامل ترجمه را به صورت پويا و on the fly انجام می دهد .  ايجاد تغييرات در فايل های حاوی تگ ها و يا فايل های كد منبع به صورت on the fly از مهمترين ويژگی های روش فوق است . در چنين مواردی ،  برنامه بطور اتوماتيك و پس از بروز هر گونه تغيير ترجمه می گردد .
    با توجه به اين كه ترجمه پويا همزمان با اولين درخواست انجام می شود ، همواره برای پاسخ به اولين درخواست پس از اعمال تغيير در كد مدت زمان بيشتری نسبت به درخواست های بعدی صرف خواهد شد . 

  • Site precompilation : در ASP.NET 2.0 يك مدل جديد برای ترجمه precompilation  ارائه شده است كه اجازه می دهد تمامی وب سايت را به باينری ترجمه كرد . 
    در اين روش می بايست  قبل از بكارگيری يك پروژه  در ابتدا آن را بطور كامل ترجمه نمود . در اين مدل تمامی فايل های code-behind ، صفحات aspx . ، فايل های Html ، منابع گرافيكی و ساير عناصر موجود در back-end به يك و يا چندين اسمبلی قابل اجراء ترجمه می گردند . مدل فوق ، دارای بالاترين سطح كارآئی و امنيت است ولی امكان تغيير محتويات وب سايت در زمان فعال بودن سايت را نمی دهد . اين مدل ، برای سايت هائی كه فركانس بهنگام سازی آنها اندك است  و خواستار  امنيت بالائی می باشند  مناسب است  . 

در زمان ايجاد يك وب سايت جديد ، 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 از پيچيدگی بيشتری برخوردار است :

  • فايل code-Behind شامل يك partial class است كه از كلاس پايه صفحه به ارث می رسد . كلاس پايه صفحه می تواند كلاس Page  و يا كلاس ديگری باشد كه از كلاس Page مشتق شده است.

  • فايل aspx . شامل يك خصلت Inherits در دايركتيو Page@  است كه به كلاس partial مربوط به code-behind اشاره می نمايد .

  • پس از ترجمه صفحه ،  ASP.NET يك partial class را بر اساس فايل aspx . ايجاد می نمايد . اين كلاس ، يك   partial class از فايل كلاس code-behind است . فايل partial class توليد شده شامل تعاريف كنترل های صفحه است . اين  partial class فايل code-behind را قادر می سازد كه به عنوان بخشی از يك كلاس كامل و بدون الزام پياده كنندگان به تعريف صريح كنترل ها استفاده گردد.

  •  در نهايت ، ASP.NET كلاس ديگری را توليد كه از كلاس توليد شده در مرحله سوم به ارث رسيده است . اين كلاس توليد شده جديد شامل كد مورد نياز برای ايجاد صفحه است . كلاس توليد شده فوق و كلاس code-behind درون يك اسمبلی ترجمه تا پس از اجراء خروجی مورد نياز جهت ارسال برای مرورگر را توليد نمايد .

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

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

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



جستجو

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


 

 

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



              

 

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