ASP.NET و بررسي تفاوت هاي موجود با ASP کلاسيک
آيا ASP.NET نسخه جديدي از ASP کلاسيک است ؟ در پاسخ به سوال فوق مي بايست با صراحت اعلان نمود که ASP.NET بعنوان يک نسخه اصلاح شده و يا تکميلي نسبت به آخرين نسخه ASP کلاسيک يعني ASP 3.0 نبوده و در حقيقت ASP.NET يک الگوي جديد براي پياده سازي برنامه ها تحت وب خصوصا" اسکريپت هائي که بر روي سرويس دهنده اجراء مي گردند ، مي باشد . در اين مقاله سعي خواهد شد که به بررسي مهمترين تفاوت هاي موجود بين ASP.NET و ASP کلاسيک پرداخته و در اين رهگذر نگاهي نيز بر اصول اوليه و اساسي براي ايجاد اين نوع صفحات داشته باشيم .
.NET Common Language Runtime
شرکت مايکروسافت در حال ايجاد يک زير ساخت سطح پايين (Low-Level) براي ويندوز است . اين زير ساخت جديد ، بعنوان حد واسط بين عمليات سطح پايين ويندوز و برنامه هاي کاربران ، قرار گرفته و ايفاي وظيفه ( مديريت اجراي کدها ) خواهد کرد . زيرساخت فوق CLR ناميده شده است .CLR مسئول ايجاد يک سطح خاص از کپسوله سازي بين پياده کنندگان نرم افزار و سيستم عامل بوده و طبيعتا" باعث تسهيل در ايجاد برنامه هاي تحت ويندوز خواهد شد. در اين راستا پياده کنندگان نگران انجام عمليات سطح پاييني نظير : مديريت حافظه ،مديريت اشاره گرها ،تفاوت بين زبانهاي برنامه نويسي و ساير عمليات رايج دردسر آفرين ! نخواهند بود. CLR يک محيط زمان اجراء بصورت Object-Oriented است . هر نوع داده در CLR بصورت يک شي بوده که در کنار خود مجموعه اي از متدها و خصايص را خواهد داشت . CLR امکان دستيابي به مجموعه اي حياتي از سرويس ها و خدمات ارائه شده توسط سيستم عامل نظير : امنيت ، تعيين اعتبار ،دستيابي به سيستم فايل ، دسترسي به اطلاعات شبکه اي و ساير عمليات مورد نياز را فراهم مي نمايد.
نکته
کدهائي که با استفاده از امکانات ارائه شده CLR نوشته مي شوند را Managed code و کدهائي که از زير ساخت فوق استفاده نمي نمايند را Unmanaged Code مي گويند.
مقدمه اي بر ASP.NET
تفاوت بين ASP.NET با ASP کلاسيک از دو زاويه اصلي قابل مطالعه است:
? بعد اول : ASP.NET امکانات بمراتب بيشتري را از بعد برنامه نويسي نسبت به ASP کلاسيک ارائه نموده است . مايکروسافت در اين زمينه از نقطه نظرات و پيشنهادات افراديکه با ASP کار کرده اند استفاده و سعي نموده است که با بررسي دقيق اين نوع خواسته ها ،امکان افزودن قابليت هاي جديد برنامه نويسي در ASP.NET را محقق نمايد.
? بعد دوم : ASP.NET تغييراتي را در رابطه با اصول برنامه نويسي براي ايجاد صفحات وب پويا ايجاد نموده است . براي ايجاد و نوشتن صفحات ASP.NET نيازمند کسب تجارب بيشتر و جديدتري نسبت به آنچه قبلا" در رابطه با ASP کلاسيک فراگرفته شده است، خواهد بود.
در ادامه به بررسي دو بعد فوق خواهيم پرداخت :
اصلاحات ساختاري در برنامه نويسي صفحات ASP.NET
• اسکريپت هاي ترجمه شده ASP.NET . ASP.NET نسبت به ASP از کارآئي بمراتب بالاتر و محسوس تري برخوردار است . صفحات ASP.NET ترجمه مي گردنند.در گذشته ما شاهد تفسير اسکريپت هاي نوشته شده بهمراه ASP بوديم که همين موضوع تاثير زيادي را از بعد سرعت و کارائي بدنبال داشت . صفحات ASP.NET حرف به حرف توسط کمپايلرهاي وابسته به CLR ترجمه خواهند شد. ( کمپايلرهاي ارائه شده بهمراه ويژوال استوديو نظير VB,VC++,C# نمونه هائي از اين نوع کمپايلرها مي باشند.)
• Caching . يکي از مهمترين عوامل تاثير گذار بر کارائي يک وب سايت ،نحوه دستيابي به داده ها است . مثلا" يک صفحه وب که محتويات يک جدول موجود در بانک اطلاعاتي را نمايش مي دهد ،اکثر زمان خود را صرف ايجاد ارتباط با بانک اطلاعاتي ، درخواست و بازيابي اطلاعات مي کند . براي بهبود کارائي برنامه هاي تحت وب که هر يک بنوعي با بانک اطلاعاتي مرتبط و پس از انجام فعل و انفعالاتي اطلاعاتي را نمايش مي دهند ،ASP.NET از يک ماژول Data-Caching در کنار خود استفاده مي نمايد. ماژول فوق اين امکان را فراهم خواهد آورد که مشخص نمائيم چه نوع اطلاعاتي را مي بايست بر روي صفحه Cache و تا چه زماني و تحت چه شرايطي مي بايست Cache تخليه شده ومجددا" درخواست براي بازيابي اطلاعات از بانک اطلاعاتي را داشته باشيم . در چنين شرايطي در صورتيکه اين اطمينان وجود دارد که بانک اطلاعاتي بندرت بهنگام سازي مي گردد ،مي توان صفحه اي را ايجاد نمود که نتايج مربوط به بازيابي اطلاعات از بانک اطلاعاتي را به مدت بيست و چهار ساعت Cache نمايد.
• عرضه ADO+ . شرکت مايکروسافت بهمراه ASP.NET نسخه جديدي از ADO با نام ADO+ را ارائه نموده است . ADO+ با داده ها بصورت شي گراء ، چندبعدي و بمراتب ساده تر از ADO برخورد مي کند. در ADO تمامي داده ها بصورت دو بعد سطر و ستون نمايش داده مي شوند. در چنين حالتي اگر يک سطر و يا ستون خاص در يک RecordSet خود شامل يک Recordset باشد ،چه اتفاقي خواهد افتاد؟ انجام عمليات فوق در ADO بسيار مشکل است . ( صرفا" انجام عمليات فوق از طريق Data Shaping انجام مي گيرد) در ADO+ ايجاد Recordset هاي چند بعدي بسادگي انجام گرفته و تحقق عمليات متفاوتي نظير بهنگام سازي و حذف Recordset هاي مربوطه کار مشکلي نخواهد بود. در ADO هر يک از RecordSet ها بصورت يک صفحه ( بورد) دو بعدي و غير انعطاف پذير از اطلاعات مي باشند . در ADO+ هر يک از Recordset ها بصورت يک قطره کاملا" انعطاف پذير و شکل پذير از اطلاعات خواهد بود.
• Post-Back Forms . در زمان ايجاد صفحات ASP کلاسيک و در موارديکه نياز به جمع آوري اطلاعات از کاربر و انجام پردازش هاي مربوطه بر روي داده ها است ،اغلب پياده کنندگان اين نوع صفحات از ترفندهاي متعددي استفاده مي کردنند. استفاده از فرم هاي Post-Back نمونه ئي از ترفندهاي مورد اشاره است . اين نوع فرم ها با استفاده از تگ <Form??> ايجاد و خصلت ACTION آنها مقدار دهي نشده و يا به همان صفحه اي که شامل فرم است آدرس دهي خواهد شد.در اين راستا زمانيکه کاربر اقدام به ارسال فرم مي نمايد ،صفحه مشابه ASP مجددا" فعال که در آن داده هاي وارد شده توسط کاربر در فرم مشاهده خواهند شد. براي هندل کردن اينچنين موارد در ASP از دستورات if استفاده شده تا مشخص گردد که آيا فرم Post-back شده است يا خير ؟ در ASP.NET از دستورات دردسر آفرين If استفاده نمي گردد. پياده کنندگان مي توانند يک صفحه ASP.NET را بهمراه استفاده از يک دکمه کنترل سرويس دهنده ايجاد نمايند. در ادامه مي توان با نوشتن يک تابع نحوه برخورد با واقعه فشردن دکمه مربوطه را تبين نمود. در چنين حالتي تمامي عمليات مورد نياز براي حمايت لجستيک از يک فرم از طريق يک تابع انجام خواهد شد. ( به جاي نوشتن چندين If ) .
• Server Controls . در ASP کلاسيک تمامي متدها ي لازم براي اخذ اطلاعات از کاربران از طريق کنترل هاي پيش فرض HTML انجام مي شود. مثلا" براي ايجاد يک Text Box و بمنظور اخذ اطلاعات از کاربر مي توان از کدهائي مشابه زير استفاده نمود :
ايجاد يک Text Box
<Form>
<INPUT TYPE = TEXT NAME=MyTextBox>
</Form>
در ASP.NET کنترل هاي سرويس دهنده جايگزين شده اند. کنترل هاي فوق را مي توان در صفحات ASP.NET از طريق نوشتن کدهاي ساده اي ايجاد نمود. مثلا" براي ايجاد يک Text Box در يک صفحه ASP.NET مي توان همچنان از تگ هاي استاندارد HTML نظير آنچه که در مثال بالا مشاهده کرديم ويا از يک کنترل سرويس دهنده مطابق زير استفاده نمود :
ايجاد يک Text Box در ASP.NET
<Form ACTION="Test.aspx" METHOD=POST RUNAT="Server">
<asp:textbox id="MyTextBox" runat="Server"/>
</Form>
کنترل سرويس دهنده Text Box توسط تگ asp:textbox ايجاد مي گردد. تگ فوق به ASP.NET خواهد گفت که شما به يک Text Box نياز داريد. اين کنترل سرويس دهنده هوشمندانه Html هاي لازم و مورد نياز براي عرضه نمودن يک Text Box استاندارد را ارائه خواهد نمود. زمانيکه کاربري صفحه ASP.NET را ملاقات نمايد ،با کدهاي Html مشابه زير مواجه خواهد شد.
ايجاد يک Text Box در ASP.NET و مشاهده توسط کاربر
<FORM name="ctrl2" method="post" action="intro7.aspx" id="ctrl2">
<INPUT type="hidden" name="__VIEWSTATE" value="a0z-426043723...">
<input name="MyTextBox" type="text" id="MyTextBox">
...
توجه داشته باشيد که کنترل سرويس دهنده Text Box بصورت Html هاي معمولي عرضه شده است . همچنين فيلد مخفي _Viewstate براي نگهداري وضعيت فرم با توجه به داده ها ي کاربر ايجاد مي گردد. در اين مقاله بدنبال تشريح جزئيات نحوه کار کنترل هاي سرويس دهنده و نحوه پشتيباني از آخرين وضعيت يک فرم نبوده و صرفا" مي بايست به اين نکته توجه نمود که کنترل هاي سرويس دهنده تگ هاي Html را براي سرويس گيرنده ارسال و همانند صفحات ASP کلاسيک ،هر مرورگر استاندارد وب قادر به نمايش صفحات ASP.NET خواهد بود.
تسهيل در امر بکارگيري برنامه ها
گروه طراح ASP.NET در شرکت مايکروسافت آشکارا به اين حقيقت پي برده بودند که بکارگيري يک برنامه ASP بسيار مشکل است . مثلا" در صورتيکه يک برنامه بزرگ ASP بهمراه تعداد زيادي عناصر COM اختصاصي طراحي و بر روي سرويس دهنده محل طراحي اين عناصر (Development Servers) و برنامه ها قرار گرفته شده باشند ،انتقال برنامه به محل واقعي جهت استفاده (Production Servers) کار مشکل و دردسر آفريني خواهد بود. در اين راستا مي بايست اين اطمينان را داشت که تمامي عناصر Com بر روي هر يک از سرويس دهندگان وجود داشته و عناصر فوق ريجستر شده باشند. تنظيم پارامترهاي مربوط به برنامه IIS بر روي هر يک از سرويس دهندگان نيز مزيد بر مشکل بود و بهرحال ما همواره در رابطه با بکارگيري و انجام عمليات مربوطه در اين زمينه با مشکلات عديده اي مواجه بوده و هستيم . صفحات ASP.NET در اين راستا نيز تسهيلاتي را در امر بکارگيري ساده برنامه هاي ASP فراهم نموده اند. در ASP.NET لزومي به ريجستر نمودن عناصر COM نبوده و کافي است که عناصر فوق در دايرکتوري مربوطه مستقر گردنند. ASP.NET از يک فايل پيکربندي متني براي تغيير و اصلاح پارامترهائي استفاده نموده که تغيير آنها قبلا" صرفا" از طريق بکارگيري برنامه IIS امکان پذير بود.
تغييرات اوليه در برنامه نويسي اسکريپت هاي وب با استفاده از ASP.NET
ASP.NET تغييرات اصولي متعددي را در رابطه با ايجاد صفحات وب باعث شده است . صفحات ASP بر اساس يک نظام خاص رويه اي ايجاد و هر فعاليت از طريق يک صفحه ASP انجام خواهد شد. در هر يک از صفحات ASP کدهاي نوشته شده براي انجام يک فعاليت خاص بترتيب اجراء خواهند شد. مثلا" اگر بخواهيم کاربران نام خود را وارد نموده و در ادامه امکان نمايش آن را فراهم نمود مي توان دو صفحه ASP را ايجاد نمود: اولين صفحه مسئول ايجاد يک فرم بهمراه يک TextBox بوده که کاربر قادر به درج نام خود در فيلد فوق خواهد بود. دومين صفحه بعنوان ACTION مربوط به فرم ايفاي وظيفه خواهد نموده و بسادگي نام وارد شده توسط کاربر را که از طريق اولين صفحه وارد شده است را نمايش خواهد داد : (Response.write ?Hello, ? & Request.Form(?Name") . در صفحات ASP ضروري است که پياده کنندگان از آنچه که بر روي سرويس دهنده و سرويس گيرنده اتفاق مي افتد، آگاهي داشته باشند. همانگونه که اشاره شد براي اخذ اطلاعات از کاربر نيازمند استفاده از چندين صفحه ASP مجزاي ديگر خواهيم بود. به عبارت ديگر درج و اخذ اطلاعات از کاربر نيازمند يک Round Trip به سرويس دهنده بوده و پياده کننده مي بايست نسبت به اين واقعيت آگاهي لازم را داشته باشد.
صفحات ASP.NET نيز به اين Round trip براي اخذ اطلاعات از کاربر نياز خواهند داشت با اين تفاوت که پياده کنندگان ضرورتي نسبت به آگاهي از جزئيات اين فعاليت نخواهند داشت . صفحات ASP.NET بسيار مشابه برنامه هائي هستند که با ويژوال بيسيک نوشته شده اند. در رابطه با مثال گفته شده دو صفحه مورد نظر را مي توان در يک صفحه و از طريق نوشتن کدهاي محدودي ايجاد نمود. در برنامه زير از يک کنترل سرويس دهنده Button استفاده شده است .(asp:button) . زمانيکه دکمه فوق فعال گردد تابعي با نام SubmitButton_Clicked فعال و عمليات مورد نظر را انجام خواهد داد.
منبع: www.bitasoft.com/س