آژاکس چیست؟ *Ajax*

نویسنده Zohreh Gholami, بعد از ظهر 17:11:42 - 09/07/11

« کدهای کاربردی زبان پی اچ پی(php Code) | مادر زبان های تحت وب »

0 اعضا و 1 مهمان درحال دیدن موضوع.

Zohreh Gholami

آژاکس چیست؟ *Ajax*

از تروای باستان تا طراحی وب مدرن
در افسانه ایلیاد اثر هومر، آژاکس (Ajax) نام پسر (Telamon) است. آوازه قدرت و شجاعت او چون یک جنگجوی بزرگ یونانی در همه‌جا پیچیده بود. او همیشه یک تبر بزرگ و یک سپر بزرگتر با خود حمل میکرد. این سلاح‌ها به او در جنگ با جنگجویان تروا باری می‌رساندند. علاوه بر این نام جالب و جذابی هم داشت.

نام آژاکس از این رو تا این حد جالب است که در افسانه ایلیاد بیش از یکبار به‌کار برده شده است. همچون آژاکس پسر تلمون، یک آژاکس دیگر که شهرت کمتری دارد نیز در بین جنگجویان تروا دیده می‌شود. نام آژاکس از آن زمان تاکنون بارها استفاده شده است.

آژاکس نام کشتی جنگی بریتانیا بود که در نبرد River Plate در جنگ جهانی دوم شرکت داشت. آژاکس نام فضاپیمایی در فیلم سینمایی Flash Gordon نیز میباشد. نام آژاکس دست کم در چهار مدل اتومبیل، دو شرکت ضبط موسیقی، یک تیم فوتبال هلندی و یک بازی پر زدوخورد کامپیوتری به کار برده شده است. زمانی مسئولین شرکت Colgate-Palmolive به دنبال یک نام تجاری جالب برای دسته‌ای از محصولات شوینده خانگی خود بودند، آنها نام آژاکس را برگزیدند.

آژاکس از آن دسته کلماتی است که میتوان برای ایجاد تصویر سحرآمیزی از قدرت و توانایی به آنها تکیه کرد. کلماتی چون Excelsior و Excalibur هم از این دسته‌اند. شاید وجود حرف X در ترکیب با یک عبارت نشأت گرفته از اساطیر برای جذاب کردن یک کلمه کفایت می‌کند.
در دنیای وب که آکنده از اسمای عجیب شده است، می‌شد پیش‌بینی کرد که دیر یا زود نام آژاکس هم بالاخره در این میان سر بر می‌آورد.


ماجرای جسی جیمز گرت
جسی جیمز گرت (Jesse James Garrett) یک معمار اطلاعات، نویسنده و شریک در بنیانگذاری شرکت Adaptive Path در سن فرانسیسکو بود. در فوریه 2005، وی یک مقاله در سایت وب شرکت Adaptive Path باعنوان آژاکس :‌ نگرش جدیدی بر برنامه‌های کاربردی تحت وب منتشر ساخت.

در این مقاله، گرت برای تشریح تکنیک‌هایی که در سبک جدید برنامه‌های کاربردی تحت‌وب مورد استفاده قرار می‌گرفتند، برای اولین بار نام آژاکس (Ajax) را ابداع نمود. در آن زمان Google Suggest و Google Map دو ابزار مبتنی بر مرورگری بودند که می‌توانستند این نوع تعامل و واکنش‌پذیری که معمولا در برنامه‌های کاربردی رومیزی (Desktop) استفاده می‌گردد را نشان دهند. اما تا قبل از آن مقاله گرت هیچ نام خاصی وجود نداشت که بتوان برای تکنولوژی‌هایی که این برنامه‌ها را تا این حد جالب توجه کرده بودند، به‌کار برد.

هنگامی که این مقاله در ابتدا در سایت وب Adaptive Path پدیدار گشت، تمامی حروف کلمه AJAX با حروف بزرگ نوشته شده بودند. این مساله از آنجا نشأت کی‌گرفت که در اصل قرار بود این کلمه به عنوان مخففی برای Asynchronous JavaScript and XML به‌کار برده شود. حروف اول این عبارت در کنار هم اسم ساده و جالب جنگجوی مورد علاقه ما در جنگ تروا را ترسیم می‌نمایند، با این وجود تاثیر این کلمات در توصیف تکنولوژی‌های مورد بحث چندان زیاد نیست.

این گفته درست است که بیشتر گونه‌های جدید برنامه‌های کاربردی وی غیر‌همزمان (Asynchronous) می‌باشند. به عبارت دیگر، تعاملات در پشت صحنه و بدون درگیر نگاه‌داشتن مرورگر روی می‌دهند. امام غیرهمزمان بود در آژاکس اجباری نیست. به راحتی میتوانید یک تعامل را همزمان تعیین نمایید.

به‌ویژه، وجود حرف X در این عبارت گمراه‌کننده است. این حرف بر الزامی‌بودن وجود XML در برنامه‌های آژاکس دلالت می‌کند، درحالی که چنین چیزی حقیقتا نادرست است. برای رعایت بی‌طرفی، باید بگویم که دلیل وجود حرف X کلمه XML است که در XMLHttpRequest به‌کار رفته است
- XMLHttpRequest تکنولوژی مرکزی مورد‌استفاده در بیشتر برنامه‌های آژاکس است
- اما XMLHttpRequest چندان برای نام‌گذاری جالب و جذاب به‌نظر نمی‌رسد.
جسی جیمز گرت بعدا مقاله‌اش را به‌روز کرد و روشن ساخت که منظورش از Ajax یک مخفف نبوده است.

حتی اگر آژاکس را به‌عنوان یک مخفف به‌کار نبریم، این نام باز هم برای کنار هم قرار دادن گروهی از تکنولوژی‌ها در یک کلمه عالی است. البته این امر نتوانست از بروز خشم بسیاری از برنامه‌نویسان کهنه‌کار آن دوران جلوگیری نماید. آنها اعتراض می‌کردند که "‌این گفته‌ها چیز جدیدی نیست، ما سال‌ها این کار‌ها را انجام داده‌این و به آن اسکریپت‌نویسی از راه‌دور (Remote scripting) می‌گفتیم. آژاکس فقط یک اسم است که میان مردم مرسوم شده است."

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

کلمه آژاکس کوتاه است و برای توصیف یک روش قاعده‌مند خاص که از دسته‌ای از تکنولوژی‌ها سود می‌برد ساده و کارا است. این عبارت به توسعه‌دهندگان و استفاده‌کنندگان به‌طور یکسان اهمیت کارایی و طراحی در برنامه‌های کاربردی مدرن تحت‌وب را یاد‌آوری می‌نماید.

اما این سوال همچنان به‌قوت خود باقی است که معنا و مفهوم نام آژاکس چیست؟

Zohreh Gholami

در مقاله قبل که نوشته آقای جسی جیمز گررت است سعی بر تعریف فناوری آژاکس شده است تا کسانی که تازه در این باره شنیده اند راحت تر این فناوری نو ظهور را درک وشناسایی نمایند.


تعریف آژاکس
همانطور که گفته شد آژاکس یک فناوری است. آژاکس متشکل از چندین فناوری دیگراست که هر کدام در مسیری جدید و قوی می آیند. آژاکس از بهم پیوستن پنچ مورد زیر بوجود آمده است:
1 . ارائه استاندارد پایه با استفاده از XHTML و CSS .
2 . نمایش پویا و تعامل با کاربر با استفاده از DOM(Document Object Model)
3 . دستکاری و تبادل اطلاعات با استفاده از XML و
XSLT.
4 . بازیابی غیر همزمان داده ها با استفاده از XMLHttpRequest.
5 . تقید همه چیز با هم (JavaScript)

مدل قدیمی یا در واقع کلاسیک وب همانند این کار می کرد که بیشترین فعالیت های کاربربا واســط (Interface) ، یــک درخــواست HTTP بود که به سـرور برگشت داده می شد. سرور بعضی پردازش ها از قبیل بازیابی اطلاعات را انجام می داد و آنگاه یک صفحه HTML به سمت مشتری باز می گرداند. این یک مدل اقتباس گرفته شده از اصل وب ــ که از رسانه ابر متن (HyperText) استفاده می کند ــ است.  اما به طوری که مشتاقان اساس آزمون کاربر می دانند ، چقدر ما وب را عالی میسازیم بدون اینکه نیازی به این عالی سازی برای نرم افزارهای کاربردی داشته باشیم؟

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

واضح است اگر ما یک طراح وب بودیم نبایستی در این مدت کاربر را منتظر نگه داریم. یکبار واسط (Interface) در سمت مشتری بارگذاری می شود، چرا باید فعل و انفعال کاربر دچار مکث شود در هر باری که برنامه کابردی نیاز به چیزی از سرور دارد ؟ در حقیقت چرا کاربر باید همیشه برنامه را در حال رفتن به سرور مشاهده کند؟


به چه سبب آژاکس متمایز است؟
یک برنامه کاربردی آژاکس طبیعت Start-
Stop-Start-Stop فعل و انفعال در وب را بااستفاده از مطرح کردن واسطی میان کاربر و سرور به نام موتور آژاکس بر طرف نموده است. بنظر میرسد که مانند اضافه کردن یک لایه به برنامه کاربردی است تا برنامه را کمتر به سمت سرور فرستاده و از آن پاسخ دریافت نمایید. اما برعکس این حالت درست می باشد.

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

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

در پایان این مقاله به این موضوع اشاره می کنم که در حال حاضر یکی از معروف ترین سایت هایی که از این فناوری استفاده می نماید Google است که آخرین ورژن Google Maps را می توان به عنوان یکی از بارزترین نمونه های استفاده از AJAX نام برد. اینگونه پروژه ها ثابت می کند که AJAX فقط حرف فنی نیست و نمونه های عملی در جهان واقعی کاربردی دارد.


جعبه متن
منبع: وب فوکوس
[/size]

Tags:

Share via facebook Share via linkedin Share via telegram Share via twitter Share via whatsapp