با استفاده از این فناوریها و با کمک انتقال بستههای کوچک دادهای و اطلاعات از سرور صفحات وب از حالت ایستا خارج میشوند و واکنشهایی مناسب با رخدادها انجام میدهند. ایجکس معماری قدرتمندی است که پویایی و هوشمندی خاصی به برنامههای تحت وب بخشیده است. بر مبنای این معماری، صفحات وب تعامل بهتری با کاربران دارند. علاوه بر این، مهمترین مزیت این معماری این است که دیگر برای انجام هر کاری، لازم نیست صفحه وب دوباره بارگذاری شود و به این شکل ترافیک کاربر بیهوده هدر نمی رود. اصطلاح ایجکس برای اولین بار توسط جسی جیمز گارت در سال 2005 میلادی در مقاله رویکردی جدید در ساخت برنامههای وبمحور استفاده شد. درست است که ایجکس بار در سال ۲۰۰۵ معرفی شد، اما بیشتر فناوریهای به کار گرفته شده در ایجکس بیش از یک دهه قدمت دارند. مایکروسافت در نسخه ۵ اینترنت اکسپلورر شیء XMLHttpRequest را ارائه کرده و برای اولین بار در هاتمیل از آن استفاده کرد. در نهایت با تغییر و تحولاتی که در این مسیر به وجود آمد و جایگزینی شیء XMLHttpRequest به جای جاوا اپلت، اکنون روشی برای اسکریپنویسی از راه دور متداول شده که آن را با عنوان ایجکس میشناسیم. آنچه باعث شد پس از این مدت، ناگهان توجهها به سمت ایجکس جلب شود، تمرکز شرکت گوگل بر این معماری بود. وبسایتهایی از قبیل Google Map، جیمیل و فهرست محصولات گوگل پروژههایی بودند که باعث شدند توجه توسعهدهندگان به سمت این فناوری جلب شود.
شی XMLHttpRequest چیست؟
شی XMLHttpRequest یک توسعه بوده و به عنوان هسته اصلی برنامهنویسی Ajax عمل میکند. مرورگرها به روشهای مختلفی از این شی پشتیبانی میکنند. این شی به صفحات وب اجازه میدهد از طریق کدهای سمت کلاینت درخواستهایی را برای سرویسدهنده ارسال کرده و دادههایی را دریافت کنند. دادههای دریافتی توسط این شی پردازش میشوند. از خصوصیات جالب میتوان به محدود نبودن به XML و توانایی کار با انواع مختلف اسناد اشاره کرد.
معماری خاص ایجکس
روش کار برنامههای کلاسیک وب به این صورت است که ابتدا درخواستی از سمت کاربر برای سرور ارسال میرشود. سرور پردازشهای لازم را انجام داده و سپس یک صفحه HTML به کلاینت بازمیگرداند. این مدل بر اساس هدف اصلی وب، یعنی ایفای نقش یک رسانه برای ابرمتن است. اما آنچه وب را برای ابرمتنها مناسب میکند، الزاماً آن را برای برنامههای نرمافزاری نیز مناسب نخواهد کرد. فرض کنید کاربر میخواهد در یک فروشگاه الکترونیک، مشخصات جنس بعدی را ببیند، یا یک جنس را به سبد خرید خود اضافه کند. اتفاقی که میافتد این است که برای انجام هریک از این کارها، چون نیاز است با سرور ارتباط برقرار شود، باید یک درخواست به سرور ارسال شده، سرور پردازشهای لازم را انجام دهد و سپس یک صفحه به عنوان نتیجه بازگرداند. درست است که کاربران به یک چنین مکانیزمی عادت کردهاند، اما روش کلاسیک برنامههای وب در کنار مزایا، معایبی نیز دارند. یکی از عمدهترین مشکلات صفحات وب را میتوان همروند کار کردن آنها دانست.
آیا ایجکس یک فناوری است؟
ایجکس یک فناوری نیست؛ بلکه مجموعهای متشکل از فناوریهایی است که هر کامل هستند و اکنون به شکل جدیدی در کنار هم قرار گرفته و ایجکس را ساخته اند. اصلیترین نکتهایی که در ارتباط با ایجکس باید به آن اشاره کنیم این است که AJAX یک زبان برنامهنویسی یا یک فناوری نیست. AJAX را مجموعهای از فناوریهایی که در طراحی برنامههای وب استفاده میشوند به وجود آوردهاند. فناوریهای بهکار رفته در AJAX به شرح زیر هستند.
XML : وظیفه ذخیرهسازی و تبادل دادهها را برعهده دارد. البت توجه داشته باشید که امکان بهکارگیری سایر فناوریهای وجود همچون JSON نیز وجود دارد. توسعهدهندگان بیشتر از JSON استفاده میکنند.
XMLHttpRequest object : به دادهها اجازه میدهد به صورت غیرهمزمان به کار گرفته شوند.
XSLT : محتوای درون XML را به XHTML تغییر میدهد.
XHTML : در ارتباط با رابط کاربری به کار گرفته میشود.
CSS :برای سبکبندی محتوای فرمت XHTML درون برنامه کاربردی استفاده میود.
Javascript : وظیفه یکپارچهسازی را عهدهدار است. جاوااسکرپیت اجازه بارگذاری و دستکاری دادهها و مقداردهی اولیه ارتباط میان سرویسگیرنده و سرویسدهنده را عهدهدار است. به عبارت دیگر همه عناصر را به یکدیگر گره میزند.در واقع ایجکس ترکیبی از تکنولوژیهای فوق است و هیچ چیز جدیدی ارائه نمیدهد. همه شگفتی ایجکس در معماری هست که برای ساخت یک برنامه وب، با استفاده از این تکنولوژیها ارائه میدهد. ای جکس یک شیوه جهت طراحی و توسعه وبگاهها بوده که جهت بالا بردن قدرت تعامل Interface سایت با کاربر و بالا بردن کیفیت عملکرد و قابلیتهای سایت مورد استفاده قرار میگیرد. Ajax به صورت Client Side و با به کارگیری JavaScript و CSS مورد استفاده قرار میگیرد. امروزه در مبحث طراحی صفحات HTML تکنولوژی Ajax عامل حیات صفحه و ارضاء کاربر در مواجهه با واسط (Interface) تلقی میشود.
یک معماری قدرتمند برای وب امروزی
آنچه وب را برای ابرمتنها مناسب میکند، الزاماً آن را برای برنامههای نرمافزاری نیز مناسب نخواهد کرد. پیش از این به معایب روش کلاسیک و متداول اشاره کردیم. قسمتهای مهم معماری ایجکس به شرح زیر هستند:
غیر همزمانی: درخواستهایی که به سرور ارسال میشود، باعث مسدود شدن صفحهٔ درون مرورگر کلاینت نمیشوند. کاربر میتواند به کار با قسمتهای دیگر برنامه ادامه دهد و هنگامی که پاسخی از سرور دریافت شد، با بهروز کردن رابط کاربر، به کاربر اطلاع داده میشود.
واکنش به رویدادها: تقریباً میتوانیم برای تمام رخدادهایی که کاربر به وجود میآورد، با سرور ارتباط برقرار کنیم. مرورگرهای مدرن اکثر رخدادهایی را که سیستمعامل اجازه میدهد دریافت میکنند: کلیک کردن موس، حرکت موس روی شیء، زدن یک کلید و غیره. هر رخدادی میتواند باعث ارسال یک درخواست به صورت غیر همروند برای سرور شود. بهجای اینکه مرورگر در آغاز ارتباط تنها یک صفحه HTML را بارگذاری کند، یک موتور ایجکس را نیز همراه با صفحه بارگذاری میکند، که به زبان جاوااسکریپت نوشته شده و معمولاً مابین فریمهایی در صفحه پنهان شدهاست. این موتور عامل بهروز کردن رابط کاربریای که کاربر میبیند، و همچنین برقراری ارتباط با سرور در پشت پرده است. موتور Ajax امکان تعامل کاربر با برنامه را، مستقل از ارتباطات و نقل و انتقالات بین برنامه و سرور میدهد؛ بنابراین، کاربر دیگر شاهد یک صفحه خالی و ساعت شنی و انتظار برای انجام عملیات سمت سرور نخواهد بود.
آن دسته از فعالیتهای کاربر که باعث یک درخواست HTTP میشدند، اکنون با استفاده از جاوااسکریپت موتور ایجکس را فراخوانی میکنند. در مورد پاسخ به آن دسته از فعالیتهای کاربر که نیاز به ارسال درخواست به سرور ندارند (مانند اعتبار سنجیهای ساده دادهها، ویرایش دادههای درون حافظه سیستم کلاینت، و حتی هدایت کاربر به بخشهای مختلف برنامه در برخی موارد) موتور ایجکس خود وارد عمل میشود. اگر موتور ایجکس برای پاسخ گویی نیاز به چیزی از سمت سرور داشته باشد، (مثلاً اطلاعاتی را از بانک اطلاعاتی بخواهد، کدهای جدیدی برای رابط کاربر لازم داشته باشد و…) به صورت غیر همروند و معمولاً در قالب XML یک درخواست به سرور ارسال میکند. ارسال این درخواست هیچ وقفهای در کار کاربر با برنامه ایجاد نخواهد کرد.
ایجکس چه معایبی دارد؟
اگرچه ایجکس مزایای زیادی را ارائه میکند و شکاف بین برنامههای رومیزی و برنامههای وب را بسیار کمتر کردهاست، اما مشکلاتی نیز دارد که هنگام کار به این روش، باید به آنها توجه کرد. یکی از مشکلاتی که در مورد ایجکس عنوان میشود، این مورد است که این روش کاربرد کلید Back مرورگرها را مختل کرده و این بر خلاف عادت کاربران وب است. البته برای حل این مورد راهحلهایی پیشنهاد شده است. مشکل دیگر ایجکس تأخیر در زمان پاسخگویی سیستم است. مورد تأخیر شبکه در یک برنامه بر اساس Ajax باید با دقت در نظر گرفته شود. تأخیر در بارگذاری اولیه رابط کاربر برنامه، عاملی است که معمولاً برای کاربر قابل درک نیست و باید با دادن پیغامی مناسب، کاربر را از اینکه سیستم در حال بارگذاری، یا انجام فعالیتی و برقراری ارتباطی با سرور است، آگاه کرد. مورد دیگری که در مورد سیستمهای بر اساس Ajax وجود دارد، استفاده ایجکس از جاوااسکریپت است و این مورد که کاربر میتواند اجازه اجرای جاوااسکریپت در مرورگر خود را ندهد. پس باید پیش از شروع بارگذاری موتور ایجکس از فعال بودن اجرای جاوااسکریپت روی مرورگر کلاینت اطمینان پیدا کرد. مورد دیگری که باید به آن توجه داشت، این است که کدهای جاوااسکریپت برنامه را هر کسی به راحتی میتواند ببیند. در نتیجه بهتر است قسمتهایی از برنامه را که مربوط به امنیت، یا منطق پردازشی برنامه میشود، سمت سرور نگه داریم.