ارائه يک مدل مناسب بمنظور گذر از ASP کلاسيک و رسيدن به ASP.NET New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

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

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 از ASP کلاسيک تا ASP.NET ( بخش سوم )

 مديريت وب

8309

1

0

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

 

از ASP کلاسيک تا ASP

از ASP کلاسيک تا ASP.NET ( بخش سوم  )

در بخش اول ، به بررسی ضرورت های حرکت به سمت ASP.NET و معرفی ساختا ر اوليه  تکنولوژی فوق و در بخش دوم  تغييرات اساسی بوجود آمده در ASP.NET نسبت به ASP کلاسيک، تشريح گرديد. در بخش سوم ، به  بررسی ساير موارد موجود در زمينه گذر از ASP کلاسيک و حرکت بسمت ASP.NET پرداخته می گردد .

بخش چهارم : گذر از VbScript و حرکت بسمت VB.NET
در بخش های قبل ، به برخی از تغييرات اساسی بوجود آمده در ASP.NET نسبت به ASP کلاسيک اشاره گرديد.در ASP کلاسيک برای نوشتن اسکريپت هائی که بر روی سرويس دهنده اجراء می شدند از Vbscript استفاده می گرديد ، در همين راستا تعداد اندکی از برنامه نويسان نيز از Jscript استفاده می کردند. در اين بخش به بررسی برخی از روش های گذر از Vbscript و استفاده از VB.NET اشاره شده و در ادامه تغييرات بوجود آمده بين VB 6.0 و VB.NET بررسی خواهد شد. در دات نت از زبانهای اسکريپت خبری نبوده و بالطبع استفاده از VBscript توصيه نشده است. در دات نت از VB استفاده و  کدهای نوشته شده ترجمه خواهند شد. بمنظور گذز از ASP کلاسيک و سوئيچ نمودن بر روی ASP.NET ، در ابتدا می بايست انشعاب صفحات ASPنوشته شده را به aspx تبديل نمود. پس از تبديل انشعاب فايل های ASP کلاسيک ، صفحات جديد با انشعاب aspx توسط ASP.NET پردازش خواهند شد. دومين مرحله تبديل کدهای نوشته شده و موجود Vbscript به VB است . ممکن است ، اين سوال مطرح گردد که تفاوت های اساسی بين VBscript و VB چيست ؟ پاسخ به سوال فوق بسادگی ميسر نمی باشد ، چراکه در اين زمينه  تغييرات عمده ای ايجاد شده است . . اولين تغيير اساسی ، پيش فرض قرار داده شدن Option Explicit است . بنابراين می بايست تمامی متغيرهای استفاده شده را با صراحت تعريف کرد. يکی ديگر از تغييرات ، عدم وجود نوع Variant است . در اين راستا می توان از نوع Object استفاده نمود. نوع فوق دارای عملکردی متفاوت نسبت به Variant است . در اين زمينه توصيه می گردد که نوع تمامی متغيرها دقيقا" مشخص شده و ملاحظات مربوط به تبديل نوع ها لحاظ و رعايت گردد. يکی ديگر از تفاوت های اساسی ، مربوط به نحوه فراخوانی توابع و متدها ئی است که پارامترهائی را بعنوان ورودی اخذ می نمايند. در اين راستا می بايست در زمان استفاده از پارامتر از پرانتز استفاده نمود. در صورتيکه متد و يا تابعی فاقد پارامتر باشد ضرورتی به استفاده از پرانتز وجود نخواهد داشت . در VB 6.0 آرگومانهائی که به يک تابع پاس داده می شوند بصورت پيش فرض از نوع مرجع  می باشند (By Ref.) در صورتيکه در VB آرگومانهائی پاس داده شده از نوع مقدار (By Value) می باشند. در VB.NET ايندکس بردارها از صفر شروع می گردد.
در VB.NET استفاده از Set و Let مجاز نبوده و بنابراين لازم است که موارد فوق حذف گردد . مثلا" دستور : Set Object1=Object2 به Object1=Object2 تبديل خواهد شد.
در VB.NET خصلت های  پيش فرض وجود نداشته و می بايست با صراحت خصايص مربوط به اشياء را مشخص کرد . مثلا" دستور : Mystring as string=TextBox1 به MyString as string=TextBox.Text تبديل خواهد شد. در عبارت دوم از خصلت .Text استفاده شده است . نوع صحيح به سی و دو بيت و نوع Long به شصت و چهار بيت تبديل شده اند. در VB.NET از روش های ساختيافته تری بمنظور برخورد با خطاهای احتمالی استفاده می گردد. در اين راستا ضمن اينکه می توان کماکن از عبارت OnError استفاده کرد ،  ولی مناسب تر است که از "Try-Catch Block" استفاده گردد. در VB.NET می بايست با صراحت نوع داده ها را تبديل  نمود وگرنه با خطاء مواجه خواهيم شد. در اين راستا می بايست از توابع Cstr,Ctype بمنظور تبديل يک نوع صحيح به نوع رشته ای برای نوشتن پاسخ رشته ای استفاده نمود.

Response.Write ("Count=" & CStr(MyCount))
Response.Write("Count=" & CType(MyCount, String))
 

درVBScript ، بمنظور الحاق ( اتصال ) دو رشته ، الزامی جهت استفاده از فضا های خالی بين & و متفيرهای رشته ای وجود ندارد  . (x = str1&str2) ولی در VB.NET می بايست حتما" از فضای خالی در اين راستا استفاده گردد. (x = str1 & str2) . گرامر عبارات Property نيز تغيير يافته است . در اين راستا Property Get ، Property Let و Prpoerty Set با يکديگر ترکيب و به يکی تبديل شده اند. GET و SET درون عبارت Property  استفاده می گردند.

Public Property MyCount as Integer
   Get
      MyCount = InternalValue
   End Get
   Set
     InternalValue = value
  End Set
End Property
 

بخش پنجم : برنامه های ASPکلاسيک که از عناصر COM استفاده می نمايند.
تمامی برنامه نويسان ASP ، تاکنون در برنامه های خود از عناصر COM استفاده کرده اند . در مورد اين نوع برنامه ها چه تدابيری انديشيده شده است ؟ اغلب برنامه نويسان از اشياء متعدد COM که با اهداف خاصی طراحی شده و يا خود آنها را طراحی و پياده سازی نموده اند ، استفاده می نمايند. آيا ضرورتی به بازنويسی مجدد کدها وجود خواهد داشت ؟ در دات نت ، عناصر COM وجود نداشته و از يک پل ارتباطی بمنظور ارتباط آنها بايکديگر استفاده می گردد. COM Iterop رسالت فوق را برعهده دارد. در ابتدا لازم است مطالبی در رابطه با COM Interop عنوان شده ودر ادامه به بررسی تغييرات مبتنی بر COM در ASP.NET پرداخته گردد. COM Interop روشی را جهت فراخوانی عناصر از طريق ASP.NET فراهم می آورد. امکان  فوق ، می تواند بمنزله يک خبر خوب برای برنامه نويسان ASP تلقی گردد. در اين راستا لازم است که از صفت ASPCOMPAT استفاده گردد. اگر قصد استفاده از عناصر موجود STA و يا VB را در ASP.NET داشته باشيم، می بايست از ASPCOMPAT استفاده گردد. در صورتيکه اشياء COM مورد نظر از اشياء ذاتی  ASP استفاده می نمايند ، نيز می بايست از
ASPCOMPACT استفاده گردد .  ASP بصورت اساسی از MTA thread pool به جای STA استفاده می نمايد. بنابراين صفحاتی که از عناصر STA استفاده می نمايند ممکن است عملکرد مثبت و يا حتی منفی را داشته باشند. وضعيت فوق ارتباط مستقيم با ماهيت و رفتار عناصر COM بستگی خواهد داشت . بخاطر داشته باشيد که استفاده از ASPCOMPACT در زمان استفاده از سرويس های وب مجاز نخواهد بود.

بخش ششم :  برنامه هائی که از بانک های اطلاعاتی استفاده می نمايند
تمامی برنامه نويسان ASP از بانک های اطلاعاتی در صفحات ASP خود استفاده می نمايند. در زمينه سوئيچ نمودن از ASP کلاسيک به ASP.NET سوالات متعددی در رابطه با وضعيت بانک های اطلاعاتی مطرح می گردد. چه نوع تغييراتی در کدهای مربوطه می بايست داده شود ؟ چه تغييرات عمده ای در زمينه دستيابی به بانک های اطلاعاتی در ASP کلاسيک نسبت به ASP.NET بوجود آمده است ؟ يکی از اخبار خوب در اين زمينه ، امکان استفاده از ADO در ASP.NET از طريق بخدمت گرفتن COM Interop  است ، گرچه شرکت ماکروسافت راهکار فوق را توصيه نمی نمايد. بدلايل متعدد توصيه می گردد که از ADO.NET استفاده گردد. ADO.NET روشی مبتنی بر دات نت بمنظور دستيابی به داده ها در منابع داده ئی است . ADO و ADO.NET دارای تفاوت های متعددی با هم بوده و نمی توان ادعا نمود که ADO.NET کاملا" با ADO سازگار است . ADO.NET دارای سه شی اساسی است : DataSet ,DataReader و DataAdapter .  شی
DataSet  را می توان با وضعيت RecordSet در ADO مقايسه نمود. DataSet مسدوليت ذخيره سازی داده ها در يک حافظه سريع  غير متصل (Disconnected Cashe)  را بر عهده دارد. ساختار DataSet مشابه يک بانک اطلاعاتی رابطه ای است . از DataReader بمنظور بازيابی داده ها از بانک اطلاعاتی بصورت فقط خواندنی و فقط بسمت جلو ( اشاره گر مربوطه ) استفاده می گردد. DataAdapter مجموعه ای از دستورات و ارتباطات به بانک اطلاعاتی را ارائه داده که از آنها بمنظور پر نمودن Dataset و بهنگام سازی داده ها در منابع داده ئی استفاده می گردد. در ADO.NET از دو Data Provider از قبل تعريف شده استفاده می گردد : SQLClient و OLEDB . در صورتيکه از سرويس دهنده SQL استفاده می گردد ، می بايست از SQLClient که بسيار سريع  است ، استفاده گردد. ويژوال استوديو دات نت دارای امکانات متعدد طراحی بمنظور دستيابی به بانک های اطلاعاتی و استفاده از اشياء ADO.NET است . در اين راستا می توان اشيائی نظير: DataAdapter و DataSet را براحتی در يک فرم وب قرار داده و با پيکربندی مناسب آنها ، بسادگی زمينه بازيابی داده ها فراهم خواهد شد.
برنامه نويسان ASP ، می بايست در رابطه با تبديل کدهای نوشته شده ADO در صفحات خود و تبديل آنها به ADO.NET اتخاذ تصميم نمايند. در صورت امکان توصيه می گردد که تمامی کدهای ADO به ADO.NET تبديل شوند. در صورتيکه تحقق توصيه فوق بدلايلی غير ممکن بنظر می آيد ، می توان از يک لايه اضافی ديگر COM Interop استفاده نمود که قطعا" باعث کاهش کارائی سيستم نيز خواهد شد.

بخش هفتم : استراتژهای عمومی  گذر از ASP کلاسيک به ASP.NET
تبديل يک برنامه نوشته شده با ASP کلاسيک به ASP.NET کار ساده ای خواهد بود، ولی در صورتيکه برنامه پيچيده و بزرگ باشد فرآيند تبديل ، خود بمنزله يک پروژه بزرگ خواهد بود. در اين راستا لازم است که از برخی راهکارهای  خاص استفاده  گردد. قبل از تبديل ، می بايست بخش هائی از برنامه را که حتما" مشمول تبديلات خواهند شد ، مشخص نمود. با توجه به اين موضوع که می توان همچنان از فايل های ASP کلاسيک در کنار ASP.NET نيز استفاده کرد ، بنابراين ضرورتی نخواهد داشت که عمليات تبديل را يکباره انجام داد. نگهداری سايت موجود بمنظور ارائه خدمات مربوطه در حين فرآيند تبديل بسيار حائز اهميت بوده و نبايد بخاطر بدست آوردن يک چيز موارد ديگری را از دست داد. عدم حضور کوتاه مدت در عرصه رقابت ، ممکن است تاوان بس سنگينی را بدنبال داشته باشد که جبران نمودن آن در صورت امکان زمان و منابع متعددی را طلب نمايد. در سناريوی Multi-tier ، می توان از رويکردهای افقی و يا عمودی بمنظور اعمال تغييرات لازم استفاده نمود. در رويکرد افقی ، تمامی يک Tier به يکباره تبديل خواهد شد. مثلا" می توان تمامی عناصر COM موجود در Middle Tire را به عناصر دات نت ويا سرويس های وب تبديل نمود. در اين راستا صفحات ASP موجود در لايه Presentation آگاهی لازم را در خصوص تغييرات بوجود آمده نخواهند داشت . در ادامه می توان تمام لايه Presentation را به ASP.NET تبديل نمود. در برخی موارد تبديل تمامی يک Tier امکان پذير نخواهد بود در چنين مواردی می توان از رويکرد عمودی استفاده نمود. در رويکرد فوق بخش های مربوطه ای که می بايست تبديل گردند ، در هر Tier شناسائی می گردند . دامنه  رويکرد فوق ممکن است صفحات و يا عناصر را شامل شده و عمليات تبديل آنها می بايست تواما" صورت پذيرد.
در رابطه با کدهای ADO موجود در صفحات ASP کلاسيک نيز می بايست سياست خود را مشخص نمود. در صورتيکه سرعت در دستيابی به منابع داده ئی يک فاکتور تعيين کننده است لازم است که تمامی کدها بکمک ADO.NET بازنويسی گردنند.

بخش هشتم : پاسخ به برخی از سوالات متداول

جواب

سوال

اولا" انشعاب فايل ها در ASP کلاسيک asp و در ASP.NET بصورت . aspxاست . ثانيا" هر يک از صفحات فوق دارای تنظيمات مختص بخود و بر اساس روش های خاصی می باشند. تنظيمات ASP کلاسيک در ريجستری ذخيره شده در صورتيکه تنظيمات ASP.NET در فايل های مبتنی بر Xml ذخيره می گردد.

چگونه صفحات ASP کلاسيک و ASP.NET را می توان در کنار يکديگر استفاده نمود؟

امکان به اشتراک گذاشتن داده های اشاره شده بين صفحات ASP کلاسيک و ASP.NET وجود ندارد.

آيا برنامه های ASP کلاسيک و ASP.NET می توانند از داده های Session و Application بصورت اشتراکی استفاده نمايند؟

در ASP.NET از فايل Global.asax استفاده می گردد.

فايل معادل Global.asa در ASP.NET چيست ؟

بله . در اين راستا می توان در صفحات ASP کلاسيک از   CCW   بمنظور فراخوانی عناصر دات نت استفاده نمود. برای استفاده از عناصر COM در صفحات ASP.NET می توان از RCW   استفاده کرد .

 آيا می توان عناصر دات نت را در ASP کلاسيک و عناصر COM را در ASP.NET استفاده نمود؟

چون ASP.NET مستقل از IIS است ، بنابراين امکان فوق همچنان در ASP کلاسيک و ASP.NET قابل استفاده خواهد بود.  مجوز فوق بصورت IUSER_machinename وجود خواهد داشت .

 وضعيت مجوز Anonymous در ASP.NET به چه صورت است ؟

خير . ASP.NET خروجی خود را بر اساس  HTML 3.2توليده کرده که مورد حمايت تمامی مرورگرها است .

 آيا لازم است کدهای متفاوتی بمنظور اجراء بر روی مرورگرهای متفاوت نوشته گردد؟

با استفاده از Interop اين امر ميسر خواهد شد. بخاطر داشته باشيم که ADO.NET بهمراه ASP.NET توصيه می گردد.

 آيا می توان همچنان از ADO بهمراه ASP.NET استفاده نمود ؟

از فايل های فوق کماکن می توان استفاده نمود ولی توصيه می گردد اين نوع فايل ها به کتابخانه ای از کلاس ها و يا کنترل های کاربر تبد يل شوند.

وضعيت فايل های Include به چه صورت است ؟

بلی . در اين راستا می بايست حتما" از Response.Redirect استفاده نمود. Server.Transfer و Server.Execute سازگار نبوده و در صورت استفاده از آنان بمنظور فراخوانی صفحات ديگر می بايست آنها را جايگزين Response.Redirect نمود.

آيا می توان صفحات ASP کلاسيک را از طريق صفحات ASP.NET فراخواند و يا بالعکس ؟

در اين راستا هيچگونه ريسکی وجود نخواهد داشت . دو برنامه  کاملا" از يکديگر متمايز بوده و هيچگونه اينترفيس و يا ارتباطی با يکديگر ندارند.

: آيا امکان اجرای دو برنامه که يکی بر اساس ASPکلاسيک نوشته شده و ديگری بر اساس ASP.NET نوشته شده اند بر روی يک سرويس دهنده بدون وجود هيچگونه ريسکی وجود دارد؟

آشنائی با HTML قطعا" مفيد بوده و می توان مستقيما" اقدام به فراگيری ASP.NET نمود. در اين راستا الزامی وجود ندارد که حتما" می بايست در ابتدا ASP کلاسيک را فراگرفت .

 آيا فراگيری ASP.NET بدون هيچگونه زمينه ای امکان پذير بوده و يا می بايست دارای آشنائی لازم با HTML و ASP بود ؟

متاسفانه تاکنون نرم افزاری از اين نوع ارائه نشده است .

آيا برای تبديل صفحات ASP کلاسيک به ASP.NET نرم افزارهائی ( مترجم های خاص) وجود دارد؟

در هر صفحه از دايرکتيوهای خاصی بمنظور معرفی زبان استفاده شده در صفحه استفاده می شود. بکمک دايرکتيوهای فوق مشخص خواهد شد که زبان استفاده شده مثلا" VB و يا #C است. پس از مشخص نمودن زبان مورد نظر، تمامی کدهای نوشته شده در صفحه می بايست بر اساس زبان فوق باشند. در ASP کلاسيک امکان استفاده از VBscript و يا Jscript در يک صفحه بصورت همزمان وجود داشت .در ASP.NET با توجه به اين واقعيت که صفحات ترجمه ( کمپايل ) می گردنند، نمی توان از ترکيبی از زبانها در يک صفحه استفاده نمود. در اين راستا می بايست به اين نکنه نيز اشاره گردد که وضعيت کنترل های کاربر تا اندازه ای متفاوت است. مثلا" می توان از يک کنترل کاربر که با استفاده از #C نوشته شده است در  پروژه ای که از VB استفاده می کند ، نيز استفاده نمود. کنترل های کاربر يک استثناء بوده و می توان آنها را با هر زبان نوشت و آنها را توسط هر زبان استفاده نمود.

منظور از استفاده از يک زبان در هر صفحه چيست ؟

 فرض کنيد که بخواهيم صفحات ASP.NET خود را بکمک ويژوال استوديو ايجاد نمائيم . ويژوال استوديو دات نت از مدل Code-Behind حمايت می نمايد، بنابراين می توانيم در چنين مواردی از تمامی مزايای محيط ويژوال استوديو دات نت استفاده نمائيم . اگر از زاويه و منظر کارآئی به مسئله فوق نگاهی داشته باشيم درخواهيم يافت که تفاوت هائی در اين زمينه وجود ندارد. در عمل زمانيکه صفحات aspx و Code Behind را ترکيب و در يک فايل استفاده نمائيم سهولت بيشتری را خواهيم داشت . موضوع فوق خصوصا" زمانيکه قصد تبديل صفحات ASP کلاسيک به ASP.NET را داشته باشيم ملموس  و قابل تامل تر است .

 آيا دليلی وجود دارد که صفحات ASP.NET خود را در دو فايل مستقل (aspx و Code Behind) قرار دهيم ؟ اگر هر دو امکان فوق را در يک فايل قرار داده و صفحه aspx را ايجاد نمائيم آيا به مشکل خاصی برخورد خواهيم کرد:

نرم افزار( ابزار) Web Matrix رايگان بوده و توسط گروه ASP.NET پياده سازی شده است . نرم افزار فوق امکان پياده سازی صفحات ASP.NET را بخوبی فراهم می نمايد، ولی با مسئله پياده سازی صفحات بصورت يک پروژه نگاه نمی کند. برنامه فوق در رابطه با ايجاد و يا ويرايش يک صفحه بسيا ر قدرتمند عمل می نمايد ،  ولی نمی توان با استفاده از آن پروژه ای به مسئله پياده سازی صفحات نگاه نمود( برخلاف ويژوال استوديو دات نت ) . علاوه بر موارد فوق، می بايست به اين نکته نيز اشاره گردد که نرم افزار فوق بعنوان محصول رسمی شرکت مايکروسافت نبوده و صرفا" توسط گروه ASP.NET حمايت می گردد. بنابراين با توجه به نوع انتظارات و خواسته های موجود می توان از نرم افزار Web Matrix و ويژوال استوديو دات نت در جايگاه بهينه خود استفاده نمود.

آيا برای پياده سازی صفحات ASP.NET نرم افزار جديد WebMatrix توصيه می گردد؟

( بخش اول   )  ( بخش دوم  )



جستجو

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


 

 

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



              

 

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