عنوان
|
نويسنده
|
مشاهده
|
تعداد
آراء |
امتياز
|
انواع مدل كدينگ در ASP. NET 2.0 ( بخش دوم ) |
مديريت وب |
10186 |
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 ( يا تك فايل ) استفاده می كنند
را نشان می دهد .

شكل 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 استفاده می كند را نشان می دهد .

شكل 2 : مدل توارث page class در
code-Behind
در بخش سوم به بررسی سه
پرسش اساسی در خصوص ماهيت مدل كدينگ در ASP.NET خواهيم
پرداخت .