Ajax؛ تحولی بزرگ در عرصه وب (5)

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






آنچه تاكنون گفته شده است :
بخش اول: تاثير متقابل وب و نرم افزار بر يكديگر
بخش دوم: Ajax و فناوری های مرتبط با آن
بخش سوم: بررسی نمونه برنامه های مبتنی بر Ajax
بخش چهارم: برنامه نويسی غيرهمزمان در برنامه های وب
پس از آشنائی با اصول اوليه 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 و سرويس ها وجود دارد .

Ajax؛ تحولی بزرگ در عرصه وب (5)

شكل 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 آشنا خواهيم شد . بدين منظور به بررسی دو سناريوی مختلف خواهيم پرداخت : مدل پياده سازی با محوريت سرويس گيرنده و مدل پياده سازی با محوريت سرويس دهنده .
منبع: http://www.srco.ir




ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.
مقالات مرتبط