۲۹-فروردین-۱۳۸۷, ۱۸:۲۰:۴۰
اِیْجکس یا آژاکس (AJAX؛ سرواژهٔ «Asynchronous JavaScript And XML»)، مجموعهای از استانداردها و فناوریهای وب است که به کمک آنها میتوان برنامههایی مبتنی بر وب تولید کرد که به آسانی با کاربران تعامل داشته باشند. با استفاده از این فناوریها و با کمک انتقال تکههای کوچک داده و اطلاعات از رایانهٔ خادم (Server)، صفحات وب از حالت منفعل خارج میشوند و واکنشهایی مناسب با رویدادها انجام میدهند.: Ajax معماری جدیدی برای برنامههای تحت وب است، که با سرعت بسیار زیادی در حال گسترش بوده، و کمتر کاربر اینترنت است که هنوز گذرش به یکی از صفحاتی که با این معماری ساخته شدهاند نیفتاده، و از قابلیتهای فوقالعاده آن ذوقزده نشده باشد. Gmail، Google Map، Google Suggest، Orkut، و اسامی آشنای دیگر، نمونههایی هستند از جادویی به نام AJAX. با استفاده از این معماری، صفحات وب تعامل بسیار خوبی با کاربران خواهند داشت و بعلاوه، مهمترین مزیت این معماری این است که دیگر برای انجام هر کاری، لازم نیست صفحه وب دوباره بارگذاری شود.در این مقاله به بررسی تاریخچه، اصول و شیوه انجام کارها در این معماری خواهیم پرداخت.
مجموعه فناوریهای تشکیل دهنده آژاکس عبارتاند از :
نمایش استاندارد با استفاده از XHTML و CSS،
نمایش پویایی و تعاملات با استفاده از (DOM)،
تبادل و دستکاری داده با استفاده از XML و XSLT،
بازیابی دادهها بصورت غیر همروند با استفاده از XMLHttpRequest،
نهایتاً javascirpt برای سرهمبندی همه چیز با هم.
پیشینه
واژه Ajax را برای اولین بار آقای Jesse James Garrett در فوریه سال ۲۰۰۵ در مقاله Ajax: A New Approach to Web Applications استفاده کرد. اگرچه نام Ajax برای نخستین بار در سال ۲۰۰۵ ابداع شد، اما تاریخچه اکثر فناوریهایی که به آژاکس منتهی شدند به حدود یک دهه قبل و ابتکارات مایکروسافت در اسکریپت نویسی از راه دور بازمیگردد. با این حال تاریخچه فناوریهایی برای بارگذاری غیرهمروند محتویات یک صفحه وب، بدون نیاز به بارگذاری دوباره صفحه، به عناصر IFRAME (که در سال ۱۹۹۶ در نسخه ۳ IE ارائه شد) و عناصر LAYER (که در سال ۱۹۹۷ در نسخه ۴ مرورگر Netscape ارائه شد، اما در نسخههای اخیر موزیلا متروکه شدهاست) باز میگردد. هردوی این عناصر، یک خصوصیت src دارند که میتواند یک آدرس URL خارجی را شامل شود و به این ترتیب اگر صفحهای شامل یک کد javascirpt بارگذاری شود که صفحه والد را دستکاری میکند، نتیجهای شبیه Ajax خواهیم داشت.
اسکریپت نویسی از راه دور مایکروسافت (یا MSRS که در سال ۱۹۹۸ مطرح شد) جایگزین مناسبتری برای تکنیکهای گذشته به نظر میرسید. در این روش، دادهها بهوسیله یک Java Applet دریافت میشد، و در سمت کلاینت برقراری ارتباط بهوسیله javascirpt انجام میگرفت. این روش در نسخههای ۴ و بعدتر اینترنت اکسپلورر و نتاسکیپ پشتیبانی میشود.
مایکروسافت در نسخهٔ ۵ اینترنت اکسپلورر شیء XMLHttpRequest را ارائه کرده و برای اولین بار در Outlook Web Access که در Microsoft Exchange Server ۲۰۰۰ ارائه شد، از این روش با استفاده از شی XMLHttpRequest بهره جست.
در نهایت با تغییر و تحولاتی که در این مسیر به وجود آمد و جایگزینی شیء XMLHttpRequest به جای Java Applet، اکنون روشی برای اسکریپ نویسی از راه دور متداول شده که آنرا با عنوان Ajax میشناسیم.
اما آنچه باعث شد پس از این مدت، ناگهان توجهها به سمت Ajax جلب شود، تمرکز شرکت گوگل بر این معماری بود. وبسایتهایی از قبیل Google Map، Gmail و Google Suggest پروژههایی بودند که باعث شد توجه کاربران، چه کاربران عادی و چه کاربران حرفهای، به نحوه کار آنها جلب شود.
Ajax به عنوان معماری جدیدی برای وب
روش کار برنامههای کلاسیک وب چیزی شبیه این است: اکثر تعاملات کاربر با رابط کاربری باعث ارسال یک درخواست به سرور میشود. سرور پردازشهای لازم را انجام داده و سپس یک صفحه HTML به کلاینت بازمیگرداند. این مدل بر اساس هدف اصلی وب، یعنی ایفای نقش یک رسانه برای ابرمتن است. اما آنچه وب را برای ابرمتنها مناسب میکند، الزاماً آن را برای برنامههای نرمافزاری نیز مناسب نخواهد کرد. مسئله اینجاست که برنامههای وب برای کاربرد (Application) بودن طراحی نشدهاند و این باعث شدهاست که در بسیاری موارد کاربر را نادیده بگیرند.
فرض کنید کاربر میخواهد در یک فروشگاه الکترونیک، مشخصات جنس بعدی را ببیند، یا یک جنس را به سبد خرید خود اضافه کند. اتفاقی که میافتد این است که برای انجام هریک از این کارها، چون نیاز است با سرور ارتباط برقرار شود، باید یک درخواست به سرور ارسال شده، سرور پردازشهای لازم را انجام دهد و سپس یک صفحه به عنوان نتیجه بازگرداند. کاربر هم در این میان میتواند با انگشتانش بازی کند!
گرچه ما به صفحات وب، با همین روند انجام فعالیت هاعادت کردهایم، اما واقعا روش کلاسیک برنامههای وب، گرچه از نظر تکنیکی مزایای بسیاری دارند، اما مشکلات عمدهای هم دارند. یکی از عمدهترین مشکلات صفحات وب را میتوان همروند کار کردن آنها دانست. (یعنی همین که وقتی درخواستی از سرور داریم، صفحه وب مقابلمان مسدود شده و باید منتظر بمانیم تا سرور کارش تمام شود و صفحهای به عنوان پاسخ برگرداند).
ایجکس چیست
ایجکس یک تکنولوژی نیست؛ بلکه مجموعهایست از تکنولوژیهایی که هر یک در جای خود تکنولوژی کامل و موفقی هستند، و اکنون به شکل جدیدی در کنار هم قرار گرفته و Ajax را تشکیل دادهاند . تکنولوژیهایی که در Ajax از آنها استفاده میشود عبارتاند از:
نمایش استاندارد با استفاده از XHTML و CSS.
نمایش پویایی و تعاملات با استفاده از Document Object Model (DOM).
تبادل و دستکاری داده با استفاده از XML و XSLT.
بازیابی دادهها بصورت غیر همروند با استفاده از XMLHttpRequest.و javascirpt برای سرهمبندی همه چیز با هم.
در واقع Ajax ترکیبی از تکنولوژیهای فوق است و هیچ چیز جدیدی ارائه نمیدهد. همه شگفتی Ajax در معماریایست که برای ساخت یک برنامه وب، با استفاده از این تکنولوژیها ارائه میدهد.
Ajax ؛ معماری جدیدی برای وب
همانطور که اشاره شد، روش کار برنامههای کلاسیک وب چیزی شبیه این است: اکثر تعاملات کاربر با رابط کاربری باعث ارسال یک درخواست به سرور میشود. سرور پردازشهای لازم را انجام داده و سپس یک صفحه HTML به کلاینت بازمیگرداند. این مدل بر اساس هدف اصلی وب، یعنی ایفای نقش یک رسانه برای ابرمتن است. اما آنچه وب را برای ابرمتنها مناسب میکند، الزاماً آن را برای برنامههای نرمافزاری نیز مناسب نخواهد کرد. پیش از این به معایب روش کلاسیک و متداول اشاره کردیم. اکنون ببینیم Ajax چه پیشنهادی ارائه میدهد. قسمتهای مهم معماری پیشنهادی Ajax به این قرارند: رخدادهای کوچک سمت سرور: اجزای درون یک برنامه وب میتوانند، درخواستهای کوچکی برای سرور ارسال کنند، اطلاعات مورد نیازشان را از سرور دریافت کنند، و هر قسمت از صفحه را که لازم است بر اساس DOM بهروز کنند، بدون اینکه تمام صفحه دوباره بارگذاری و ترسیم شود.
غیر همروند بودن: درخواستهایی که به سرور ارسال میشود، باعث مسدود شدن صفحهٔ درون مرورگر کلاینت نمیشوند. کاربر میتواند به کار با قسمتهای دیگر برنامه ادامه دهد و هنگامی که پاسخی از سرور دریافت شد، با بهروز کردن رابط کاربر، به کاربر اطلاع داده میشود.
عکسالعمل برای هر رخدادی: تقریباً میتوانیم برای تمام رخدادهایی که کاربر بوجود میآورد، با سرور ارتباط برقرار کنیم. مرورگرهای مدرن اکثر رخدادهایی را که سیستم عامل اجازه میدهد دریافت میکنند: کلیک کردن موس، حرکت موس روی شی، زدن یک کلید و غیره. هر رخدادی میتواند باعث ارسال یک درخواست به صورت غیر همروند برای سرور شود.
بجای اینکه مرورگر در آغاز ارتباط تنها یک صفحه HTML را بارگذاری کند، یک موتور Ajax را نیز همراه با صفحه بارگذاری میکند، که به زبان javascirpt نوشته شده و معمولاً مابین فریمهایی در صفحه پنهان شدهاست. این موتور مسئول بهروز کردن رابط کاربریای که کاربر میبیند، و همچنین برقراری ارتباط با سرور در پشت پردهاست. موتور Ajax امکان تعامل کاربر با برنامه را، مستقل از ارتباطات و نقل و انتقالات بین برنامه و سرور میدهد. بنابر این، کاربر دیگر شاهد یک صفحه خالی و ساعت شنی و انتظار برای انجام عملیات سمت سرور نخواهد بود.
آن دسته از فعالیتهای کاربر که باعث یک درخواست HTTP میشدند، اکنون با استفاده از javascirpt موتور Ajax را فراخوانی میکنند. در مورد پاسخ به آن دسته از فعالیتهای کاربر که نیاز به ارسال درخواست به سرور ندارند (مانند اعتبار سنجیهای ساده دادهها، ویرایش دادههای درون حافظه سیستم کلاینت، و حتی هدایت کاربر به بخشهای مختلف برنامه در برخی موارد) موتور Ajax خود وارد عمل میشود. اگر موتورAjax برای پاسخ گویی نیاز به چیزی از سمت سرور داشته باشد، (مثلاً اطلاعاتی را از بانک اطلاعاتی بخواهد، کدهای جدیدی برای رابط کاربر لازم داشته باشد و...) بصورت غیر همروند و معمولاً در قالب XML یک درخواست به سرور ارسال میکند. ارسال این درخواست هیچ وقفهای در کار کاربر با برنامه ایجاد نخواهد کرد . همانطور که پیش از این گفته شد، Ajax مجموعهای از چند تکنولوژی است. موتور Ajax از این تکنولوژیها برای انجام وظایف مختلفی که بعهده دارد استفاده میکند.
قسمتهای مهم معماری پیشنهادی Ajax به این قرارند :
رخدادهای کوچک سمت سرور:
اجزای درون یک برنامه وب میتوانند، درخواستهای کوچکی برای سرور ارسال کنند، اطلاعات مورد نیازشان را از سرور دریافت کنند، و هر قسمت از صفحه را که لازم است بر اساس DOM بهروز کنند، بدون اینکه تمام صفحه دوباره بارگذاری و ترسیم شود.
غیر همروند بودن:
درخواستهایی که به سرور ارسال میشود، باعث مسدود شدن صفحهٔ درون مرورگر کلاینت نمیشوند. کاربر میتواند به کار با قسمتهای دیگر برنامه ادامه دهد و هنگامی که پاسخی از سرور دریافت شد، با بهروز کردن رابط کاربر، به کاربر اطلاع داده میشود.
عکسالعمل برای هر رخدادی:
تقریباً میتوانیم برای تمام رخدادهایی که کاربر بوجود میآورد، با سرور ارتباط برقرار کنیم. مرورگرهای مدرن اکثر رخدادهایی را که سیستم عامل اجازه میدهد دریافت میکنند: کلیک کردن موس، حرکت موس روی شی، زدن یک کلید و غیره. هر رخدادی میتواند باعث ارسال یک درخواست به صورت غیر همروند برای سرور شود.
مشکلات Ajaxاگرچه این روش مزایای بسیاری دارد و شکاف بین برنامههای رومیزی و برنامههای وب را بسیار کمتر کردهاست، اما مشکلاتی نیز دارد که هنگام کار به این روش، باید به آنها توجه کرد. یکی از مشکلاتی که در مورد Ajax عنوان میشود، این مسئلهاست که این روش کاربرد کلید Back مرورگرها را مختل کرده و این بر خلاف عادت کابران در محیط وب است. البته برای حل این مسئله راهحلهایی پیشنهاد شده که این مقاله جای بحث در مورد آنها نیست. مشکل دیگر Ajax مسئله تاخیر شبکه ونگرانی در مورد زمان پاسخگویی سیستم است. مسئله تاخیر شبکه در یک برنامه بر اساس Ajax باید با دقت در نظر گرفته شود. تاخیر در بارگذاری اولیه رابط کاربر برنامه، چیزیست که معمولاً برای کاربر قابل درک نیست و باید با دادن پیغامی مناسب، کاربر را از اینکه سیستم درحال بارگذاری، یا انجام فعالیتی و برقراری ارتباطی با سرور است، آگاه کرد. مسئله دیگری که در مورد سیستمهای بر اساس Ajax وجود دارد، استفاده Ajax از JavaScrip است و این مسئله که کاربر میتواند اجازه اجرای javascirpt در مرورگر خود را ندهد. پس باید پیش از شروع بارگذاری موتور Ajax از اجازه داشتن اجرای javascirpt روی مرورگر کلاینت اطمینان پیدا کرد. البته در مورد IE نسخه ۶، به این مسئله نیز باید توجه کرد که شی XMLHttpRequest به صورت ActivX پیاده سازی شده و در نتیجه کاربر باید امکان استفاده از ActivXها را نیز به مرورگر بدهد. مسئله دیگری که باید به آن توجه داشت، این است که کدهای javascirpt برنامه را هر کسی به راحتی میتواند ببیند. در نتیجه بهتر است قسمتهایی از برنامه را که مربوط به امنیت، یا منطق پردازشی برنامه میشود، سمت سرور نگه داریم. به نظر میرسد ساخت سیستمی که ترکیب متوازنی از پردازشهای سمت سرور و یک موتور Ajax قوی در طرف کلاینت باشد، میتواند راهحل بسیار مناسبی باشد.
منبع :
http://fa.wikipedia.org/wiki/%D8%A2%DA%9...%B3%DB%8C)
مجموعه فناوریهای تشکیل دهنده آژاکس عبارتاند از :
نمایش استاندارد با استفاده از XHTML و CSS،
نمایش پویایی و تعاملات با استفاده از (DOM)،
تبادل و دستکاری داده با استفاده از XML و XSLT،
بازیابی دادهها بصورت غیر همروند با استفاده از XMLHttpRequest،
نهایتاً javascirpt برای سرهمبندی همه چیز با هم.
پیشینه
واژه Ajax را برای اولین بار آقای Jesse James Garrett در فوریه سال ۲۰۰۵ در مقاله Ajax: A New Approach to Web Applications استفاده کرد. اگرچه نام Ajax برای نخستین بار در سال ۲۰۰۵ ابداع شد، اما تاریخچه اکثر فناوریهایی که به آژاکس منتهی شدند به حدود یک دهه قبل و ابتکارات مایکروسافت در اسکریپت نویسی از راه دور بازمیگردد. با این حال تاریخچه فناوریهایی برای بارگذاری غیرهمروند محتویات یک صفحه وب، بدون نیاز به بارگذاری دوباره صفحه، به عناصر IFRAME (که در سال ۱۹۹۶ در نسخه ۳ IE ارائه شد) و عناصر LAYER (که در سال ۱۹۹۷ در نسخه ۴ مرورگر Netscape ارائه شد، اما در نسخههای اخیر موزیلا متروکه شدهاست) باز میگردد. هردوی این عناصر، یک خصوصیت src دارند که میتواند یک آدرس URL خارجی را شامل شود و به این ترتیب اگر صفحهای شامل یک کد javascirpt بارگذاری شود که صفحه والد را دستکاری میکند، نتیجهای شبیه Ajax خواهیم داشت.
اسکریپت نویسی از راه دور مایکروسافت (یا MSRS که در سال ۱۹۹۸ مطرح شد) جایگزین مناسبتری برای تکنیکهای گذشته به نظر میرسید. در این روش، دادهها بهوسیله یک Java Applet دریافت میشد، و در سمت کلاینت برقراری ارتباط بهوسیله javascirpt انجام میگرفت. این روش در نسخههای ۴ و بعدتر اینترنت اکسپلورر و نتاسکیپ پشتیبانی میشود.
مایکروسافت در نسخهٔ ۵ اینترنت اکسپلورر شیء XMLHttpRequest را ارائه کرده و برای اولین بار در Outlook Web Access که در Microsoft Exchange Server ۲۰۰۰ ارائه شد، از این روش با استفاده از شی XMLHttpRequest بهره جست.
در نهایت با تغییر و تحولاتی که در این مسیر به وجود آمد و جایگزینی شیء XMLHttpRequest به جای Java Applet، اکنون روشی برای اسکریپ نویسی از راه دور متداول شده که آنرا با عنوان Ajax میشناسیم.
اما آنچه باعث شد پس از این مدت، ناگهان توجهها به سمت Ajax جلب شود، تمرکز شرکت گوگل بر این معماری بود. وبسایتهایی از قبیل Google Map، Gmail و Google Suggest پروژههایی بودند که باعث شد توجه کاربران، چه کاربران عادی و چه کاربران حرفهای، به نحوه کار آنها جلب شود.
Ajax به عنوان معماری جدیدی برای وب
روش کار برنامههای کلاسیک وب چیزی شبیه این است: اکثر تعاملات کاربر با رابط کاربری باعث ارسال یک درخواست به سرور میشود. سرور پردازشهای لازم را انجام داده و سپس یک صفحه HTML به کلاینت بازمیگرداند. این مدل بر اساس هدف اصلی وب، یعنی ایفای نقش یک رسانه برای ابرمتن است. اما آنچه وب را برای ابرمتنها مناسب میکند، الزاماً آن را برای برنامههای نرمافزاری نیز مناسب نخواهد کرد. مسئله اینجاست که برنامههای وب برای کاربرد (Application) بودن طراحی نشدهاند و این باعث شدهاست که در بسیاری موارد کاربر را نادیده بگیرند.
فرض کنید کاربر میخواهد در یک فروشگاه الکترونیک، مشخصات جنس بعدی را ببیند، یا یک جنس را به سبد خرید خود اضافه کند. اتفاقی که میافتد این است که برای انجام هریک از این کارها، چون نیاز است با سرور ارتباط برقرار شود، باید یک درخواست به سرور ارسال شده، سرور پردازشهای لازم را انجام دهد و سپس یک صفحه به عنوان نتیجه بازگرداند. کاربر هم در این میان میتواند با انگشتانش بازی کند!
گرچه ما به صفحات وب، با همین روند انجام فعالیت هاعادت کردهایم، اما واقعا روش کلاسیک برنامههای وب، گرچه از نظر تکنیکی مزایای بسیاری دارند، اما مشکلات عمدهای هم دارند. یکی از عمدهترین مشکلات صفحات وب را میتوان همروند کار کردن آنها دانست. (یعنی همین که وقتی درخواستی از سرور داریم، صفحه وب مقابلمان مسدود شده و باید منتظر بمانیم تا سرور کارش تمام شود و صفحهای به عنوان پاسخ برگرداند).
ایجکس چیست
ایجکس یک تکنولوژی نیست؛ بلکه مجموعهایست از تکنولوژیهایی که هر یک در جای خود تکنولوژی کامل و موفقی هستند، و اکنون به شکل جدیدی در کنار هم قرار گرفته و Ajax را تشکیل دادهاند . تکنولوژیهایی که در Ajax از آنها استفاده میشود عبارتاند از:
نمایش استاندارد با استفاده از XHTML و CSS.
نمایش پویایی و تعاملات با استفاده از Document Object Model (DOM).
تبادل و دستکاری داده با استفاده از XML و XSLT.
بازیابی دادهها بصورت غیر همروند با استفاده از XMLHttpRequest.و javascirpt برای سرهمبندی همه چیز با هم.
در واقع Ajax ترکیبی از تکنولوژیهای فوق است و هیچ چیز جدیدی ارائه نمیدهد. همه شگفتی Ajax در معماریایست که برای ساخت یک برنامه وب، با استفاده از این تکنولوژیها ارائه میدهد.
Ajax ؛ معماری جدیدی برای وب
همانطور که اشاره شد، روش کار برنامههای کلاسیک وب چیزی شبیه این است: اکثر تعاملات کاربر با رابط کاربری باعث ارسال یک درخواست به سرور میشود. سرور پردازشهای لازم را انجام داده و سپس یک صفحه HTML به کلاینت بازمیگرداند. این مدل بر اساس هدف اصلی وب، یعنی ایفای نقش یک رسانه برای ابرمتن است. اما آنچه وب را برای ابرمتنها مناسب میکند، الزاماً آن را برای برنامههای نرمافزاری نیز مناسب نخواهد کرد. پیش از این به معایب روش کلاسیک و متداول اشاره کردیم. اکنون ببینیم Ajax چه پیشنهادی ارائه میدهد. قسمتهای مهم معماری پیشنهادی Ajax به این قرارند: رخدادهای کوچک سمت سرور: اجزای درون یک برنامه وب میتوانند، درخواستهای کوچکی برای سرور ارسال کنند، اطلاعات مورد نیازشان را از سرور دریافت کنند، و هر قسمت از صفحه را که لازم است بر اساس DOM بهروز کنند، بدون اینکه تمام صفحه دوباره بارگذاری و ترسیم شود.
غیر همروند بودن: درخواستهایی که به سرور ارسال میشود، باعث مسدود شدن صفحهٔ درون مرورگر کلاینت نمیشوند. کاربر میتواند به کار با قسمتهای دیگر برنامه ادامه دهد و هنگامی که پاسخی از سرور دریافت شد، با بهروز کردن رابط کاربر، به کاربر اطلاع داده میشود.
عکسالعمل برای هر رخدادی: تقریباً میتوانیم برای تمام رخدادهایی که کاربر بوجود میآورد، با سرور ارتباط برقرار کنیم. مرورگرهای مدرن اکثر رخدادهایی را که سیستم عامل اجازه میدهد دریافت میکنند: کلیک کردن موس، حرکت موس روی شی، زدن یک کلید و غیره. هر رخدادی میتواند باعث ارسال یک درخواست به صورت غیر همروند برای سرور شود.
بجای اینکه مرورگر در آغاز ارتباط تنها یک صفحه HTML را بارگذاری کند، یک موتور Ajax را نیز همراه با صفحه بارگذاری میکند، که به زبان javascirpt نوشته شده و معمولاً مابین فریمهایی در صفحه پنهان شدهاست. این موتور مسئول بهروز کردن رابط کاربریای که کاربر میبیند، و همچنین برقراری ارتباط با سرور در پشت پردهاست. موتور Ajax امکان تعامل کاربر با برنامه را، مستقل از ارتباطات و نقل و انتقالات بین برنامه و سرور میدهد. بنابر این، کاربر دیگر شاهد یک صفحه خالی و ساعت شنی و انتظار برای انجام عملیات سمت سرور نخواهد بود.
آن دسته از فعالیتهای کاربر که باعث یک درخواست HTTP میشدند، اکنون با استفاده از javascirpt موتور Ajax را فراخوانی میکنند. در مورد پاسخ به آن دسته از فعالیتهای کاربر که نیاز به ارسال درخواست به سرور ندارند (مانند اعتبار سنجیهای ساده دادهها، ویرایش دادههای درون حافظه سیستم کلاینت، و حتی هدایت کاربر به بخشهای مختلف برنامه در برخی موارد) موتور Ajax خود وارد عمل میشود. اگر موتورAjax برای پاسخ گویی نیاز به چیزی از سمت سرور داشته باشد، (مثلاً اطلاعاتی را از بانک اطلاعاتی بخواهد، کدهای جدیدی برای رابط کاربر لازم داشته باشد و...) بصورت غیر همروند و معمولاً در قالب XML یک درخواست به سرور ارسال میکند. ارسال این درخواست هیچ وقفهای در کار کاربر با برنامه ایجاد نخواهد کرد . همانطور که پیش از این گفته شد، Ajax مجموعهای از چند تکنولوژی است. موتور Ajax از این تکنولوژیها برای انجام وظایف مختلفی که بعهده دارد استفاده میکند.
قسمتهای مهم معماری پیشنهادی Ajax به این قرارند :
رخدادهای کوچک سمت سرور:
اجزای درون یک برنامه وب میتوانند، درخواستهای کوچکی برای سرور ارسال کنند، اطلاعات مورد نیازشان را از سرور دریافت کنند، و هر قسمت از صفحه را که لازم است بر اساس DOM بهروز کنند، بدون اینکه تمام صفحه دوباره بارگذاری و ترسیم شود.
غیر همروند بودن:
درخواستهایی که به سرور ارسال میشود، باعث مسدود شدن صفحهٔ درون مرورگر کلاینت نمیشوند. کاربر میتواند به کار با قسمتهای دیگر برنامه ادامه دهد و هنگامی که پاسخی از سرور دریافت شد، با بهروز کردن رابط کاربر، به کاربر اطلاع داده میشود.
عکسالعمل برای هر رخدادی:
تقریباً میتوانیم برای تمام رخدادهایی که کاربر بوجود میآورد، با سرور ارتباط برقرار کنیم. مرورگرهای مدرن اکثر رخدادهایی را که سیستم عامل اجازه میدهد دریافت میکنند: کلیک کردن موس، حرکت موس روی شی، زدن یک کلید و غیره. هر رخدادی میتواند باعث ارسال یک درخواست به صورت غیر همروند برای سرور شود.
مشکلات Ajaxاگرچه این روش مزایای بسیاری دارد و شکاف بین برنامههای رومیزی و برنامههای وب را بسیار کمتر کردهاست، اما مشکلاتی نیز دارد که هنگام کار به این روش، باید به آنها توجه کرد. یکی از مشکلاتی که در مورد Ajax عنوان میشود، این مسئلهاست که این روش کاربرد کلید Back مرورگرها را مختل کرده و این بر خلاف عادت کابران در محیط وب است. البته برای حل این مسئله راهحلهایی پیشنهاد شده که این مقاله جای بحث در مورد آنها نیست. مشکل دیگر Ajax مسئله تاخیر شبکه ونگرانی در مورد زمان پاسخگویی سیستم است. مسئله تاخیر شبکه در یک برنامه بر اساس Ajax باید با دقت در نظر گرفته شود. تاخیر در بارگذاری اولیه رابط کاربر برنامه، چیزیست که معمولاً برای کاربر قابل درک نیست و باید با دادن پیغامی مناسب، کاربر را از اینکه سیستم درحال بارگذاری، یا انجام فعالیتی و برقراری ارتباطی با سرور است، آگاه کرد. مسئله دیگری که در مورد سیستمهای بر اساس Ajax وجود دارد، استفاده Ajax از JavaScrip است و این مسئله که کاربر میتواند اجازه اجرای javascirpt در مرورگر خود را ندهد. پس باید پیش از شروع بارگذاری موتور Ajax از اجازه داشتن اجرای javascirpt روی مرورگر کلاینت اطمینان پیدا کرد. البته در مورد IE نسخه ۶، به این مسئله نیز باید توجه کرد که شی XMLHttpRequest به صورت ActivX پیاده سازی شده و در نتیجه کاربر باید امکان استفاده از ActivXها را نیز به مرورگر بدهد. مسئله دیگری که باید به آن توجه داشت، این است که کدهای javascirpt برنامه را هر کسی به راحتی میتواند ببیند. در نتیجه بهتر است قسمتهایی از برنامه را که مربوط به امنیت، یا منطق پردازشی برنامه میشود، سمت سرور نگه داریم. به نظر میرسد ساخت سیستمی که ترکیب متوازنی از پردازشهای سمت سرور و یک موتور Ajax قوی در طرف کلاینت باشد، میتواند راهحل بسیار مناسبی باشد.
منبع :
http://fa.wikipedia.org/wiki/%D8%A2%DA%9...%B3%DB%8C)