آژاکس (برنامه‌نویسی)

از ویکی‌پدیا، دانشنامهٔ آزاد.

اِیْ‌جکس یا آژاکس (AJAX؛ سرواژهٔ «Asynchronous JavaScript And XML»)، مجموعه‌ای از استانداردها و فناوری‌های وب است که به کمک آن‌ها می‌توان برنامه‌هایی مبتنی بر وب تولید کرد که به آسانی با کاربران تعامل داشته باشند. با استفاده از این فناوری‌ها و با کمک انتقال تکه‌های کوچک داده و اطلاعات از رایانهٔ خادم (Server)، صفحات وب از حالت منفعل خارج می‌شوند و واکنش‌هایی مناسب با رویدادها انجام می‌دهند.

مجموعه فناوری‌های تشکیل دهنده آژاکس عبارت‌اند از [۱]:

  • نمایش استاندارد با استفاده از XHTML و CSS،
  • نمایش پویایی و تعاملات با استفاده از (DOM
  • تبادل و دستکاری داده با استفاده از XML و XSLT،
  • بازیابی داده‌ها بصورت غیر همروند با استفاده از XMLHttpRequest،
  • نهایتاً JavaScript برای سرهمبندی همه چیز با هم.

فهرست مندرجات

[ویرایش] پیشینه

واژه Ajax را برای اولین بار آقای Jesse James Garrett در فوریه سال ۲۰۰۵ در مقاله Ajax: A New Approach to Web Applications استفاده کرد. اگرچه نام Ajax برای نخستین بار در سال ۲۰۰۵ ابداع شد، اما تاریخچه اکثر فناوری‌هایی که به آژاکس منتهی شدند به حدود یک دهه قبل و ابتکارات مایکروسافت در اسکریپت نویسی از راه دور بازمی‌گردد. با این حال تاریخچه فناوری‌هایی برای بارگذاری غیرهمروند محتویات یک صفحه وب، بدون نیاز به بارگذاری دوباره صفحه، به عناصر IFRAME (که در سال ۱۹۹۶ در نسخه ۳ IE ارائه شد) و عناصر LAYER (که در سال ۱۹۹۷ در نسخه ۴ مرورگر Netscape ارائه شد، اما در نسخه‌های اخیر موزیلا متروکه شده است) باز می‌گردد. هردوی این عناصر، یک خصوصیت src دارند که می‌تواند یک آدرس URL خارجی را شامل شود و به این ترتیب اگر صفحه‌ای شامل یک کد JavaScript بارگذاری شود که صفحه والد را دستکاری می‌کند، نتیجه‌ای شبیه Ajax خواهیم داشت.

اسکریپت نویسی از راه دور مایکروسافت (یا MSRS که در سال ۱۹۹۸ مطرح شد) جایگزین مناسب‌تری برای تکنیک‌های گذشته به نظر می‌رسید. در این روش، داده‌ها به‌وسیله یک Java Applet دریافت می‌شد، و در سمت کلاینت برقراری ارتباط به‌وسیله JavaScript انجام می‌گرفت. این روش در نسخه‌های ۴ و بعدتر اینترنت اکسپلورر و نت‌اسکیپ پشتیبانی می‌شود.

مایکروسافت در نسخهٔ ۵ اینترنت اکسپلورر شیء XMLHttpRequest را ارائه کرده و برای اولین بار در Outlook Web Access که در Microsoft Exchange Server 2000 ارائه شد، از این روش با استفاده از شی XMLHttpRequest بهره جست.

در نهایت با تغییر و تحولاتی که در این مسیر به وجود آمد و جایگزینی شیء XMLHttpRequest به جای Java Applet، اکنون روشی برای اسکریپ نویسی از راه دور متداول شده که آن‌را با عنوان Ajax می‌شناسیم.

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


[ویرایش] Ajax به عنوان معماری جدیدی برای وب

روش کار برنامه‌های کلاسیک وب چیزی شبیه این است: اکثر تعاملات کاربر با رابط کاربری باعث ارسال یک درخواست به سرور می‌شود. سرور پردازش‌های لازم را انجام داده و سپس یک صفحه HTML به کلاینت بازمی‌گرداند. این مدل بر اساس هدف اصلی وب، یعنی ایفای نقش یک رسانه برای ابرمتن است. اما آنچه وب را برای ابرمتن‌ها مناسب می‌کند، الزاماً آن را برای برنامه‌های نرم‌افزاری نیز مناسب نخواهد کرد[۱]. مسئله اینجاست که برنامه‌های وب برای کاربرد (Application) بودن طراحی نشده‌اند و این باعث شده است که در بسیاری موارد کاربر را نادیده بگیرند.

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

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

اکنون ببینیم Ajax چه پیشنهادی ارائه می‌دهد.

  • قسمت‌های مهم معماری پیشنهادی Ajax به این قرارند [۲]:
    • رخدادهای کوچک سمت سرور: اجزای درون یک برنامه وب می‌توانند، درخواست‌های کوچکی برای سرور ارسال کنند، اطلاعات مورد نیازشان را از سرور دریافت کنند، و هر قسمت از صفحه را که لازم است بر اساس DOM به‌روز کنند، بدون اینکه تمام صفحه دوباره بارگذاری و ترسیم شود.
    • غیر همروند بودن: درخواست‌هایی که به سرور ارسال می‌شود، باعث مسدود شدن صفحهٔ درون مرورگر کلاینت نمی‌شوند. کاربر می‌تواند به کار با قسمت‌های دیگر برنامه ادامه دهد و هنگامی که پاسخی از سرور دریافت شد، با به‌روز کردن رابط کاربر، به کاربر اطلاع داده می‌شود.
    • عکس‌العمل برای هر رخدادی: تقریباً می‌توانیم برای تمام رخدادهایی که کاربر بوجود می‌آورد، با سرور ارتباط برقرار کنیم. مرورگرهای مدرن اکثر رخدادهایی را که سیستم عامل اجازه می‌دهد دریافت می‌کنند: کلیک کردن موس، حرکت موس روی شی، زدن یک کلید و غیره. هر رخدادی می‌تواند باعث ارسال یک درخواست به صورت غیر همروند برای سرور شود.

[ویرایش] کاربردها

حتماً در بخش پست الکترونیک وب‌گاه یاهو دیده‌اید که با تایپ حروف اول نام دوستانتان نام چند نفر از آنها از پایگاه داده‌ها فراخوانی شده و به شما نمایش داده می‌شود. این کار بدون اینکه صفحه بارگذاری مجدد گردد انجام می‌شود. به زبان ساده‌تر، آژاکس فناوری‌ای ست که در آن با بارگذاری شدن یک صفحه، امکان فراخوانی برنامه‌های سمت رایانهٔ خادم (Server) بدون بارگذاری مجدد صفحه وجود دارد. برنامه‌های آژاکس راهی برای ساخت برنامه‌هایی تعاملی در وب فراهم کرده‌اند. برای این‌ کار کافیست یک عنصر فعال که قابل فراخوانی در جاوااسکریپت باشد بتواند تحت کنترل جاوااسکریپت با سرور تماس گرفته و اطلاعات درخواست کند. به‌عنوان مثال این عنصر فعال می‌تواند یک برنامه ASP یا JSP یا... را فراخوانی کرده و نتایج آن را از طریق جاوااسکریپت در صفحه جاری تأثیر دهد. عنصر فعال قبل از معرفی آژاکس می‌توانست یک ActiveX یا جاوا اپلت ساده باشد اما اکنون این عنصر آبجکت XMLHttpRequest است که در مجموعه ابزارهای XML مایکروسافت قرار دارد.

امروزه تقریباً همه مرورگرهای معروف از جمله IE از این تكنولوژی استفاده می‌كنند.

[ویرایش] پیوند به بیرون

ده لینک برتر آژاکس

آژاکس، خط مشی جدیدی برای برنامه‌های وب - ترجمه مقاله جسی جیمز گرت

[ویرایش] منبع

  1. Justin Gehtland and Ben Galbraith and Dion Almaer «Pragmatic Ajax (A Web ۲٫۰ Primer)», Pragmatic Programmers, October ۲۰۰۵
  2. Jesse James Garrett «Ajax: A New Approach to Web Applications», اینجا, February. ۲۰۰۵