PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : تفاوت ASP و ASP.net؟



TAHA
10-28-2009, 10:34 PM
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 فعال و عمليات مورد نظر را انجام خواهد داد.