Learning AJAX with Passion

آموزش آجاکس

Google
 

Saturday, September 16, 2006

همه چيز درباره آجاکس

اشاره :

واژه Ajax سرنام عبارت Asynchronous JavaScript and XML و به معني <جاوا اسكريپت و XML آسنكرون يا نامتقارن> است. اي‌جكس فناوري جديدي است كه به كمك آن مي‌توان اينترفيس يك برنامه تحت وب را طوري ساخت كه وقتي كاربر روي دكمه يا لينكي كليك مي‌كند، كليه عمليات ارسال اطلاعات و دريافت نتايج در پشت صحنه انجام ‌شود و فقط آن قسمت از اينترفيس كه قرار است اطلاعات جديد را به نمايش درآورد تغيير ‌كند بدون اينكه تمام صفحه از نو بارگذاري شود. در اين مقاله مي‌خواهيم اين فناوري نوين و تحول آفرين را از جنبه‌هاي مختلف مورد بررسي قرار دهيم و با مباني فني آن آشنا شويم.


كمربندها را ببنديد
آيا از دنياي كلاسيك وب خسته شده‌ايد؟ آيا مايليد با چهره جديد وب آشنا شويد؟ آيا مي‌خواهيد با جديدترين فناوري دنياي برنامه‌نويسي وب آشنا شويد؟ براي پرواز آماده باشيد! مقصد ما يكي از استان‌هاي كشور جديد التاسيس Web 2.0 است. مي‌خواهيم با هم به دنياي هيجان انگيز Ajax سفر كنيم.

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

تصور كنيد به صورت آنلاين در حال خواندن نامه‌هاي الكترونيكي خود در يكي از سايت‌هاي ياهو يا جي‌ميل هستيد. فورا يادتان مي‌افتد كه بايد به كسي نامه‌اي بفرستيد. لازم نيست صفحه‌اي كه در حال مطالعه آن هستيد را ترك كنيد و يا با استفاده از ترفندهايي مانند رايت كليك و فرمان Open in New window يك پنجره جديد بازكنيد و منتظر بارگذاري مجدد صفحه شويد. شما فقط مي‌خواهيد يك پنجره جديد باز كنيد كه داخلش نامه خود را تايپ كنيد.

چه نيازي به بارگذاري مجدد آن‌همه اطلاعات جزئي و جنبي (مانند لوگوي سايت، نام آيدي شما و ...) است كه در اطراف اطلاعات اصلي به نمايش درآمده‌اند؟ اي‌جكس همين كار را براي شما مي‌كند. وقتي كه نامه خود را ارسال كرديد نيز فقط همان پنجره بسته مي‌شود و چند بايت براي سايت مقصد ارسال مي‌شود و اينترفيس صندوق پستي نامه‌هاي شما بدون اين‌كه تكان بخورد و يا دوباره به نمايش درآيد همچنان پيش چشم شما و منتظر فرمان بعدي است. در دنياي اي‌جكس دكمه‌هاي Back و Forward مرورگر معني و كاربرد خود را تقريبا از دست مي‌دهند.

همه دكمه‌هاي مورد نياز داخل اينترفيس سايت موجود است. برخلاف جهان Web 1.0، در دنياي اي‌جكس گشت و گذار در وب لزوما خطي نيست. اگر مي‌خواهيد از يك فروشگاه الكترونيكي خريد كنيد، مي‌توانيد محصول مورد نظرتان را به روش drag&drop داخل سبد بيندازيد و با فشردن دكمه نهايي، خريد خود را ثبت كنيد. پيغام ثبت موفقيت آميز سفارش براي شما نمايش داده مي‌شود و كار تمام است. لازم نيست از صفحه الف به صفحه ب و سپس از آنجا به صفحه ج برويد.

اي‌جكس چيست؟
اين واژه را اولين بار جسي جيمز گرت (Jesse James Garrett)، برنامه‌نويسي از شركت Adaptive Path در مقاله‌اي با عنوان <اي‌جكس: رهيافت جديدي در برنامه‌هاي تحت وب> به‌كار برد. اي‌جكس سرنام عبارت Asynchronous JavaScript and XML و به معني تركيب نامتقارن جاوا اسكپريپت و ‌XML است.

چرا نامتقارن؟ چون تركيب اين دو فناوري به شما كمك مي‌كند قسمتي از يك صفحه وب را بروز كنيد بدون اينكه لازم باشد <همزمان يا متقارن> با اين عمل، كل آن صفحه از نو بارگذاري شود. اين عمليات توسط شيء و فرماني به نام XMLHttpRequest انجام مي‌شود كه سال‌ها پيش، هنگام معرفي نسخه 4 مرورگر اينترنت اكسپلورر وارد اين نرم‌افزار شده و به دليل قابليت‌هاي جالبي كه دارد، اين روزها تمام مرورگرهاي معروف و قدرتمند وب مانند فايرفاكس و اپرا از آن پشتيباني مي‌كنند. به كمك اين شي‌ء مي‌توانيد برنامه‌هايي به زبان جاوا اسكريپت بنويسيد كه در پشت صحنه يك صفحه وب اطلاعاتي را به سرور بفرستند و داده‌هايي را دريافت كنند.

اي‌جكس اساسا رهاوردي از دنياي جاوا است و بار ديگر فناوري جاوا و زبان اسكريپت‌نويسي وابسته به آن را در كانون توجه برنامه‌نويسان قرار داده است. اما خبر خوب اينست كه چون همه پلتفرم‌هاي برنامه‌نويسي وب از قبيلPHP ،ASP.NET و JSP از جاوا اسكريپت و ‌XML پشتيباني مي‌كنند، فناوري اي‌جكس در همه اين پلاتفرم‌ها پياده‌سازي شده و حتي جالب است بدانيد كه تعداد ماژول‌هاي اي‌جكس نوشته شده براي دات نت و ‌PHP بيشتر از انواع جاوايي آن است.

مايكروسافت كه سال‌ها پيش از شيء XMLHttpRequest در نرم‌افزار Outlook Web Access استفاده كرد و جزو اولين ترويج‌دهندگان اين تكنيك به شمار مي‌رود اخيرا نرم‌افزاري به نام Atlas معرفي كرده كه مخصوص برنامه‌نويسي مبتني بر اي‌جكس است. اما چون اي‌جكس بر اساس جاوا كار مي‌كند بديهي است كه جنبش اپن سورس و خيل عظيم برنامه‌نويسان جاوا نيز بيكار نمانده‌ و مي‌كوشند تا دير نشده Ajax را به قلب دنياي نرم‌افزارهاي آزاد بياورند و از انحصاري شدن آن جلوگيري كنند تا اين فناوري به استاندارد جديد وب تبديل شود. به نظر مي‌رسد كه آنها موفق بوده‌اند زيرا حتي پياده‌سازي‌هاي دات نتي اي‌جكس نيز اغلب به صورت اپن سورس است.

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

به طور سنتي وقتي كاربر فرمي را پرمي‌كند و به سايت ارسال مي‌كند، وب سرور با بارگذاري مجدد يا تازه‌سازي صفحه (refresh) و نمايش يك پيغام و يا نتيجه پردازش اطلاعات، به او پاسخ مي‌دهد و به همين دليل هم وقت سرور براي ارسال كل محتواي آن صفحه گرفته مي‌شود و هم كاربر بايد براي دريافت كامل آن صفحه منتظر بماند؛ كه نتيجه آن كاهش بازده سرور، مصرف پهناي باند و تلف شدن وقت و هزينه است. اما به‌كارگيري تكنيك اي‌جكس اين مشكلات را به طرز قابل‌ملاحظه‌اي كاهش مي‌دهد.

گوگل باز هم پيشتار

همانطور كه جسي جيمز گرت مي‌نويسد، گوگل در ميان سايت‌هاي اينترنتي از نظر ميزان به‌كارگيري فناوري اي‌جكس پيشتاز است و اين تكنيك را در نرم‌افزار سايت‌هاي Orkut ،Gmail ،Google Groups، سيستم Google Suggest و سرويس Google Maps به كار برده است. همچنين به گفته گرت بسياري از قابليت‌هاي دوست داشتني Flickr، سايت به اشتراك‌گذاري عكس ياهو، و نيز موتور جستجوي A9 در سايت آمازون بر اساس اي‌جكس كار مي‌كنند.


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

شكل 1

شكل 2

شكل‌هاي 1 و 2 تصاويري هستند كه گرت در مقاله خود استفاده كرده است. شكل 1 مقايسه‌اي است كه نشان مي‌دهد كه برنامه‌هاي تحت وب سنتي چگونه كنش‌هاي كاربر را مديريت مي‌كنند و اي‌جكس چگونه همين عمليات را كنترل مي‌كند.

شكل 2 مقايسه ديگري است كه نشان مي‌دهد اگر تعامل كاربر با يك سايت را در محور زمان ترسيم كنيم، چه تفاوتي ميان فرآيند ارسال و دريافت داده‌ها در نرم‌افزارهاي سنتي و نرم‌افزارهاي مبتني بر فناوري اي‌جكس وجود دارد.

اگر به نمودار شكل 2 دقت كنيد متوجه مي‌شويد كه هنگامي كه اينترفيس يك برنامه وب از اي‌جكس استفاده مي‌كند، تماس ميان كاربر و اينترفيس هرگز قطع نمي‌شود. او همواره نرم‌افزار را در دسترس و پيش روي خود مي‌بيند و موتور اي‌جكس در پشت صحنه عمليات ارسال و دريافت داده‌ها را مديريت مي‌كند.


مزايا و معايب Ajax

طي سال‌هاي اخير صنعت نرم‌افزار در عرصه وب به سوي توليد سيستم‌هايي حركت كرده‌است كه هرچه بيشتر مستقل از نوع سيستم‌عامل و مرورگري باشد كه كاربر استفاده مي‌كند.

نگاهي به سير تحولات مربوط به زبان‌هاي برنامه‌نويسي وب مانند PHP و ASP از يك‌سو و كاهش اقبال برنامه‌نويسان به فناوري‌هايي همچون ActiveX و Java Applet در سمت كلاينت از سوي ديگر، مويد اين نكته است.


در واقع يكي از دلايل مهم توجه دنياي نرم‌افزار به فناوري اي‌جكس همين است. اين دستاورد برخلاف فناوري‌هايي مانند Macromedia Flash نيازمند نصب هيچ نرم‌افزار الحاقي و اضافي روي مرورگر نيست و همين حالا بستر لازم براي پياده‌سازي اي‌جكس روي ميليون‌ها سايت و مرورگر وب وجود دارد. در اين ميان، اتكاي اي‌جكس بر فناوري XMLاز اهميت ويژه‌اي برخوردار است.


زيرا XML ماهيتا يك فناوري باز است كه انعطاف‌پذيري زيادي دارد و هم‌اكنون در مقياس گسترده‌اي در نرم‌افزارهاي تحت وب، از سيستم‌هاي تجارت‌الكترونيك گرفته تا نرم‌افزارهاي مديريت محتواي سايت‌هاي وب و فناوري‌هايي همچون وب‌سرويس، ‌RSS و حتي پادكستينگ مورد استفاده قرار مي‌گيرد.

ظهور اي‌جكس نشان مي‌دهد كه فناوري XML هنوز قابليت‌هاي كشف‌نشده‌‌اي دارد كه همچنان بكر مانده‌اند و مي‌توانند منشا تحولات بزرگ در سيستم‌هاي اطلاعاتي و ارتباطي باشند.

طعم كد Ajax چگونه است؟

ورود به مباحث كد‌نويسي اي‌جكس مقوله پيچيده و مفصلي است كه در اين مقاله نمي‌گنجد، ولي خالي از لطف نيست كه كمي با شكل و قيافه كدهاي اي‌جكس آشنا شويد. كد زير نمونه‌اي از اعلان شي ءXMLHttpRequest را نشان مي‌دهد:

كد1

كد 2 نمونه‌اي از اعلان شي‌ء ‌XMLHttpRequest را در مرورگرهاي مايكروسافتي نشان مي‌دهد:

كد 2

كد 3 نمونه‌اي از كد‌نويسي جاوا اسكريپت را نشان مي‌دهد. در اي‌جكس به وفور از متدولوژي DOM در جاوا اسكريپت و DHTML استفاده مي‌كنيم:

كد 3

كد 4 نيز نمونه‌‌اي از روش ارسال يك تقاضا به وسيله Ajax را نشان مي‌دهد:

كد 4

اين تقاضا مي‌تواند مثلا از قسمتي از يك صفحه وب به صورت كد 5 باشد:

كد 5

نهايتا پاسخ دريافت شده از سمت سرور را نيز مي‌توان به وسيله كدي شبيه به كد 6 مورد استفاده قرار داد:

كد 6

در همين ارتباط، رويكرد اي‌جكس به سمت فناوري وب‌سرويس قابل توجه است. از آنجا كه ‌Ajax تا حد زيادي به معماري XMLHttpRequest وابسته است، اين قابليت را دارد كه فرامين ارسال و دريافت اطلاعات را نه فقط از طريق سايت اصلي نمايش‌ دهنده يك صفحه وب، بلكه از طريق سايت‌هاي ديگري كه احتمالا اطلاعات خود را بر بستر وب سرويس و ‌XML قرار داده‌اند نيز دريافت كند. بنابراين اي‌جكس بالقوه يك فناوري سازگار با وب سرويس نيز هستد.
مزيت مهم ديگر Ajax بهره‌گيري آن از استاندارد CSS است.

استانداردي كه به تنهايي منشا تحولات ديگري در زمينه اينترفيس نرم‌افزارهاي وب است و در آينده بسيار نزديك به وجه غالب صفحه‌آرايي و اينترفيس سايت‌هاي وب تبديل خواهد شد. توجه اي‌جكس به CSS شان مي‌دهد كه اين فناوري همزمان با به‌كارگيري جاوا اسكريپت و ‌XML براي مديريت داده‌ها، از استاندارد پيشرفته‌اي براي اينترفيس وب استفاده مي‌كند و مي‌توان حقيقتا آن را يك فناوري مرتبط با اينترفيس ( و نه فقط تعامل ميان كلاينت و سرور) تلقي كرد.

با اين وجود، اي‌جكس معايبي نيز دارد و اين معايب موضوع بحث بسياري در محافل برنامه‌نويسي روي اينترنت است. يكي از مسائلي كه به عنوان ايراد مطرح شده، دشواري تغيير عادت كاربران در استفاده از كليدهاي Back وForward و Refresh در مرورگرهاي وب است. يكي از مشكلات برنامه‌نويسان وب همواره اين است كه يا بايد كاربر را عادت دهند كه هرچه كمتر از اين دكمه‌ها استفاده كند و يا نرم‌افزار خود را طوري بنويسند كه اگر كاربر سهوا يا عمدا از اين دكمه‌ها استفاده كرد، نرم‌افزار دچار اشتباه و خطا در تفسير عمل كاربر نشود.

به عنوان مثال هنوز بسياري از سايت‌هاي تجارت الكترونيكي كه به كار فروش محصولات مشغولند هنگام طي شدن مراحل نهايي خريد آنلاين به كاربر هشدار مي‌دهند كه حين پردازش يك سفارش (يعني درست در لحظه‌اي كه فرمان نهايي از سوي كاربر ارسال شده است و هنوز صفحه نمايش پيغام ثبت موفقيت‌آميز سفارش يا عدم ثبت آن براي وي نمايش داده نشده) از فشردن كليد Refresh جدا پرهيز كنند وگرنه ممكن است از كارت اعتبار آنها دوبار پول كسر شود. همچنين استفاده از دكمه‌هاي Back و Forward در عملياتي كه به آساني برگشت‌پذير نيستند ممكن است باعث گيج شدن كاربر است.

مثلا اگر نامه‌هاي داخل صندوق پستي خود را پاك كنيد، استفاده از دكمه Back هرگز اين عمل را Undo نمي‌كند. همچنين اگر يك قلم كالا به سبد خريد آنلاين خود اضافه كنيد، فشردن دكمه‌Back ممكن است در ظاهر چنين نشان دهد كه آن قلم كالا مجددا از سبد برداشته شده اما در سمت سرور همچنان در سبد خريد كاربر باشد. از آنجا كه فناوري اي‌جكس عمل ‌Navigation يا راهبري در يك سايت را به روندي غير‌خطي تبديل مي‌كند، تمام اين مشكلات به شكل حادتري ممكن است بروز كند.

در واقع با حضور Ajax، كاركرد سيستم History مرورگر به مساله‌اي بغرنج تبديل مي‌شود. زيرا برنامه‌نويس يا بايد با گنجاندن دكمه‌ها و فرامين اضافي، مكانيزم ‌Undo را بازسازي كند و يا موتور اي‌جكس را طوري بنويسد كه فشردن دكمه ‌Back خود به خود موجب احظار فرمان Undo شود.

در هر دو صورت كار برنامه‌نويس آسان نخواهد بود. البته در اين زمينه ترفندها و تكنيك‌هايي هم ابداع شده است. از جمله، استفاده از تگ ‌IFRAME مخفي در اينترفيس صفحه كه موتور اي‌جكس بتواند در صورت فشرده شدن دكمهBack از سوي كاربر، نسخه‌هاي پيشين نمايش داده شده از اينترفيس را از انباره ‌History مرورگر بيرون بكشد و دوباره در چرخه عمليات موتور اي‌جكس وارد كند. اين ترفند هم‌اكنون در سرويس Google Maps استفاده مي‌شود.
مشكل ديگري كه در رابطه با اي‌جكس وجود دارد، بي معني شدن مفهوم Bookmark است.

بازهم مكانيزم غيرخطي اي‌جكس مشكل ساز مي‌شود. آيا شما مي‌توانيد در نرم‌افزارهاي معمولي دسكتاپ يك لحظه مشخص را Bookmark كنيد و دوباره به آن برگرديد؟ بعضي از نرم‌افزارها مانند فتوشاپ
(سيستم Action history) اين‌كار را انجام مي‌دهند، ولي اغلب نرم‌افزارها چنين نيستند. در واقع به سختي مي‌توان از لحظات مختلف يك نرم‌افزار عكس گرفت و snapshot تهيه كرد.

اين‌كار به يك انباره پيچيده نياز دارد كه هم حالت‌هاي مختلف اينترفيس و هم وضعيت‌هاي متفاوت داده‌ها را قبل و پس از تغييرات در خود نگه دارد. البته درمورد Ajax راهكارهايي در اين زمينه پيشنهاد شده است. از جمله استفاده از anchor در HTML كه پس از علا‌مت َ‌ در يك URL ‌ظاهر مي‌شود. از آنجايي كه جاوا اسكريپت امكان به روزرساني دايناميك آنكورها را دارد، بعضي برنامه‌نويسان پيشنهاد كرده‌اند كه از اين ترفند براي نگهداري حالات مختلف يك برنامه مبتني بر اي‌جكس استفاده شود. تكنيكي كه ممكن است در زمينه حل مشكل دكمه‌هاي Back و Forward نيز سودمند واقع شود.

يك مشكل عمده ديگر نيز در ارتباط با اي‌جكس وجود دارد. اين فناوري به شدت متكي به ‌XMLHttpRequest است و اين شيء به دلايل امنيتي طي ماه‌هاي اخير هرچه بيشتر و بيشتر در نسخه‌هاي جديد مرورگرها محدود شده است. زيرا اگر هر كلاينتي بتواند از هر نقطه‌اي به هر سروري اين فرمان را بفرستد، آنگاه تهديد‌هاي امنيتي عليه سايت‌ها افزايش مي‌يابد. محدوديت‌هاي جديد اعمال‌شده در نسخه‌هاي اخير مرورگرها موجب شده كه فرمانXMLHttpRequest به‌غير از سايتي كه صفحه وب از آنجا آمده است نتواند با سايت ديگري ديالوگ داشته باشد و اين مسئله در تناقض با كاربرد اي‌جكس در زمينه وب‌سرويس است.

البته براي غلبه بر اين مشكل راه‌حل‌هايي هم پيشنهاد شده است، از جمله اين‌كه شي ‌ءXMLHttpRequest مي‌تواند تقاضاي ديالوگ با سايت‌هاي ديگر را به يك وب سرويس روي سايتي كه صفحه وب از آنجا آمده است بفرستد و اين وب‌سرويس (كه روي ميزبان سايت قرار دارد و با تمام اينترنت در ارتباط است) به صورت يك واسطه عمل كند و تقاضاهاي مورد نظر را براي سايت مقصد ارسال كند. اين وب سرويس‌هاي واسطه اصطلاحا Application Proxy ناميده مي‌شوند.

البته اي‌جكس مشكلات كوچك و جنبي ديگري هم دارد كه چندان مايه نگراني نيست ولي به هرحال قابل لمس هستند. به عنوان نمونه، نرم‌افزارهاي مبتني بر اي‌جكس از حجم زيادي جاوا اسكريپت استفاده مي‌كنند كه همه اينها در هر session دست‌كم يك‌بار بايد روي مرورگر بارگذاري شوند. بنابراين اولين باري كه چنين اينترفيسي بارگذاري مي‌شود صفحه وب آن‌قدر سنگين مي‌شود كه حتي با ارتباط باندپهن هم چند لحظه طول مي‌كشد كه صفحه بارگذاري شود.

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

جنبش Open Ajax هم از راه رسيد

در كنار همه تحولاتي كه به دنبال ظهور پديده اي‌جكس در صنعت نرم‌افزار پديد آمده است، يك خبر مهم نيز قابل توجه است. شركت IBM كه خود از پيشگامان فناوري XML است، در ابتداي ماه فوريه 2006 اعلام كرد يك ائتلاف بزرگ صنعتي متشكل از شركت‌‌هاي بورلند، BEA Systems ،Zend، ناول، ياهو، موزيلا، ردهت، اوراكل و بنياد اكليپس ايجاد كرده است كه در نظر دارد براي توسعه يك پياده‌سازي فراگير و اپن سورس از اي‌جكس تلاش كند. پيش بيني مي‌شود كه اين پياده‌سازي به يكي از استانداردهاي اصلي اي‌جكس در صنعت نرم‌افزار تبديل شود. آي‌بي‌ام در نظر دارد مجموعه Toolkit ‌پيشنهادي خود را از طريق بنيادهاي موزيلا و اكليپس در دسترس جامعه اپن سورس قراردهد. در همين رابطه شركت Zimbra، يك سازنده نرم‌افزارهاي مبتني بر اي‌جكس درنظردارد مجموعه Toolkit خود را تحت ليسانس موزيلا و Apache در اختيار برنامه‌نويسان قرار دهد.


در عين حال وقتي حجم جاوا اسكريپت بارگذاري شده روي كلاينت افزايش مي‌يابد سرعت پردازش كامپيوتري كه كاربر استفاده مي‌كند نيز به يك مسئله تبديل مي‌شود. به بيان ديگر، اي‌جكس‌ شديدا منابع و resource ‌هاي سيستم را به‌كارمي‌گيرد، چنانكه به جرات مي‌توان گفت نرم‌افزارهاي مبتني‌بر Ajax براي كاربراني كه از كامپيوترهاي ضعيف و قديمي استفاده مي‌كنند قابل استفاده نيست.

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

پياده سازي Ajax
يكي ديگر از مشكلاتي كه در ارتباط با اي‌جكس به نظر مي‌رسد اينست كه كار زيادي از برنامه‌نويس مي‌طلبد و در حال حاضر اجراي موفقيت‌آميز يك اينترفيس حرفه‌اي مبتني بر اي‌جكس كاري بسيار دشوار و وقت‌گير است. يعني‌Ajax به همان اندازه كه كار بازديدكننده‌ها را آسان مي‌كند، كار برنامه‌نويسان را مشكل مي‌كند! با اين حال اي‌جكس روي پلتفرم‌هاي مختلف پياده‌سازي شده و مجموعه ابزارهاي مختلفي براي تسهيل كار برنامه‌نويسان عرضه شده است تا تجربه شيرين‌تري از Ajax داشته باشند.

برنامه‌نويسان ASP.NET در صورتي كه از نسخه دات نت 1.1 استفاده مي‌كنند مي‌توان از ماژولAjax.NET استفاده كنند كه اولين پياده‌سازي دات‌نتي اي‌جكس و رايگان است. مايكروسافت در ASP.NET 2.0 اين فناوري را با نام Atlas وارد پلتفرم كرده است كه علاقه‌مندان مي‌توانند يكراست سراغ آن بروند.

براي پلتفرم جاوا نيز چندين پياده‌سازي مختلف، اغلب اپن سورس، وجود دارد. از جمله AjaxAnywhere و AjaxTagsرا ببينيد. همچنين چندين پياده‌سازي مخصوصPHP مي‌توانيد پيدا كنيد. ماژول‌هاي CPAINT و xajax از آن جمله‌اند. ماژول CPAINT براي ASP نيز قابل استفاده است. چند ماژول ديگر هم مانند GeneXus وجود دارند كه مالتي پلتفرم هستند. براي هريك از پلتفرم‌هاي Perl ،ColdFusion و Python نيز دست‌كم يك پياده‌سازي معروف وجود دارد. فهرست كامل همه اين پياده‌سازي‌ها را به همراه آدرس سايت و لينك دانلود آنها را مي‌توانيد در ضميمه آنلاين همين مقاله كه همزمان با انتشار اين شماره در بخش دانلود سايت ماهنامه شبكه قرار مي‌گيرد، پيدا كنيد.


پدیده انقلابی Ajax ( )

Ajax چیست؟

واژه Ajax با تلفظ <ایجکس> یا <ایژاکس> سرنام عبارت Asynchronous JavaScript and XML و به معنی <ترکیب نامتقارن جاوا اسکریپت و>XML است. ماهیت صفحات وب و پروتکل HTTP به گونهای است که به طور معمول وقتی درحال وبگردی هستیم، به ازای هر کنش و واکنش میان ما و سایتی که در حال کار با آن هستیم، کل یک صفحه وب از نو بارگذاری و تازهسازی (refresh) میشود.

ایجکس فناوری جدیدی است که تغییر محسوسی را در این سناریو به وجود میآورد؛ به این ترتیب که به جای بارگذاری مجدد کل صفحه، فقط قسمتی تغییر میکند که قرار است اطلاعات جدید را به نمایش درآورد و کلیه عملیات ارسال اطلاعات و دریافت نتایج در پشت صحنه انجام میشود. در نتیجه هیچگاه صفحه سفید و خالی وب در فواصل کنش و واکنشهای هنگام کار با مرورگر دیده نمیشود و احساسی مشابه تجربه کار با یک نرمافزار دسکتاپ به کاربر دست میدهد.

جادوی ایجاکس چیزی نیست جز یک فکر بکر و آن هم ترکیب کردن جاوا اسکریپت و XML در قالب یک موجود نرمافزاری جدید.

اصطلاح Ajax را اولین بار کارشناسی از شرکت Adaptive Path به نام جسی جیمزگرت در مقالهای با عنوان <ایجکس؛ رهیافت جدیدی در برنامههای تحت وب> مطرح کرد و خیلی سریع مورد استقبال گسترده برنامه نویسان وب در سراسر جهان قرارگرفت. اعتقاد عمومی این است که تاریخچه بهکارگیری تکنیک مذکور به پیدایش نرمافزار Outlook WebAccess و استفاده از فرمان XMLHttpRequest که مایکروسافت ابداع کرده و در نرمافزار اینترنت اکسپلور بهکار رفته است، برمیگردد. اما امروزه اغلب مرورگرهای مهم و شناختهشده (از جمله فایرفاکس) از آن پشتیبانی میکنند و دیگر یک فناوری محدود به اینترنت اکسپلورر نیست.

چرا Ajax این قدر اهمیتدارد؟

فناوری ایجکس جدید است و شگفتانگیز بهنظر میرسد. ولی در حقیقت کل این شعبده بر اساس فناوریهایی بنا شده است که هماکنون موجودند: جاوا اسکریپت و XML. هر دوی این فناوریها تا حد زیادی باز هستند و منحصر به شرکت خاصی نیستند. به همین دلیل این روزها تمام محافل دنیای برنامه نویسی مملو از مقالات و تحلیلهایی درباره Ajax است. به عنوان نمونه میتوانید صفحه نخست سایت موسوم به <کانال شبکه برنامه نویسان سان> را بازکنید.

بیشتر این صفحه (در زمان نگارش این یادداشت) به مقالات و مطالب متنوعی درباره Ajax اختصاص یافته است. مجلات برنامهنویسی نیز مقالات متعددی در این زمینه منتشر کردهاند و سایتهای معروفی مانند O' Reilly و xml.com نیز در این باره مطلب دارند.

بنابراین ظرفیت بالایی برای تبدیل ایجکس به یک استاندارد جهانی وجود دارد. از این رو قرار است در تاریخ سیزدهم مارس سمینار مهمی در زمینه Ajax برگزار شود. اگر همین الان به سایت ajaxseminar.com مراجعه کنید، متوجه میشوید که علاوه بر طراح این تکنیک، چندین برنامهنویس شاخص از شرکتهای بزرگی همچون یاهو در آن شرکت خواهند داشت.

این فناوری از یک جنبه دیگر نیز اهمیت دارد. بهدلیل عدم نیاز به بارگذاری مجدد کل یک صفحه وب، مقدار دادههایی که لازم است برای تکمیل یک Interaction میان کاربر و سایت مبادله شود، به شدت کاهش مییابد و این به معنی افزایش محسوس سرعت نرمافزارهای تحت وب، سهولت بهکارگیری اینترفیسهای مبتنی بر ایجکس و کاربرپسندترشدن آنها میشود. به همین دلیل این روزها اکثر پورتالهای بزرگ (مانند یاهو) مشغول طراحی اینترفیسهای مبتنی بر Ajax هستند.

با این همه مزایای ایجکس به همین موارد ختم نمیشود. تصور کنید وقتی در طول شبانه روز میلیاردها بار فرآیند بارگذاری مجدد صفحات وب تعاملی در شبکه اینترنت تکرار میشود، استفاده از ایجکس چگونه موجب آزاد شدن پهنایباند اینترنت و در نتیجه میلیاردها دلار صرفهجویی اقتصادی در این زمینه میشود و این به نوبه خود انقلابی در عرصه وب و فضای سایبر به شمار میرود. این تحول در شرایطی اتفاق میافتد که همزمان فناوریهای اینترنت پرسرعت همچون ADSL به شدت در حال رشد هستند.

حال تصور کنید اگر فناوری ایجکس در مقیاس گستردهای مورد استفاده نرمافزارهای تحت وب قرارگیرد. آنگاه افزایش سرعت کار با اینترنت چند برابر خواهد شد. چنین تحولی میتواند اینترنت را به کامپیوتر دوم کاربران تبدیل کند. به گونهای که برای آنها اجرای یک نرمافزار از روی وب تفاوت محسوسی با اجرای آن از روی کامپیوتر دسکتاپ نداشته باشد. در این صورت ممکن است واقعا بخش مهمی از توان پردازشی نرمافزارها، چه از نوع دسکتاپ و چه از نوع تحت وب به سیستمهای موسوم به Web Service واگذار شود. از این رو کسانی که مبتکر و مشوق ایده وب سرویس بودهاند، این روزها انگیزه تازهای برای سرعت بخشیدن به این فناوری پیدا کردهاند و تلاش میکنند دو فناوری ایجکس و وب سرویس را بهیکدیگر پیوند دهند و راهکارهای تازهای بیافرینند

--
M.A.Yazdi