جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
Ajax : تحولي بزرگ در عرصه وب ( بخش پنجم )
-(0 Body) 
Ajax : تحولي بزرگ در عرصه وب ( بخش پنجم )
Visitor 523
Category: کامپيوتر

پس از آشنائي با  اصول اوليه Ajax در طي چهار مقاله ، پياده كنندگاني كه علاقه مند به استفاده از اين فناوري در برنامه هاي وب مي باشند اين پرسش را مطرح مي نمايند كه آيا براي استفاده از پتانسيل هاي Ajax مي بايست از يك فريمورك و يا toolkit خاص استفاده كرد ؟ در ادامه ضمن پاسخ به اين سوال ، به بررسي معماري ASP.NET Ajax خواهيم پرداخت .

چرا به يك فريمورك Ajax نياز داريم ؟
بدون بهره گيري از پتانسيل هاي يك toolkit و يا يك فريمورك ، پياد ه سازي برنامه هاي مبتني بر Ajax كار ساده اي نخواهد بود و  پياده كنندگان با مسائل متعددي مواجه خواهند شد :

  • سازگاري بين مرورگرها :  گذشته از پياده سازي نسخه هاي متعدد و مختلف از شي XMLHttpRequest ، هر مرورگر يك نسخه متفاوت از DOM را پياده سازي كرده است . به روز نگه داشتن تغييرات بين مرورگرها و مديريت تشخيص مرورگرها مي تواند يك فرآينده مشكل و خسته كننده را براي پياده كنندگان به دنبال داشته باشد .يكي از اهداف مهم يك  toolkit و يا فريمورك ، تفكيك پيچيدگي ها و  تفاوت ها است تا پياده كنندگان بتوانند با بكارگيري مجموعه اي از امكانات رابط برنامه نويسي ( API ) ، عمليات مشابه و يكساني را انجام دهند .

  •  ضرورت درك عميق تر از جاوا اسكريپت : جاوا اسكريپت ذاتا" يك زبان پيچيده نيست ، گرچه ، تعداد زيادي از پياده كنندگان برنامه هاي وب اين عقيده را ندارند. جاوا اسكريپت ويژگي هائي نظير شي گراء  و يا Type safe را كه بتواند انتظار برنامه نويسان را تامين نمايد ، ارائه نمي نمايد . مفاهيمي نظير توارث ، اينترفيس ها و رويدادها را مي توان در جاوا اسكريپت شبيه سازي كرد ولي پياده سازي آنها براي پياده كنندگان كار مشكلي خواهد بود .  اشكال زدائي و عدم حمايت از زبان هاي اسكريپت نويسي سمت سرويس گيرنده در محيط هاي IDE ( برگرفته شده از integrated development environments  ) نيز به پيچيدگي كار مي افزايد .

با توجه به موارد فوق ، توصيه مي گردد در زمان پياده سازي برنامه هاي وب مبتني بر Ajax از يك فريمورك و يا toolkit استفاده شود و پياده كنندگان خود را درگير برخي كارهاي پيچيده و تكراري ننمايند . 
ASP. NET Ajax يكي از فريمورك هاي ارائه شده در اين خصوص است كه در ادامه با معماري آن بيشتر آْشنا مي شويم .

معماري فريمورك ASP. NET Ajax
فريمورك ASP. NET Ajax ، به پياده كنندگان اين امكان را مي دهد كه بتوانند برنامه هاي وب قدرتمندتر ، با توان پاسخگوئي بيشتر و سازگار با مرورگرهاي مختلف را ايجاد نمايند . در  نگاه اول ممكن است اين گونه برداشت شود كه فريمورك يك كتابخانه Ajax است . با اين كه استنباط فوق درست است ولي تصويري واقعي از آنچه وجود دارد را در ذهن ايجاد نمي كند. 
با بررسي معماري فريمورك فوق و آشنائي با نحوه عملكرد هر يك از عناصر موجود در اين ساختار ، با قابليت هاي فريمورك ASP. NET Ajax بيشتر خواهيم شد .
شكل 1 ، ساختار معماري فريمورك ASP. NET Ajax را نشان مي دهد . اولين چيزي كه در شكل فوق مشهود است ، پوشش اين فريمورك در دو سمت سرويس گيرنده و سرويس دهنده است . علاوه بر مجموعه اي از كتابخانه هاي سمت سرويس گيرنده و عناصر ، با مجموعه اي از امكانات در سمت سرويس دهنده مواجه هستيم كه امكان بكارگيري آنها توسط كنترل هاي سرويس دهنده ASP. NET و سرويس ها وجود دارد .


ساختار معماري فريمورك ASP. NET Ajax

شكل 1 : ساختار معماري فريمورك ASP. NET Ajax

فريمورك سمت سرويس گيرنده
يكي از نكات جالب در ارتباط با فريمورك سمت سرويس گيرنده ، عدم وابستگي كتابخانه مركزي به عناصر سرويس دهنده است . از كتابخانه فوق مي توان جهت پياده سازي برنامه هاي نوشته شده توسط PHP و يا ColdFusion و ساير زبان هاي برنامه نويسي و يا پلت فرم ها نيز استفاده كرد .
با توجه به انعطاف پذيري معماري فوق ،‌ مي توان آن را بطور منطقي به دو بخش تقسيم كرد : فريمورك سرويس دهنده و فريمورك سرويس گيرنده تقسيم نمود .
 آگاهي از  نحوه عملكرد معماري فوق در سمت سرويس گيرنده  ، براي پياده كنندگان سمت سرويس دهنده نيز ضروري است  چراكه اين بخش آغازگر حيات يك صفحه وب مي باشد .

Microsoft Ajax Library
در هسته فريمورك سمت سرويس دهنده  Microsoft Ajax Library قرار دارد كه از آن با نام كتابخانه مركزي و يا هسته نام برده مي شود .اين كتابخانه شامل مجموعه اي از فايل هاي جاوا اسكريپت است كه مي توان  از آنها صرفنظر از ويژگي هاي سرويس دهنده استفاده كرد . در ادامه به بررسي هر يك از اجزاء و يا لايه هاي كتابخانه فوق خواهيم پرداخت .
كار خود را با بررسي لايه Type system كه زيربناي تمامي لايه هاي ديگر است ، آغاز مي نمائيم . ( در نسخه هاي قبلي ASP. NET Ajax با كد نام Atlas ، به كتابخانه مركزي Client Script Library گفته مي شد ) .

  •  Type System : هدف از لايه فوق ، معرفي مفاهيم برنامه نويسي شي گراء نظير  كلاس ها ، توارث ، اينترفيس ها و  event handling  براي جاوا اسكريپت است . اين لايه همچنين نوع هاي موجود جاوا اسكريپت را توسعه مي دهد . مثلا" نوع String و Array در جاوا اسكريپت توسعه يافته اند تا  قابليت هائي مشابه را براي پياده كنندگان برنامه هاي وب ASP. NET ايجاد نمايند . type system   اساس كار ساير اجزاء اين كتابخانه را فراهم مي نمايد .
     

  • Component : در لايه بعدي كتابخانه مركزي ، لايه component قرار دارد كه بر روي زيرساخت type system ايجاد شده است  . لايه فوق عمليات حياتي و مهمي را براي كتابخانه مركزي انجام مي دهد . اين لايه امكانات حمايتي لازم براي سريال سازي JSON ( برگرفته شده از  JavaScript Object Notation  ) ، ارتباطات شبكه اي ، محلي سازي ، تعامل با DOM ( برگرفته شده از Document Object Model   ) و سرويس هائي نظير تائيد و پروفايل را براي  برنامه هاي ASP.NET ارائه مي نمايد . اين لايه همچنين ، امكان توليد و ايجاد ماژول هائي با قابليت استفاده مجدد را كه مي توان آنها را در گروه هائي  به عنوان كنترل ها و رفتارها تقسيم نمود ، فراهم  مي نمايد .
     

  • Application  :  لايه فوق بالاترين لايه در كتابخانه مركزي است كه مي توان  براي آن از يك عنوان تشريحي و توصيفي بهتر  استفاده كرد :  Application model   . همانند چرخه حيات يك صفحه در ASP.NET ، اين لايه يك مدل برنامه نويسي مبتني بر رويداد را ارائه مي نمايد كه شما مي توانيد از آن به منظور كار با عناصر DOM ، عناصر نرم افزاري و چرخه حيات يك برنامه در مرورگر استفاده نمائيد .

HTML ، جاوا اسكريپت و اسكريپت XML
 صفحات وب مبتني بر Ajax در ASP. NET  با استفاده از HTML ، جاوا اسكريپت و يك گرامر تعريفي مبتني بر XML كه به آن XML script گفته مي شود ، نوشته مي گردند . بدين ترتيب پياده كنندگان داراي گزينه هاي متعددي براي نوشتن كد صفحات وب در سمت سرويس گيرنده مي باشند .  مي توان كد را به صورت اخباري و با استفاده از XML Script و  يا به صورت دستوري با جاوا اسكريپت  پياده سازي كرد . عناصر تعريف شده در XML Script شامل يك تگ اسكريپت جديد به صورت زير مي باشند .

 <script type="text/xml-script">

مرورگر قادر به تشخيص تگ Script است ولي داراي يك مكانيزم براي پردازش نوع xml-script نمي باشد . در مقابل ، فايل هاي جاوا اسكريپت از فريمورك ASP.NET Ajax مي توانند اسكريپت را تفسير  و يك نمونه از عناصر و كنترل هاي موجود بر روي صفحه را ايجاد نمايند . كد زير ، نحوه استفاده از XML Script به منظور نمايش يك پيام پس از استقرار صفحه در حافظه مرورگر را نشان مي دهد .

XML-Script : گزينه اي براي پياده سازي صفحات مبتني بر Ajax

 <script type="text/xml-script">
  <page xmlns="http://schemas.microsoft.com/xml-script/2005">
     <components>
         <application load="page_load" />
      </components>
   </page>
 </script>
 <script type="text/javascript">
            function page_load(sender, e) {
                  alert("Hello from XML-Script!");
           }
   </script>

در مثال فوق ، يك تابع نوشته شده به زبان جاوا اسكريپت با نام   Page_load به صورت تعريفي به رويداد  Load در چرخه حيات صفحه نسبت داده شده است . با اجراي اين صفحه ، تابع Page_Load فراخوانده مي شود تا يك پيام براي سرويس گيرنده نمايش داده شود .
شايد براي شما اين سوال مطرح شده باشد كه چرا در مقابل جاوا اسكريپت مي بايست از XML Script استفاده كرد ؟ ( عكس اين سوال نيز مي تواند مطرح شود ) . در پاسخ مي توان به تمايل پياده كنندگان و توانمندي آنها اشاره كرد . برخي از پياده كنندگان ترجيح مي دهند كه از يك زبان نشانه گذاري در مقابل اسكريپت استفاده نمايند . در مقابل تعداد ديگري از پياده كنندگان استفاده از زبان جاوا اسكريپت را در مقابل يك زبان نشانه گذاري ، ترجيح مي دهند . به هر حال از دو رويكرد فوق مي توان استفاده كرد و هر يك داراي مزايا و محدوديت هاي مختص به خود مي باشند.

ASP.NET AJAX service proxies
فريمورك در سمت سرويس گيرنده قابليت فراخواني سرويس هاي وب را از طريق جاوا اسكريپت و به كمك مجموعه اي از پروكسي هاي سمت سرويس گيرنده كه از طريق سرويس دهنده ايجاد شده اند ، فراهم مي نمايد .پروكسي ها را مي توان به منزله يك مرجع وب در كد مديريت يافته دات نت در نظر گرفت .  يك پروكسي كلاسي است كه به عنوان يك اينترفيس براي آيتم ديگر عمل مي نمايد . در اين حالت ، يك سرويس وب .

جمع بندي فريمورك سمت سرويس گيرنده
 تا اين جا يك ديد كلي و اوليه نسبت به فريمورك سمت سرويس گيرنده پيدا كرديم . اجازه دهيد سفري داشته باشيم به سمت سرويس دهنده و ببينيم كه اين فريمورك در سمت سرويس دهنده چه حرفي براي گفتن دارد و از چه نوع معماري تبعيت مي كند .  

فريمورك  در سمت سرويس دهنده
در بالاترين سطح ASP. NET 2.0 ، مجموعه اي از كنترل ها و سرويس هاي ارزشمند وجود دارد كه فريمورك دات نت را جهت حمايت از Ajax تحت تاثير قرار مي دهد . اين لايه از فريمورك سرويس دهنده ، ASP.NET AJAX server extensions ناميده شده و مشتمل بر سه بخش مجزا است :

  • كنترل هاي سرويس دهنده Ajax   

  • web services bridge  

  • application services bridge 

در ادامه هر يك از امكانات فوق را به اختصار توضيح مي دهيم . 

كنترل هاي سرويس دهنده Ajax
مجموعه اي جديد از كنترل هاي سرويس دهنده مي باشند كه به جعبه ابزار ASP. NET اضافه مي شوند . دو كنترل آنها شاخص تر از ساير كنترل ها مي باشند . اولين كنترل ، ScriptManager است كه به عنوان مغز يك صفحه وب مبتني بر Ajax تلقي مي گردد . يكي از چندين مسئوليت  كنترل فوق ، مديريت ناحيه اي از صفحه است كه در حين Postback غيرهمزمان مي بايست بطور پويا بهنگام گردد. 
دومين كنترل ، UpdatePanel است كه از آن به منظور تعريف ناحيه اي بر روي صفحه كه مي بايست به صورت جزئي بهنگام گردد ، استفاده مي شود . با تلفيق توانمندي دو كنترل اشاره شده وضعيت بخش رابط كاربر يك برنامه وب بطرز محسوسي بهبود خواهد يافت ( در واقع Postback سنتي جاي خود را به Postback غيرهمزمان مي دهد ) . پيامد بكارگيري كنترل هاي فوق ، بهنگام سازي نواحي خاص و مشخص شده اي بر روي صفحه ، در مقابل refresh تمامي صفحه است .
ساير عناصر server extension ، سرويس هائي را شامل مي شوند كه به منزله يك پل ارتباطي بين سرويس گيرنده و سرويس دهنده رفتار مي نمايند .

web services bridge 
برنامه هاي وب عموما" ، محدود به منابع موجود بر روي سرويس دهنده محلي مي باشند . گذشته از منابع خارجي اندكي نظير فايل هاي تصوير و CSS ، برنامه ها مجاز به دستيابي به منابع در حوزه برنامه سرويس گيرنده نمي باشند . به منظور غلبه بر اين موانع ، server extensions در فريمورك ASP. NET Ajax  شامل يك web service bridge  است كه يك gateway براي فراخواني سرويس هاي وب از طريق اسكريپت هاي سمت سرويس گيرنده را فراهم مي نمايد . تامين داده از سمت سرويس دهنده براي استفاده در سمت سرويس گيرنده يكي از موارد كاربرد اين فناوري است .

Application Service bridge
با توجه به ارتباط تنگاتنگ  ASP. NET Ajax با ASP. NET ، دستيابي به برخي از سرويس هاي application نظير تائيديه و يا پروفايل را مي توان به يك برنامه موجود  اضافه نمود . اين ويژگي باعث مي شود بتوان عملياتي نظير بررسي اطلاعات حساس يك كاربر و دستيابي به اطلاعات پروفايل را كه توسط اسكريپت هاي سمت سرويس گيرنده ارسال شده اند  را انجام داد .

خلاصه
در اين مقاله ضمن اشاره به ضرورت استفاده از يك فريمورك در برنامه هاي وب مبتني بر Ajax ، با عناصر موجود در سمت سرويس دهنده و سرويس گيرنده  فريمورك ASP.NET AJAX آشنا شديم . در بخش بعد با نحوه تعامل اين عناصر در جهت تامين خواسته پياده كنندگان برنامه هاي وب مبتني بر Ajax آشنا خواهيم شد . بدين منظور به بررسي دو سناريوي مختلف خواهيم پرداخت : مدل پياده سازي با محوريت سرويس گيرنده  و مدل پياده سازي با محوريت سرويس دهنده .

برگرفته از سايت سخا روش

Add Comments
Name:
Email:  
User Comments:
SecurityCode: Captcha ImageChange Image