تولد ايجكس تقريباً به يك سال پيش برميگردد، اما ميتوان گفت اجزاي تشكيلدهنده آن را سالها پيش مايكروسافت در بخش برنامههاي غيرمتمركز معرفي كرده است. مثلاً تكنيكي براي بارگذاري نامتقارن محتويات صفحات وب و بدون نياز به بارگذاري كل صفحه توسط يكي از اجزاي HTML به نام IFRAME در سال 1996 معرفي شد و يك سال بعد تكنيك قدرتمند LAYER معرفي گشت و توانست صفحات وب را لايهبندي كند. در سال 1998،MSRS يا همان Microsoft Remote Scripting توانست جاي اين دو تكنيك را بگيرد.
MSRS از جاوا اپلت براي دسترسي به اطلاعات و از جاوااسكريپت براي ارتباط با كاربر يا همان كلاينت استفاده ميكرد. مايكروسافت از اين تكنيك در outlook تحت وب ارائه شده در Exchange Server 2000 استفاده كرد و توانست مشتريان زيادي را به سمت خود جلب كند. اما در سال 2002 استفاده از جاوا اپلت جاي خود را به تكنيكي به نام XMLHttpRequest) XHR) داد كه يكي از اركان اصلي موضوع مورد بحث ما در اين مقاله است.
يك سال پس از XHR، يعني در سال 2003 تكنيك Call back در ASP.NET ارائه گرديد و امروزه ايجكس معرفي شده است. Ajax سرنام Asynchronous JavaScript and XML و به معناي تركيب نامتقارن (غيرهمزمان) تكنيك جاوااسكريپت و XML است. اگر برنامهنويس وب باشيد، حتماً تا به حال از جاوااسكريپت و XML استفاده كردهايد و شايد از تركيبي از هر دو فناوري نيز استفاده نمودهايد، اما منظور از تركيب نامتقارن چيست؟ همانطور كه در ابتدا نيز اشاره شد، با استفاده از اين تكنيك ميتوان قسمتي از صفحه وب را بدون اينكه كل صفحه مجدداً نياز به بارگذاري داشته باشد، بروز نمود. البته اين دو كار همزمان انجام نميپذيرند و تركيب اين فناوريها نامتقارن ياAsynchronous است.
ساخت يك اينترفيس كلاينت غني يا به اصطلاح Rich طبيعتاً از طراحي و ساخت يك صفحه وب معمولي مشكلتر است. منظور از كلاينت غني اين است كه كلاينت براي هر كاري نياز به سرور نداشته باشد و بتواند خود جوابگوي اكثر درخواستهاي كاربر باشد. وقتي در اكسل يكCell را پر ميكنيد، ميبينيد عكسالعمل برنامه آني است، ولي آيا ميتوانيم بگوييم كه برنامهاي مانند اكسل يك كلاينت غني است؟
چيست؟
همانطور كه قبلاً نيز توضيح داده شد، ايجكس يك تكنيك است. اما براي استفاده از اين تكنيك، برنامهنويس وب بايد از اصول و مباني ابتدايي اين فناوري مطلع و با اجزاي آن آشنا باشد. اضافه براين، برنامهنويساني كه قصد كار با ايجكس را دارند، بايد تفكر خود را نسبت به برنامههاي تحت وب عوض كنند و سعي نمايند برنامههايي كه مينويسند با اصول و مباني ايجكس (و از همه مهمتر ارتباط مستمر و روان كاربر با برنامه) همخواني داشته باشد و از ابتداييترين مرحله كه طراحي برنامه است، اين اصول را مد نظر قرار دهند.
قلب تپنده ايجكس را XmlHttpRequest تشكيل ميدهد. اين شي (Object) اجازه ميدهد اطلاعات به صورت نامتقارن به صفحات وب منتقل شود.
انتقال نامتقارن يا Asynchronous در واقع توانايي اجراي رويهها (Process) به صورت مستقل از رويههاي ديگر است. در مقابل، معناي انتقال متقارن (Synchronous) اين است كه رويهها به رويههاي ديگر وابسته هستند. مثلاً يك صفحه وب معمولي را تصور كنيد كه داراي چندين عنصر يا المنت و تگ Styleهاي مختلف است؛ اگر در اين صفحه از انتقال اطلاعات به صورت استفاده شود، تگهاي اسكريپت قبل از هر عنصر ديگر در صفحه بايد تحليل شوند. در نتيجه ظاهر شدن هر عنصر در صفحه به اين نكته بستگي دارد كه اسكريپت صفحه بارگذاري شده است يا نه. در حقيقت با اين كار ما فقط يك راه باريك را براي ارتباط بين صفحه وب و مرورگر باز گذاشتهايم. همچنين اگر در صفحه وب از Style Tag و المنتهاي Link در قسمت بالايي و head استفاده كنيم، باعث كندي ارتباط مرورگر با صفحه وب خواهيم شد و اين اجزا بايد تكتك شوند؛ قبل از اينكه بقيه المنتهاي صفحه بتوانند دانلود گردند.
پس از اينكار، المنتهاي موجود در body ميتوانند از كانال ارتباطي وارتباط همزمان استفاده نمايند و پروسه دانلود را با سرعت انجام دهند. بيشتر مرورگرها مانند اپرا از سه تا چهار ارتباط همزمان بين صفحه وب و مرورگر استفاده ميكنند. يعني در واقع سه تا چهار تصوير يا هر المنت ديگري از صفحه ميتوانند به صورت همزمان بار گذاري شوند. در ضمن فراموش نكنيم كه قبل از هر چيز، تگ Head بايد بارگذاري شود و اگر از Cascading Style Sheet) CSS) و
Java Script) JS) نيز استفاده كرده باشيم، سرعت بارگذاري صفحه بسيار پايين ميآيد؛ به ويژه اگر سرعت اينترنت پايين باشد.
در بارگذاري نامتقارن از آن جايي كه هر رويه به صورت نامتقارن و غيروابسته انجام ميشود، روش كار كاملاً متفاوت است و همانطور كه نشان داده خواهد شد، با استفاده از JS، انتقال تمامي اجزاي تگ Head از جمله تمامي متنJS و CSS از طريق شي XmlHttpRequest ميسر خواهد بود.
در اين روش ما از چند راه ارتباطي استفاده ميكنيم و مانند روش متقارن فقط يك راه باريك براي ارتباط بين مرورگر و صفحه وجود ندارد و سرعت بارگذاري صفحه به صورت غير قابل باوري افزايش مييابد. (شكل 2 و 3) در شكل 2، روش متقارن نشان داده شده است. همانطور كه در اين شكل مشاهده ميكنيد براي هر عمل كاربر، اطلاعات به سمت سرور انتقال مييابد و سرور پس از عمليات روي اين اطلاعات آن را به سمت كلاينت منتقل ميكند. همانطور كه در اين شكل مشخص شده است، تمام اين عمليات به صورت متقارن اتفاق ميافتد.
![[تصویر: 11711006011.jpg]](http://www.iranpccenter.com/ht/uploaddir/11711006011.jpg)
شكل 2
![[تصویر: 11711006202.jpg]](http://www.iranpccenter.com/ht/uploaddir/11711006202.jpg)
شكل 3
اما اگر به شكل 3 نگاه كنيد، ميبينيد قسمتي از عمليات در قسمت كلاينت انجام ميپذيرد و در نتيجه سرعت عمليات كاربر بسيار بالا ميرود. اين شكل در حقيقت روش نامتقارن را نشان مي دهد كه ايجكس از آن استفاده مي كند.
امروزه شركتهاي بسياري از تكنيك ايجكس استفاده ميكنند، ولي شايد بتوان گفت كه گوگل از تمامي آنها سبقت گرفته است. اكثر محصولات گوگل كه در يك - دو سال اخير توليد شدهاند (مانند Gmail ،Orkut و
Google Map) از اين تكنيك استفاده ميكنند. به تازگي ياهو و سايتهاي بزرگ ديگر نيز در بعضي از صفحات خود از ايجكس استفاده كردهاند. اگر شما مثلاً يك حساب ايميل gmail داشته باشيد و تا به حال از آن استفاده كرده باشيد، ميتوان گفت كه شما بدون آنكه بدانيد با ايجكس كار كردهايد.
ايجكس نهتنها از لحاظ تكنيكي بسيار عالي عمل ميكند، نشان داده است كه به صورت عملي نيز روي سايتهاي معروف به خوبي كار ميكند؛ بهويژه اينكه، تمامي زبانهاي برنامهنويسي تحت وب مانند PHP، و ASP، از JS و XML از آن پشتيباني مي كنند.
اگرچه براي استفاده از ايجكس نيازي به نصب هيچگونه برنامه خاصي نداريم و شايد بتوان گفت كه ايجكس ميتواند اكثر نيازهاي برنامهنويسان را تأمين نمايد، اما راهحلهاي ديگري نيز هست كه ميتوان با آن كار ايجكس را انجام داد؛ مثل Flash و JWS.
فلش سيستمي است كه ميتوان با استفاده از آن، تصاوير متحرك و حتي فيلم را هم در وب نمايش داد و اين فيلمها حتي ميتوانند در حاليكه در حال دانلودشدن هستند، نمايش داده شوند (به اصطلاح به آن Stream ميگويند).
فلش اين كار را با استفاده از تكنيكي به اسم ActionScript كه چيزي شبيه JS است، انجام ميدهد و حتي ميتواند از كاربر اطلاعات بگيرد و سريع به كاربر جواب دهد. براي استفاده از Flash و ايجاد كلاينتهاي غني (Rich Client) دو كار را ميتوان انجام داد: يكي استفاده از Macromedia's Flex و ديگري، استفاده از برنامه منبع باز Laszlo Suite كه هر دوي اين فناوريها ميتوانند در توليد كلاينتهاي غني با استفاده از فلش به كمك ما بيايد. هر دوي اين Frameworkها از Java2 و J2EE يا همان Java 2 Enterprise Edition در قسمت سرور استفاده ميكنند.
اما JWS يا Java Web Start را فقط ميتوان در برنامههاي تحت وب كه با Java تهيه ميشوند، استفاده كرد. اين برنامهها ميتوانند به عنوان لينك به صفحه اضافه شوند و شبيه ايجكس كارايي داشته باشند؛ البته نه با انعطاف بسيار بالاي اين فناوري. داتنت هم داراي محصولي جديد به No Touch Deployment است كه كاري شبيه JWS انجام ميدهد، اما مشكل اساسياي كه ميتوان براي هر دوي اين تكنيكها نام برد، اين است كه روي هر سيستم كه ميخواهد از آن استفاده كند، بايد نصب شود.
مزاياي Ajax
در اين قسمت مزايا و معايب ايجكس بررسي ميشود. البته از آن جا كه هميشه يافتن معايب يك فناوري جديد باعث ارتقاي آن و رفع اشكالات در آينده خواهد شد، بيشتر روي معايب آن بحث خواهد شد.
دو مزيت مهم ايجكس سرعت آن (به علت غنيتر بودن كلاينت) و استفاده كمتر از امكانات و منابع سرور است. با استفاده از ايجكس، وقتي كه درخواستي به سمت سرور ارسال (post) ميشود، فقط اطلاعات يا پارامترهاي كهfunction در سرور نياز دارد ارسال خواهد شد. مثلاً فرض كنيد در قسمت login وب سايت فقط نام كاربر و رمز عبور (به صورت string و مثلاً صدبايت اطلاعات) به سمت سرور ارسال ميشود و فقط يك مقدار بولي صحيح يا اشتباه (يك بايت) از سمت سرور برگشت داده ميشود. اين بدين معني است كه 101 بايت فرستاده و برگشت داده شدهاست.
حال اگر همين كار را با استفاده از PHP يا ASP.NET انجام دهيد، تمام محتويات صفحه به سمت سرور منتقل و مجدداً بارگذاري ميشوند كه حدود 99 درصد از ايجكس بيشتر ترافيك ايجاد ميكنند. همچنين وقتي از ايجكس استفاده ميكنيم، وب سرور و سرور پايگاه اطلاعاتي هيچ كاري جز اجراي رويه فرا خوانده شده و برگرداندن نتيجه تقاضا انجام نميدهند و در نتيجه سرعت كار با سيستم بالا ميرود و ترافيك سرور ها به حداقل ميرسد.
معايب Ajax
كاربران وب معمولاً انتظار دارند با زدن دكمه Back صفحه قبل بارگذاري شود. در صورتي كه در برنامههاي ايجكس اينگونه نيست. البته راهكارهايي نيز براي حل اين مشكل وجود دارد. از آن جمله مي توان به استفاده IFRAME مخفي در صفحه اشاره كرد. نكته ديگر اينكه، استفاده كنندگان سايت نميتوانند صفحه مورد نظر را Bookmark كنند. براي اين مشكل نيز راهحلهايي مانند استفاده از URL fragment identifier كه همان قسمت بعد از آدرس ميباشد وجود دارد.
از آن جايي كه براي بار اول كه صفحه بارگذاري ميشود XHR اطلاعات را از سرور به كلاينت منتقل مي كند، ممكن است تأخير زماني محسوسي در بالا آمدن صفحه وجود داشته باشد و كاربر چند ثانيه با صفحه محو روبهرو شود. براي حل اين مشكل اين امكان وجود دارد كه پيغامِ <صبر كنيد> به كاربر نمايش داده شود.
براي اجراي ايجكس هيچ نرمافزار يا پلاگين خاصي مورد نياز نيست، اما بايد JS و ActiveX را روي مرورگر فعال نمود. البته ايجكس روي برخي از مرورگرهاي وب عمل نميكند و از آن جايي كه نميدانيم استفادهكننده صفحه وب در كجا و با استفاده از چه مرورگري با سيستم كار مي كند، ممكن است برخي از كاربران از استفاده از ايجكس محروم بمانند.
همچنين برنامهنويسي ايجكس مانند ASP.NET و فناوريهاي ديگر وب كه داراي اساس و قوانين مشخصي هستند نيست. برنامههاي ايجكس نياز به نوشتن كدهاي فراوان دارند و مثلاً براي يك صفحه (مانند مثال استفاده از فناوري ايجكس در نمايش اطلاعات پايگاه اطلاعاتي) بايد چندين اسكريپت طراحي كنيم.
از ديگر معايب اين فناوري همانطور كه قبلاً نيز در قسمت امنيت در ايجكس نيز بحث شد، اين است كه در اين فناوري ارتباط كلاينت و سرور چندان ايمن نيست.
منبع :
مهمان گرامي شما قادر به ديدن لينكها نميباشيد. لطفاً جهت ثبتنام در سايت «اينجـا»كليك كنيد تا لينكها نمايان شوند.
برگرفته شده از سايت
مهمان گرامي شما قادر به ديدن لينكها نميباشيد. لطفاً جهت ثبتنام در سايت «اينجـا»كليك كنيد تا لينكها نمايان شوند.