در بخش اول ضمن بررسي تاثير متقابل وب بر نرم افزار ، مروري داشتيم به وب ايستا و وب پويا و اين كه براي انجام پردازش هاي مورد نياز در برنامه هاي وب مي توان از امكانات و فناوري هاي متعددي در سمت سرويس گيرنده و سرويس دهنده استفاده كرد . هدف از بيان مطالب فوق ، پاسخ به اين سوال بود كه چرا به وجود يك فناوري ديگر نظير Ajax نياز است ( گرچه Ajax يك فناوري نيست و مجموعه اي از فناوري ها را شامل مي شود ) .
با اين كه ايده فناورهائي نظير Ajax در گذشته نيز وجود داشته است و پياده كنندگان برنامه هاي وب در زمان خود با بكارگيري برخي فناوري ها و ترفندها توانسته بودند مشكل خود را تا حدود زيادي برطرف نمايند ولي گذشت زمان و گسترش باور نكردني اينترنت ، باعث شد تا استفاده از بستر فوق براي ارائه سرويس هاي online در دستور كار اكثر سازمان ها و شركت ها در اقصي نقاط جهان قرار بگيريد . همين موضوع باعث شد كه دگر باره جامعه بزرگ طراحان و پياده كنندگان برنامه هاي وب اين نياز را احساس كنند كه به يك راه حل جامع و سيستماتيك براي برخورد با مسائل خود ( خصوصا" تعامل با كاربر ) در دنياي نوين برنامه نويسي وب نياز دارند . دنيائي كه در آن دقت و سرعت در ارائه خدمات online با بكارگيري كمترين منابع و توليد بيشترين بهره وري ، رمز ماندگاري يك سازمان در مدار رقابت و پيشرفت است . همين امر باعث شد كه شركت هاي بزرگ توليد كننده نرم افزار و خدمات online نيز دست به كار شوند و چيزي را خلق كنند كه ما امروزه از آن با نام Ajax ياد مي كنيم .
در اين بخش به بررسي موارد زير خواهيم پرداخت :
- تولد Ajax و ريشه يابي علت انتخاب اين نام
- Ajax و فناوري هاي مرتبط با آن
- اصول حاكم بر فناوري Ajax .
- نحوه كاركرد Ajax در برنامه هاي وب
تولد Ajax
در فوريه سال 2005 ، Jesse James Garrett از Adaptive Path مقاله اي را با عنوان " يك رويكرد جديد به برنامه هاي وب " بر روي وب سايت خود منشتر كرد . وي در اين مقاله ضمن اشاره به اين موضوع كه فاصله بين برنامه هاي وب و desktop در حال از بين رفتن است ، به بررسي دو نمونه از برنامه هاي وب جديد با نام Google Suggest و Google Maps پرداخته بود . Garrett پس از تشريح نحوه عملكرد برنامه هاي فوق ، براي اولين مرتبه از واژه Ajax در مقاله خود استفاده كرد .
وي در مقاله خود دنيائي را پيش بيني كرده بود كه در آن برنامه هاي وب از لحاظ قابليت دستيابي ، پاسخ گوئي و سادگي قابل مقايسه با برنامه هاي desktop خواهند شد .
Ajax چيست ؟
-
Ajax برگرفته شده از Asynchronous JavaScript XML است و مشتمل بر مجموعه اي از فناوري ها است ، نه صرفا" يك فناوري .
-
Ajax ، اساس و پايه چيزي است كه امروزه از آن با نام وب 2 نام برده مي شود ( نسل جديد وب ) . ايده اصلي ، ايجاد برنامه هاي وبي است كه داراي شكل ظاهري و توانمندي هائي مشابه با برنامه هاي desktop باشند .
-
Ajax چيزي بيشتر از يك نگرش جديد به برنامه هاي وب نيست . نگرشي كه در آن صرفا" يك حجم اندك از اطلاعات بين سرويس گيرنده و سرويس دهنده با هدف افزايش تعامل كاربر با برنامه ، مبادله مي گردد .
-
Ajax ، مشتمل بر مجموعه اي از فن آوري ها است كه هر يك داراي جايگاه مختص به خود مي باشند :
- فن آوري هاي استاندارد presentation نظير XHTML و CSS
- بهنگام سازي پوياي يك صفحه مستقر شده در حافظه با استفاده از DOM ( برگرفته شده از Document Object Model )
- مبادله و پردازش داده با استفاده از XML (فرمت مبادله داده ) و XSLT ( تبديل XML به XHTML )
- بازيابي داده غيرهمزمان با استفاده از XMLHttpRequest ( كارگزار اوليه مبادله اطلاعات )
و جاوا اسكريپت كه همه چيز را به يكديگر مرتبط مي نمايد و از آن براي برنامه نويسي Ajax engine استفاده مي گردد .
-
در دنياي واقعي ، از تمامي فناوري هاي فوق در Ajax استفاده مي گردد ولي به وجود HTML/XHTML ، DOM و Javascript بيش از همه نياز است چون :
از XHTML براي نمايش اطلاعات استفاده مي گردد .
از DOM براي تغيير بخش هائي از يك صفحه XHTML بدون نياز به load مجدد صفحه استفاده مي گردد.
از جاوا اسكريپت ، براي مقداردهي اوليه ارتباط بين سرويس گيرنده و سرويس دهنده و بهنگام سازي صفحات وب به كمك DOM استفاده مي گردد .
-
يك عنصر اساسي و مهم ديگر كه در مقاله Garrett به آن اشاره نشده است ، ضرورت انجام پردازش هاي سمت سرويس دهنده است . تمامي فناوري هاي اشاره شده ( در پاراگراف قبل ) ، در ارتباط مستقيم با Ajax engine سمت سرويس گيرنده مي باشند . بدون وجود يك سرويس دهنده مطمئن و پاسخگو به منظور ارسال محتويات براي Ajax engine ، در عمل Ajax فاقد كارآئي لازم خواهد بود . صرفنظر از فناوري استفاده شده در سمت سرويس دهنده ( نظير PHP و يا ASP.NET ) ، مي بايست اين اطمينان حاصل گردد كه داده با فرمت صحيح براي Ajax engine ارسال مي گردد .
-
از شي XMLHttpRequest درون جاوا اسكريپت براي ارتباط با سرويس دهنده استفاده مي گردد تا در ادامه بتوان داده برگردانده شده از سرويس دهنده ( با فرمت Xml و يا متن معمولي ) را پردازش كرد .
-
از DHTML و CSS براي نمايش نتايج در مرورگر استفاده مي گردد .
-
هدف از كنارهم قرار گرفتن تمامي فناوري هاي اشاره شده ، اين است كه شكل ظاهري برنامه هاي وب و نحوه پاسخ گوئي آنها به خواسته كاربران مشابه برنامه هاي desktop گردد .
همانگونه كه در نام اين فناوري مشخص است ، Ajax مشتمل بر مجموعه اي از فناوري ها است : Asynchronous JavaScript XML
-
غيرهمزمان و يا asynchronous بدين معني است كه مرورگر لازم نيست منتظر بماند تا داده از سرويس دهنده برگردانده شود و مي تواند به محض دريافت داده آن را پردازش نمايد . به عبارت ديگر ، انتقال داده در پس زمينه انجام شده و مرورگر مجبور به توقف و انتظار براي تحقق اتفاقي نخواهد بود .
رويكرد فوق نشاندهنده يكي از ويژگي هاي مهم و حياتي Ajax است . در چنين مواردي، مي توان داده را پس از ارسال توسط سرويس دهنده ، پردازش كرد . لازم نيست تمامي برنامه را معطل رسيدن داده از سمت سرويس دهنده كرد .
در صورتي كه لازم است پردازش هاي سمت سرويس گيرنده منتظر دريافت داده بمانند ، مكانيرم دريافت و پردازش داده مي بايست بطور همزمان انجام شود . در صورتي كه يك ارتباط ضعيف بين سرويس گيرنده و سرويس دهنده برقرار شده باشد اين موضوع مي تواند عملكرد و موفقيت يك برنامه وب را با مشكل مواجه نمايد .
-
بخش جاوا اسكريپت واژه Ajax نيز بسيار مهم است چراكه بالفعل شدن پتانسيل هاي Ajax در مرورگر توسط آن محقق مي گردد . Ajax به كمك جاوا اسكريپت با سرويس دهنده ارتباط خود را برقرار مي نمايد و در ادامه نيز داده برگردانده شده از سرويس دهنده را پردازش مي نمايد .
-
بخش xml واژه Ajax داراي چه مسئوليتي است ؟ XML به عنوان يك استاندارد جهاني در عرصه وب مطرح است و به كمك آن مي توان از يك روش مبتني بر متن براي مبادله داده در عرصه اينترنت استفاده كرد . يكي از دلايل مهم گسترش xml ، ماهيت مبتني بر متن آن است . با توجه به اين كه طراحي اينترنت بگونه اي انجام شده بود تا بتواند مستندات مبتني بر متن نظير اسناد HTML را نمايش دهد ، وجود xml به منزله قلابي است كه مي توان آن را دور اينترنت انداخت و به صيد داده پرداخت. داده ئي كه به همراه ساختار خود مي تواند امكان پردازش را در ساير سيستم ها فراهم نمايد . به همين دليل است كه برنامه هاي Ajax بگونه اي نوشته مي گردند تا بتوانند بر روي داده برگردانده شده از سرويس دهنده با فرمت xml ، عمليات مورد نظر را انجام دهند . به عبارت ديگر ، پس از برقراري ارتباط با سرويس دهنده ، داده با فرمت xml برگردانده خواهد شد .
xml ، صرفا" يكي از روش هاي برگرداندن داده است و در صورت لزوم مي توان از فرمت هائي ديگر نظير متن معمولي نيز استفاده كرد .
-
در كنار جاوا اسكريپت و XML ، فناوري Ajax با فناوري هاي ديگري نظير DHTML و CSS نيز كار مي كند . به كمك فناورهاي فوق مي توان داده موجود در يك صفحه وب را بدون نياز به load تمامي صفحه بهنگام كرد ( صرفا" load بخشي كه ضرورت آن احساس مي شود ) . پتانسيل فوق يكي از اهداف و ويژگي هاي مهم برنامه هاي وب مبتني بر فناوري Ajax محسوب مي گردد .
-
بخشي از جاوا اسكريپت كه امكان Ajax را ميسر مي سازد ، شي XMLHttpRequest است . شي فوق تقريبا" در تمامي مرورگرهاي مدرن و پيشرفته از قبل تعبيه شده است . به كمك اين شي امكان اتصال به سرويس دهنده و مديريت داده برگردانده شده از آن در پس زمينه فراهم مي گردد .
اقتدار Ajax نه تنها وابسته به جاوا اسكريپت بلكه مديون شي XMLHttpRequest است .
اصول Ajax
Ajax هنوز در ابتداي راه است و بسياري از پياده كنندگان با اين پرسش مواجه هستند كه از اين فناوري در چه زماني و در چه نوع برنامه هائي مي توان استفاده كرد . عدم شناخت مناسب از اين فناوري باعث مي شود تا از آن در برنامه هائي استفاده گردد كه نه تنها قابليت و يا ويژگي جديدي را به برنامه اضافه نمي نمايد بلكه در بسياري از موارد عدم موفقيت يك برنامه و نارضايتي كاربران آن را به دنبال خواهد داشت .
زماني مي توان اين ادعا را داشت كه يك برنامه وب مبتني بر Ajax در اهداف خود موفق بوده است كه در آن اصول زير رعايت شده باشد .
-
به حداقل رساندن ترافيك : برنامه هاي Ajax مي بايست حتي المقدور حجم اندكي از اطلاعات را براي سرويس دهنده ارسال و يا از آن دريافت نمايند . به عبارت ديگر ، با بكارگيري Ajax مي بايست حجم ترافيك بين سرويس گيرنده و سرويس دهنده كاهش يابد .
-
عدم سردرگمي كاربر : برنامه هاي وب مبتني بر فناوري Ajax مدل تعامل با كاربر مختلفي را نسبت به برنامه هاي وب سنتي معرفي كرده اند . در مقابل وب استاندارد ( كليك كن و منتظر باش ) ، برخي برنامه هاي Ajax از يك رويكرد ديگر براي پياده سازي بخش رابط كاربر خود نظير drag-and-drop و يا double-clicking استفاده مي نمايند . صرفنظر از نوع مدل انتخاب شده براي پياه سازي تعامل با كاربر ، مهم ارائه امكانات بخش رابط كاربر بگونه اي است كه همواره كاربر در سريع ترين زمان بتواند در خصوص انجام حركت بعدي خود تصميم گيري نمايد .
-
استفاده منطقي از تجارب مثبت گذشته : وقت خود را بي خودي به ابداع مدل هاي تعامل با كاربر جديد كه كاربران شما با آنها آشنا نيستند ، هدر ندهيد . استفاده از تجارب برنامه هاي وب سنتي و desktop مي تواند پياده كنندگان را در طراحي يك مدل مناسب جهت تعامل با كاربر كمك نمايد .
-
اجتناب از بكارگيري عناصر غيرضروري : از بكارگيري عناصر غير ضروري نظير تكرار انيميشن و بخش هائي نظير blinking page اجتناب كنيد. بكارگيري اين چنين عناصري باعث مي شود تا كاربران در زمان انجام فعاليت هاي مورد نظر دچار سردرگمي شوند .
-
قابليت دسترسي و رضايت كاربران : برنامه هاي Ajax را با در نظر گرفتن رفتار و نوع خواسته كاربران طراحي و پياده سازي نمائيد . براي طراحي و پياده سازي خود را در يك مكان بسته محبوس ننمائيد. در غير اينصورت همواره اين احتمال وجود خواهد داشت كه خواسته برخي از كاربران ناديده گرفته شود . قابليت دسترسي و رضايت كاربران يكي از نكات بسيار مهم در موفقيت يك برنامه كامپيوتري محسوب مي گردد .
-
پيشگيري از دانلود تمامي صفحه : تمامي ارتباط با سرويس دهنده پس از مقدار دهي اوليه دانلود صفحه ، مي بايست توسط Ajax engine مديريت گردد . عدم مديريت صحيح بر روي فرآيند فوق مي تواند بخش رابط كاربر يك برنامه وب را با مشكل اساسي مواجه سازد ( نظير دانلود حجم اندكي از داده در يك مكان و دانلود تمامي صفحه در بخش ديگر )
-
توجه به نياز كاربران قبل از هر چيز : برنامه هاي Ajax را قبل از هر چيز با كاربران خيالي در ذهن طراحي نمائيد . سهولت در انجام عمليات متداول مي بايست در دستور كار قرار بگيرد . كمتر در انديشه انجام كارهاي تبليغاتي و يا افكت هاي غيرضروري باشيد .
نقطه مشترك بين تمامي اصول اشاره شده ، قابليت استفاده از يك برنامه با حداكثر ظرفيت و رضايتمندي كاربران است . هدف اوليه Ajax ، بهبود و ارتقاء بخش رابط كاربر برنامه ها با هدف رضايتمندي بيشتر كاربران است .
نحوه كار Ajax
در برنامه هاي وب سنتي مرورگر مسئوليت مقداردهي اوليه درخواست ها و پردازش آنها جهت ارسال به سرويس دهنده وب را برعهده دارد . در مقابل ، در Ajax يك لايه مياني ( كه Garrett آن را Ajax engine ناميد ) مسئوليت مديريت ارتباط برقرار شده را برعهده مي گيرد . Ajax engine در واقع يك شي جاوا اسكريپت و يا تابع است و زماني كه به اطلاعاتي از سرويس دهنده نياز باشد ، از آن استفاده خواهد شد .
در مقابل برنامه هاي وب سنتي كه يك لينك به يك منبع ديگر ارائه مي گردد ( نظير يك صفحه وب ديگر ) ، در برنامه هاي وب مبتني بر Ajax ، هر لينك باعث فراخواني Ajax engine مي گردد كه وظيفه آن زمانبندي و انجام درخواست بطور غيرهمزمان است .
سرويس دهنده ( كه از لحاظ سنتي اسناد HTML ، تصاوير ، CSS و جاوا اسكريپت را ارائه مي نمايد ) ، بگونه اي پيكربندي مي گردد تا داده مورد نياز را در اختيار Ajax Engine قرار دهد. اين داده مي تواند متن معمولي ، XML و يا ساير فرمت هاي مورد نياز داده باشد. بديهي است در چنين مواردي ، Ajax engine مي بايست قادر به خواندن و تفسير داده باشد .
پس از دريافت پاسخ لازم از سرويس دهنده ، Ajax engine عمليات خود را كه اغلب بررسي داده و ايجاد تغييرات لازم در بخش رابط كاربر است ، آغاز مي نمايد . با توجه به اين كه در فرآيند فوق به اطلاعات كمتري نسبت به برنامه هاي وب سنتي نياز است ، بخش رابط كاربر با سرعت بيشتري بهنگام مي گردد و كاربر قادر به انجام كارهاي خود با سرعت بيشتري است .
در شكل 1 ، عملكرد برنامه هاي وب سنتي نسبت به برنامه هاي وب مبتني بر Ajax نشان داده شده است .
شكل 1 : عملكرد برنامه هاي وب سنتي نسبت به برنامه هاي وب مبتني بر Ajax
منبع : Adaptive Path
خلاصه
فناوري هاي مرتبط با Ajax در طي ساليان گذشته مطرح و از آنها در مجموعه اي از نرم افزارها استفاده مي گرديد . Jesse James Garrett در مقاله خود تمامي فناوري هاي اشاره شده را در زير يك سقف و با نام Ajax كنار هم قرار داد . با بكارگيري فناوري Ajax در نرم افزارهاي برجسته اي نظير Google Suggest در سال 2005 ، Ajax در كانون توجه جهاني قرار گرفت . وب 2 ، براي نيل به اهداف خود به Ajax دل بسته است و Ajax مي تواند تصويري جديد از برنامه هاي وب را در عرصه اينترنت به نمايش بگذارد .
وجود برخي خصايص خاص در بخش رابط كاربر برنامه هاي desktop و نحوه تعامل كاربران با اينگونه برنامه ها ، حلقه گمشده اي در برنامه هاي وب است. حلقه اي كه Ajax سعي دارد خلاء آن را پر كند . قطعا" در آينده اي نه چندان دور شاهد حضور بيشتر برنامه هاي وبي خواهيم بود كه داراي شكل ظاهري و عملكردي مشابه (خصوصا" تعامل با كاربر ) با برنامه هاي desktop مي باشند .
شايد روزي فرا رسد كه يكي از واژه هاي برنامه هاي desktop و برنامه هاي وب به نفع ديگري كنار برود و يا هر دو بر يك نام مشترك ديگر به توافق برسند .
در بخش سوم به بررسي نمونه برنامه هائي خواهيم پرداخت كه در آنها از فناوري Ajax استفاده مي گردد .
برگرفته از سايت سخا روش