واژه Ajax سرنام عبارت Asynchronous JavaScript and XML و به معني <جاوا اسكريپت و XML آسنكرون يا نامتقارن> است. ايجكس فناوري جديدي است كه به كمك آن ميتوان اينترفيس يك برنامه تحت وب را طوري ساخت كه وقتي كاربر روي دكمه يا لينكي كليك ميكند، كليه عمليات ارسال اطلاعات و دريافت نتايج در پشت صحنه انجام شود و فقط آن قسمت از اينترفيس كه قرار است اطلاعات جديد را به نمايش درآورد تغيير كند بدون اينكه تمام صفحه از نو بارگذاري شود. در اين مقاله ميخواهيم اين فناوري نوين و تحول آفرين را از جنبههاي مختلف مورد بررسي قرار دهيم و با مباني فني آن آشنا شويم.
آيا از دنياي كلاسيك وب خسته شدهايد؟ آيا مايليد با چهره جديد وب آشنا شويد؟ آيا ميخواهيد با جديدترين فناوري دنياي برنامهنويسي وب آشنا شويد؟ براي پرواز آماده باشيد! مقصد ما يكي از استانهاي كشور جديد التاسيس Web 2.0 است. ميخواهيم با هم به دنياي هيجان انگيز Ajax سفر كنيم.
در سرزمين ايجكس چهره سايتهاي وب مانند نرمافزارهاي روميزي به نظر ميرسند. اكنون وب خانه دوم اطلاعات ديجيتالي شما است. حالا كه با داشتن يك خط اينترنت پرسرعت ميتوانيد در تمام طول شبانه روز به اينترنت متصل باشيد، وقت آن فرارسيده كه نرمافزارهاي تحت وب نيز متحول شوند و كاركرد و قابليتي مانند نرمافزارهاي روميزي داشته باشند. به اين ترتيب فاصله و تفاوت ميان نرمافزارهاي دسكتاپ و نرمافزارهاي آنلاين ناپديد ميشود. ديگر لازم نيست وقتي روي دكمه submit كليك ميكنيد منتظر بارگذاري مجدد صفحه وب بمانيد. همهچيز فورا و به سرعت اتفاق ميافتد.
تصور كنيد به صورت آنلاين در حال خواندن نامههاي الكترونيكي خود در يكي از سايتهاي ياهو يا جيميل هستيد. فورا يادتان ميافتد كه بايد به كسي نامهاي بفرستيد. لازم نيست صفحهاي كه در حال مطالعه آن هستيد را ترك كنيد و يا با استفاده از ترفندهايي مانند رايت كليك و فرمان Open in New window يك پنجره جديد بازكنيد و منتظر بارگذاري مجدد صفحه شويد. شما فقط ميخواهيد يك پنجره جديد باز كنيد كه داخلش نامه خود را تايپ كنيد.
چه نيازي به بارگذاري مجدد آنهمه اطلاعات جزئي و جنبي (مانند لوگوي سايت، نام آيدي شما و ...) است كه در اطراف اطلاعات اصلي به نمايش درآمدهاند؟ ايجكس همين كار را براي شما ميكند. وقتي كه نامه خود را ارسال كرديد نيز فقط همان پنجره بسته ميشود و چند بايت براي سايت مقصد ارسال ميشود و اينترفيس صندوق پستي نامههاي شما بدون اينكه تكان بخورد و يا دوباره به نمايش درآيد همچنان پيش چشم شما و منتظر فرمان بعدي است. در دنياي ايجكس دكمههاي Back و Forward مرورگر معني و كاربرد خود را تقريبا از دست ميدهند.
همه دكمههاي مورد نياز داخل اينترفيس سايت موجود است. برخلاف جهان Web 1.0، در دنياي ايجكس گشت و گذار در وب لزوما خطي نيست. اگر ميخواهيد از يك فروشگاه الكترونيكي خريد كنيد، ميتوانيد محصول مورد نظرتان را به روش drag&drop داخل سبد بيندازيد و با فشردن دكمه نهايي، خريد خود را ثبت كنيد. پيغام ثبت موفقيت آميز سفارش براي شما نمايش داده ميشود و كار تمام است. لازم نيست از صفحه الف به صفحه ب و سپس از آنجا به صفحه ج برويد.
ايجكس چيست؟
اين واژه را اولين بار جسي جيمز گرت (Jesse James Garrett)، برنامهنويسي از شركت Adaptive Path در مقالهاي با عنوان <ايجكس: رهيافت جديدي در برنامههاي تحت وب> بهكار برد. ايجكس سرنام عبارت Asynchronous JavaScript and XML و به معني تركيب نامتقارن جاوا اسكپريپت و XML است.
چرا نامتقارن؟ چون تركيب اين دو فناوري به شما كمك ميكند قسمتي از يك صفحه وب را بروز كنيد بدون اينكه لازم باشد <همزمان يا متقارن> با اين عمل، كل آن صفحه از نو بارگذاري شود. اين عمليات توسط شيء و فرماني به نام XMLHttpRequest انجام ميشود كه سالها پيش، هنگام معرفي نسخه 4 مرورگر اينترنت اكسپلورر وارد اين نرمافزار شده و به دليل قابليتهاي جالبي كه دارد، اين روزها تمام مرورگرهاي معروف و قدرتمند وب مانند فايرفاكس و اپرا از آن پشتيباني ميكنند. به كمك اين شيء ميتوانيد برنامههايي به زبان جاوا اسكريپت بنويسيد كه در پشت صحنه يك صفحه وب اطلاعاتي را به سرور بفرستند و دادههايي را دريافت كنند.
ايجكس اساسا رهاوردي از دنياي جاوا است و بار ديگر فناوري جاوا و زبان اسكريپتنويسي وابسته به آن را در كانون توجه برنامهنويسان قرار داده است. اما خبر خوب اينست كه چون همه پلتفرمهاي برنامهنويسي وب از قبيلPHP ،ASP.NET و JSP از جاوا اسكريپت و XML پشتيباني ميكنند، فناوري ايجكس در همه اين پلاتفرمها پيادهسازي شده و حتي جالب است بدانيد كه تعداد ماژولهاي ايجكس نوشته شده براي دات نت و PHP بيشتر از انواع جاوايي آن است.
مايكروسافت كه سالها پيش از شيء XMLHttpRequest در نرمافزار Outlook Web Access استفاده كرد و جزو اولين ترويجدهندگان اين تكنيك به شمار ميرود اخيرا نرمافزاري به نام Atlas معرفي كرده كه مخصوص برنامهنويسي مبتني بر ايجكس است. اما چون ايجكس بر اساس جاوا كار ميكند بديهي است كه جنبش اپن سورس و خيل عظيم برنامهنويسان جاوا نيز بيكار نمانده و ميكوشند تا دير نشده Ajax را به قلب دنياي نرمافزارهاي آزاد بياورند و از انحصاري شدن آن جلوگيري كنند تا اين فناوري به استاندارد جديد وب تبديل شود. به نظر ميرسد كه آنها موفق بودهاند زيرا حتي پيادهسازيهاي دات نتي ايجكس نيز اغلب به صورت اپن سورس است.
مكانيزم Ajax
جسي جيمز گرت در مقاله معروف خود شيوه عمل ايجكس را چنين توضيح ميدهد: هر عمل از سوي كاربر كه به طور معمول موجب توليد يك تقاضاي HTTP شود به جاي ارسال مستقيم به وب، موجب فراخواني يك فرمان جاوا اسكريپتي و هدايت آن به موتور ايجكس ميشود. هر نوع پاسخي به كاربر از سوي سرور (مانند كنترل صحت دادههاي وارد شده در يك فرم ورود اطلاعات، ويرايش اطلاعات در حافظه و حتي برخي از انواع هدايت كاربر در سايت) نيازي به ارسال يك صفحه جديد به سمت كاربر ندارد و تنها همان قسمتي كه بايد تغيير كند بروز ميشود.
به طور سنتي وقتي كاربر فرمي را پرميكند و به سايت ارسال ميكند، وب سرور با بارگذاري مجدد يا تازهسازي صفحه (refresh) و نمايش يك پيغام و يا نتيجه پردازش اطلاعات، به او پاسخ ميدهد و به همين دليل هم وقت سرور براي ارسال كل محتواي آن صفحه گرفته ميشود و هم كاربر بايد براي دريافت كامل آن صفحه منتظر بماند؛ كه نتيجه آن كاهش بازده سرور، مصرف پهناي باند و تلف شدن وقت و هزينه است. اما بهكارگيري تكنيك ايجكس اين مشكلات را به طرز قابلملاحظهاي كاهش ميدهد.
واژه Ajax نام عبارت Asynchronous JavaScript and XML و به معنی <ترکیب نامتقارن جاوا اسکریپت و>XML است. ماهیت صفحات وب و پروتکل HTTP به گونهای است که به طور معمول وقتی درحال وبگردی هستیم، به ازای هر کنش و واکنش میان ما و سایتی که در حال کار با آن هستیم، کل یک صفحه وب از نو بارگذاری و تازهسازی (refresh) میشود.
ایجکس فناوری جدیدی است که تغییر محسوسی را در این سناریو به وجود میآورد؛ به این ترتیب که به جای بارگذاری مجدد کل صفحه، فقط قسمتی تغییر میکند که قرار است اطلاعات جدید را به نمایش درآورد و کلیه عملیات ارسال اطلاعات و دریافت نتایج در پشت صحنه انجام میشود. در نتیجه هیچگاه صفحه سفید و خالی وب در فواصل کنش و واکنشهای هنگام کار با مرورگر دیده نمیشود و احساسی مشابه تجربه کار با یک نرمافزار دسکتاپ به کاربر دست میدهد.
اصطلاح Ajax را اولین بار کارشناسی از شرکت Adaptive Path به نام جسی جیمزگرت در مقالهای با عنوان <ایجکس؛ رهیافت جدیدی در برنامههای تحت وب> مطرح کرد و خیلی سریع مورد استقبال گسترده برنامه نویسان وب در سراسر جهان قرارگرفت. اعتقاد عمومی این است که تاریخچه بهکارگیری تکنیک مذکور به پیدایش نرمافزار Outlook WebAccess و استفاده از فرمان XMLHttpRequest که مایکروسافت ابداع کرده و در نرمافزار اینترنت اکسپلور بهکار رفته است، برمیگردد. اما امروزه اغلب مرورگرهای مهم و شناختهشده (از جمله فایرفاکس) از آن پشتیبانی میکنند و دیگر یک فناوری محدود به اینترنت اکسپلورر نیست.
با این همه مزایای ایجکس به همین موارد ختم نمیشود. تصور کنید وقتی در طول شبانه روز میلیاردها بار فرآیند بارگذاری مجدد صفحات وب تعاملی در شبکه اینترنت تکرار میشود، استفاده از ایجکس چگونه موجب آزاد شدن پهنایباند اینترنت و در نتیجه میلیاردها دلار صرفهجویی اقتصادی در این زمینه میشود و این به نوبه خود انقلابی در عرصه وب و فضای سایبر به شمار میرود. این تحول در شرایطی اتفاق میافتد که همزمان فناوریهای اینترنت پرسرعت همچون ADSL به شدت در حال رشد هستند.
حال تصور کنید اگر فناوری ایجکس در مقیاس گستردهای مورد استفاده نرمافزارهای تحت وب قرارگیرد. آنگاه افزایش سرعت کار با اینترنت چند برابر خواهد شد. چنین تحولی میتواند اینترنت را به کامپیوتر دوم کاربران تبدیل کند. به گونهای که برای آنها اجرای یک نرمافزار از روی وب تفاوت محسوسی با اجرای آن از روی کامپیوتر دسکتاپ نداشته باشد. در این صورت ممکن است واقعا بخش مهمی از توان پردازشی نرمافزارها، چه از نوع دسکتاپ و چه از نوع تحت وب به سیستمهای موسوم به Web Service واگذار شود. از این رو کسانی که مبتکر و مشوق ایده وب سرویس بودهاند، این روزها انگیزه تازهای برای سرعت بخشیدن به این فناوری پیدا کردهاند و تلاش میکنند دو فناوری ایجکس و وب سرویس را بهیکدیگر پیوند دهند و راهکارهای تازهای بیافرینند.
از مهمترین سایتهایی که از اژاکس استفاده میکنند میتوان به یاهو و گوگل اشاره کرو .همانطور که احتمالا دیده اید بدون نیاز به REFRESH اگر میل تازه ای داشته باشید در صفحه ظاهر میشود.که کار را بسیار ساده کرده است.
طراحی وب به روش Ajax
اينترنت و مهمترين سرويس آن وب علاوه بر اين كه حيات بشری را در هزاره سوم دستخوش تحولات فراوانی كرده است ، توانسته است منشاء تحولات گسترده ای در ساير حوزه های فناوری گردد . در واقع ، تحول در زندگی بشريت مديون پيشرفت در ساير حوزه های فناوری است . يكی از اين حوزه ها ، صنعت نرم افزار است .
برای آشنائی با اين تحول بد نيست مروری سريع داشته باشيم به گذشته وب و نرم افزار تا از اين رهگذر بتوانيم ضرورت ايجاد فناورهای جديدی نظير Ajax ( برگرفته شده از Asynchronous JavaScript And XML ) را بهتر درك كنيم .
مروری بر وب ، نرم افزار و تاثير متقابل آنها بر يكديگر
موجودات جديدی كه ما امروزه آنها را با نام برنامه های وب می شناسيم ، ماحصل تاثير وب بر نرم افزار و رشد رو به فزاينده استفاده از اينترنت در متن زندگی ، ماحصل تاثير نرم افزار بر وب است . اجازه دهيد ببينيم موضوع از كجا و با چه مختصاتی شروع گرديد و هم اينك در چه وضعيتی به سر می بريم .
وب ايستا :
زمانی كه تيم . برنرز لی در سال 1990 اولين پيشنهاد خود در رابطه با وب را ارائه كرد ، ايده كار بسيار ساده بود : ايجاد يك شبكه از اطلاعات متصل شده به يكديگر با استفاده از ابرمتن ها و URIs ( برگرفته شده از Uniform Resource Identifiers ) .
وب در آغاز به عنوان يك رسانه اشتراك اطلاعات مطرح گرديد تا از طريق آن دانشمندان و محققين بتوانند دانش و اطلاعات را بين خود به اشتراك گذاشته و نتايج تحقيقات را با يكديگر مبادله نمايند . ارائه دهند گان با استفاده از يك استاندارد مستند سازی ، اطلاعات خود را تهيه و آنها را به مخاطبان خود ارائه می كردند .
در آغاز برای استاندارد مستند سازی از ابزاری كه در آن زمان خود هنوز استاندارد نشده بود استفاده می گرديد . HTML ، ابزاری است كه با بكارگيری مجموعه ای از تگ ها ، استاندارد لازم جهت نمايش يك مستند در نرم افزارهای نمايش دهنده ( مرورگرها ) را فراهم می نمايد . نرم افزارهای نمايش دهنده ، مجهز به مفسرهائی جهت تفسير تگ ها و نمايش اطلاعات موجود در مستند بر اساس تعاريف از قبل تعريف شده شدند . در آن زمان كه به سال های ابتدائی دهه 90 ميلادی برمی گردد ، چيزی با نام برنامه های وب وجود نداشت و وب به عنوان رسانه ای جهت اشتراك و مبادله اطلاعات مطرح بود . تمامی تعاملات در عرصه وب محدود به درخواست يك مستند توسط سرويس گيرنده و ارسال آن توسط سرويس دهنده بود .
وب پويا با تمركز بر روی پردازش های سمت سرويس گيرنده :
در ادامه ، نياز به انجام برخی پردازش های اوليه مطرح گرديد . با توجه به اين كه اينترنت از يك بستر سرويس گيرنده و سرويس دهنده ( client server based) به منظور دريافت درخواست كاربر و پاسخ به آن استفاده می كرد ، طراحان و پياده كنندگان برای تحقق پردازش ها بر روی دو گزينه متمركز شدند :
انجام پردازش ها در سمت سرويس گيرنده و يا سمت سرويس دهنده .
در آغاز ، برای انجام پردازش ها بر روی سرويس گيرنده متمركز شدند . با اين هدف كه بتوان پردازش های مورد نياز را ( با حوزه ای كه در آن زمان تعريف شده بود ) ، در سمت سرويس گيرنده انجام داد . برای تحقق خواسته فوق لازم بود كه بستر و ابزارهای لازم در بطن مرورگر ها ايجاد گردد .
ظهور فناورهائی نظير Html-DOM ، جاوااسكريپت ، CSS ( برگرفته شده از cascading style sheets ) و DHTML ( برگرفته شده از Dynamic HTML ) از جمله مهمترين تلاش های انجام گرفته در آن زمان برای تحقق پردازش ها در سمت سرويس گيرنده بود . برای آشنائی بيشتر با تلاش های انجام گرفته در آن زمان بد نيست مروری سريع داشته باشيم به آنچه طی ساليان گذشته در عرصه وب اتفاق افتاده است .
عرضه جاوا اسكريپت :
Netscape Navigator اولين مرورگر وبی بود كه پس از طراحی و پياده سازی موفقيت آميز توانست به عنوان كاتاليزوری در رشد وب و عرضه فناوری های مرتبط با آن نقش بسيار مثبتی را ايفاء كند . اغلب سازمان ها و شركت ها از مرورگر فوق به عنوان معيار استاندارد خود برای پياده سازی فناوری های جديد استفاده می كردند . يكی از اين فناوری ها ، جاوا اسكريپت بود .
جاو ااسكريپت توسط Brendan Eich از نت اسكيپ ايجاد و نسخه شماره دو آن در سال 1995 عرضه گرديد .
برای اولين مرتبه ، پياده كنندگان قادر به ايجاد صفحات وبی شدند كه می توانست با كاربر تعامل برخورد نمايد . استفاده از جاوا اسكريپت برای معتبر سازی داده در سمت سرويس گيرنده و حذف برخی مبادلات غيره ضروری بين سرويس گيرنده و سرويس دهنده از جمله مهمترين دستاورد بكارگيری جاوا اسكريپت در آن زمان بود .
بدين ترتيب نطفه پردازش های ساده در سمت سرويس گيرنده به كمك جاوا اسكريپت بسته شد . قابليت فوق در زمانی كه اكثر كاربران اينترنت از طريق يك مودم با سرعت 8 . 28 ( Kbps ) به شبكه وصل می شدند ، باعث می شد كه تعداد دفعاتی كه كاربران مجبور به انتظار برای دريافت يك پاسخ از سرويس دهنده باشند ، كاهش يابد . تحول فوق اولين مرحله جدی به سمت رويكرد Ajax در آن زمان بود .
طراحی وب به روش آژاکس
ايجاد فريم :
در نسخه اوليه HTML با هر سند به عنوان يك موجوديت رفتار می شد تا اين كه در نسخه شماره چهار فريم ها معرفی گرديدند .
با استفاده از فريم ها نمايش يك صفحه وب می توانست مشتمل بر بكارگيری مجموعه ای از ساير صفحات وب باشد . ايده فوق يك اصلاح ساختاری اساسی در خصوص نحوه نمايش يك صفحه وب بود .
Netscape Navigator 2.0 اولين مرورگری بود كه از فريم ها و جاوا اسكريپت حمايت كرد . اين يك مرحله جدی به سمت رشد و توسعه Ajax در آن زمان بود .
با توجه به اين كه يك فريم ، يك درخواست مجزاء را برای سرويس دهنده ايجاد می كرد ، قابليت كنترل يك فريم و محتويات آن با استفاده از جاوا اسكريپت دنيای جديدی را پيش روی طراحان و پياده كنندگان صفحات وب قرار داد .
همه چيز درباره Ajax
مدیران انجمن: Mahdi Mahdavi, MASTER, شوراي نظارت

- پست: 433
- تاریخ عضویت: یکشنبه ۱۲ اردیبهشت ۱۳۸۹, ۱:۴۸ ب.ظ
- سپاسهای ارسالی: 733 بار
- سپاسهای دریافتی: 1344 بار
Re: همه چيز درباره Ajax
روش فريم مخفی :
به موازات اين كه پياده كنندگان درگير نحوه استفاده از فريم ها شدند ، يك روش جديد با هدف تسهيل در امر ارتباط بين سرويس گيرنده و سرويس دهنده مطرح گرديد .
روش فريم مخفی شامل تنظيم يك frameset با طول و يا عرض صفر پيكسل است كه هدف اساسی آن انجام فرآيند مقداردهی اوليه با سرويس دهنده بود .
فريم مخفی شامل يك فرم HTML با فيلدهای خاصی است كه می توانست بطور اتوماتيك توسط جاوا اسكريپت تكميل و برای سرويس دهنده ارسال گردد . زمانی كه فريم از سرويس دهنده مراجعت می كرد ، يك تايع ديگر جاوا اسكريپت فراخوانده می شد تا اعلام نمايد كه داده از سمت سرويس دهنده برگردانده شده است .
روش فريم مخفی ، اولين مدل درخواست و پاسخ غيرهمزمان را برای برنامه های وب به ارمغان آورد ( اولين رويكرد به مدل ارتباطی Ajax ) .
Dynamic HTML و DOM :
تا سال 1996 ، وب يك دنيای ايستا را تجربه می كرد و برای تعامل محدود با كاربر از جاوا اسكريپت و روش فريم های مخفی استفاده می گرديد . همچنان امكان تغيير در محتويات يك صفحه بدون نياز به load مجدد آن از سرويس دهنده وجود نداشت .
در ادامه IE 4.0 ( برگرفته شده از Internet Explorer ) توسط شركت مايكروسافت ارائه گرديد . در اين نسخه علاوه بر بكارگيری اكثر فناوری های استفاده شده در Netscape Navigator ، يك ويژگی مهم ديگر با نام DHTML ( برگرفته شده از Dynamic HTML ) نيز ارائه گرديد . DHTML به پياده كنندگان اجازه می داد تا بتوانند هر بخشی از يك صفحه مستقر شده در حافظه سرويس گيرنده را با استفاده از جاوا اسكريپت تغيير دهند .
DHTML به همراه عرضه غيره منتظره CSS ( برگرفته شده از cascading style sheets ) به وب و نحوه پياده سازی صفحات وب يك نيروی تازه داد. پياده كنندگان توانستند با تركيب DHTML و روش فريم های مخفی هر بخشی از يك صفحه را با استفاده از اطلاعات دريافت شده از سرويس دهنده refresh نمايند . ويژگی فوق در زمان خود توانست يك تحول بزرگ در عرصه وب را ايجاد نمايد .
در ادامه ، DOM ( برگرفته شده از Document Object Model ) ارائه گرديد . برخلاف DHTML كه صرفا" امكان تغيير بخش هائی خاص از يك صفحه وب را فراهم می كرد ، DOM دارای يك هدف بلندپروازانه ديگر بود . هدف DOM ارائه يك ساختار برای تمامی صفحه بود . انجام عمليات و يا پردازش بر اساس ساختار فوق ، امكان تغيير يك صفحه را فراهم می آورد . اين مرحله بعدی به سمت Ajax بود
Iframes :
با اين كه روش فريم مخفی بطور غيرقابل پيش بينی متداول گرديد ، ولی دارای چالش های مختص به خود بود . افرادی می بايست زمان زيادی را صرف نوشتن يك frameset می كردند تا شرايط استفاده از فريم های مخفی فراهم گردد . زمانی كه عنصر </ iframe > در سال 1997 و به عنوان بخشی از نسخه رسمی HTML 4.0 ارائه گرديد ، يك قدم اساسی ديگر به سمت انقلاب بر روی وب حركت شد .
در مقابل تعريف frameset ، پياده كنندگان قادر به استفاده از فريم ها در هر مكانی از صفحه شدند . بدين ترتيب پياده كنندگان توانستند از iframe نامرئی ( با بكارگيری قابليت های CSS ) در يك صفحه استفاده نمايند و شرايط عملياتی لازم جهت مبادله داده بين سرويس گيرنده و سرويس دهنده را فراهم نمايند .
زمانی كه نسخه نهائی DOM در IE 5.0 و Netscape 6.0 پياده سازی گرديد ، قابليت ايجاد فريم ها به صورت پويا نيز فراهم گرديد . در چنين حالتی از يك تابع جاوا اسكريپت به منظور ايجاد يك iframe ، ايجاد يك درخواست و دريافت پاسخ ( جملگی بدون نياز به اضافه كردن تگ های HTML اضافه در يك صفحه ) استفاده می گرديد . اين روش معروف به روش iframe مخفی گرديد .
XMLHttp :
پياده كنندگان مرورگر شركت مايكروسافت پس از مشاهده عموميت استفاده از روش هائی نظير فريم مخفی و iframe مخفی ، تصميم گرفتند يك ابزار بهتر جهت تعامل بين سرويس دهنده و سرويس گيرنده را ارائه نمايند . اين ابزار به شكل يك اكتيوايكس و با نام XMLHttp در سال 2001 ارائه گرديد .
زمانی كه مايكروسافت حمايت خود از XML را از طريق يك كتابخانه با نام MSXML آغاز كرد ، شی XMLHttp نيز به همراه آن ارائه گرديد .
با اين كه شی فوق به همراه خود نام XML را يدك می كشيد ولی چيزی بمراتب بيشتر از روشی برای انجام عمليات بر روی داده XML بود . شی فوق همانند يك درخواست HTTP بود كه می توانست توسط جاوا اسكريپت كنترل گردد .
پياده كنندگان دارای قدرت دستيابی به كدهای وضعيت HTTP و هدر همانند داده برگردانده شده از طريق سرويس دهنده بودند .
داده می توانست به صورت XML ساختيافته ، اشياء سريال شده جاوا اسكريپت و يا ساير فرمت های مورد نظر پياده كننده باشد .
در مقابل استفاده از فريم های مخفی و يا iframe ، اين امر ميسر گرديد كه به سرويس دهنده از طريق كد و توسط جاوا اسكريپت دستيابی داشت ( مستقل از چرخه load و reload صفحه ) . شی XMLHttp پس از مدتی به عنوان يك موفقيت بزرگ برای پياده كنندگان مرورگر IE عرض اندام كرد .
به موازات متداول شدن شی فوق ، پياده كنندگان در Mozilla نسخه اختصاصی از XMLHttp را پياده سازی كردند . در مقابل اجازه دستيابی از طريق اكتيو ايكس ، پياده كنندگان موزيلا متدها و خصلت ها را در يك شی ذاتی مرورگر و با نام objectXMLHttpRequest ارائه كردند . پس از اين كه دو مرورگر اصلی در بازار هر يك توانستند به نوعی از XMLHttp حمايت نمايند ، مرورگرهائی ديگر نظير Opera و Safari نيز هر يك به نوعی حمايت خود از شی فوق را اعلام كردند .
به موازات اين كه پياده كنندگان درگير نحوه استفاده از فريم ها شدند ، يك روش جديد با هدف تسهيل در امر ارتباط بين سرويس گيرنده و سرويس دهنده مطرح گرديد .
روش فريم مخفی شامل تنظيم يك frameset با طول و يا عرض صفر پيكسل است كه هدف اساسی آن انجام فرآيند مقداردهی اوليه با سرويس دهنده بود .
فريم مخفی شامل يك فرم HTML با فيلدهای خاصی است كه می توانست بطور اتوماتيك توسط جاوا اسكريپت تكميل و برای سرويس دهنده ارسال گردد . زمانی كه فريم از سرويس دهنده مراجعت می كرد ، يك تايع ديگر جاوا اسكريپت فراخوانده می شد تا اعلام نمايد كه داده از سمت سرويس دهنده برگردانده شده است .
روش فريم مخفی ، اولين مدل درخواست و پاسخ غيرهمزمان را برای برنامه های وب به ارمغان آورد ( اولين رويكرد به مدل ارتباطی Ajax ) .
Dynamic HTML و DOM :
تا سال 1996 ، وب يك دنيای ايستا را تجربه می كرد و برای تعامل محدود با كاربر از جاوا اسكريپت و روش فريم های مخفی استفاده می گرديد . همچنان امكان تغيير در محتويات يك صفحه بدون نياز به load مجدد آن از سرويس دهنده وجود نداشت .
در ادامه IE 4.0 ( برگرفته شده از Internet Explorer ) توسط شركت مايكروسافت ارائه گرديد . در اين نسخه علاوه بر بكارگيری اكثر فناوری های استفاده شده در Netscape Navigator ، يك ويژگی مهم ديگر با نام DHTML ( برگرفته شده از Dynamic HTML ) نيز ارائه گرديد . DHTML به پياده كنندگان اجازه می داد تا بتوانند هر بخشی از يك صفحه مستقر شده در حافظه سرويس گيرنده را با استفاده از جاوا اسكريپت تغيير دهند .
DHTML به همراه عرضه غيره منتظره CSS ( برگرفته شده از cascading style sheets ) به وب و نحوه پياده سازی صفحات وب يك نيروی تازه داد. پياده كنندگان توانستند با تركيب DHTML و روش فريم های مخفی هر بخشی از يك صفحه را با استفاده از اطلاعات دريافت شده از سرويس دهنده refresh نمايند . ويژگی فوق در زمان خود توانست يك تحول بزرگ در عرصه وب را ايجاد نمايد .
در ادامه ، DOM ( برگرفته شده از Document Object Model ) ارائه گرديد . برخلاف DHTML كه صرفا" امكان تغيير بخش هائی خاص از يك صفحه وب را فراهم می كرد ، DOM دارای يك هدف بلندپروازانه ديگر بود . هدف DOM ارائه يك ساختار برای تمامی صفحه بود . انجام عمليات و يا پردازش بر اساس ساختار فوق ، امكان تغيير يك صفحه را فراهم می آورد . اين مرحله بعدی به سمت Ajax بود
Iframes :
با اين كه روش فريم مخفی بطور غيرقابل پيش بينی متداول گرديد ، ولی دارای چالش های مختص به خود بود . افرادی می بايست زمان زيادی را صرف نوشتن يك frameset می كردند تا شرايط استفاده از فريم های مخفی فراهم گردد . زمانی كه عنصر </ iframe > در سال 1997 و به عنوان بخشی از نسخه رسمی HTML 4.0 ارائه گرديد ، يك قدم اساسی ديگر به سمت انقلاب بر روی وب حركت شد .
در مقابل تعريف frameset ، پياده كنندگان قادر به استفاده از فريم ها در هر مكانی از صفحه شدند . بدين ترتيب پياده كنندگان توانستند از iframe نامرئی ( با بكارگيری قابليت های CSS ) در يك صفحه استفاده نمايند و شرايط عملياتی لازم جهت مبادله داده بين سرويس گيرنده و سرويس دهنده را فراهم نمايند .
زمانی كه نسخه نهائی DOM در IE 5.0 و Netscape 6.0 پياده سازی گرديد ، قابليت ايجاد فريم ها به صورت پويا نيز فراهم گرديد . در چنين حالتی از يك تابع جاوا اسكريپت به منظور ايجاد يك iframe ، ايجاد يك درخواست و دريافت پاسخ ( جملگی بدون نياز به اضافه كردن تگ های HTML اضافه در يك صفحه ) استفاده می گرديد . اين روش معروف به روش iframe مخفی گرديد .
XMLHttp :
پياده كنندگان مرورگر شركت مايكروسافت پس از مشاهده عموميت استفاده از روش هائی نظير فريم مخفی و iframe مخفی ، تصميم گرفتند يك ابزار بهتر جهت تعامل بين سرويس دهنده و سرويس گيرنده را ارائه نمايند . اين ابزار به شكل يك اكتيوايكس و با نام XMLHttp در سال 2001 ارائه گرديد .
زمانی كه مايكروسافت حمايت خود از XML را از طريق يك كتابخانه با نام MSXML آغاز كرد ، شی XMLHttp نيز به همراه آن ارائه گرديد .
با اين كه شی فوق به همراه خود نام XML را يدك می كشيد ولی چيزی بمراتب بيشتر از روشی برای انجام عمليات بر روی داده XML بود . شی فوق همانند يك درخواست HTTP بود كه می توانست توسط جاوا اسكريپت كنترل گردد .
پياده كنندگان دارای قدرت دستيابی به كدهای وضعيت HTTP و هدر همانند داده برگردانده شده از طريق سرويس دهنده بودند .
داده می توانست به صورت XML ساختيافته ، اشياء سريال شده جاوا اسكريپت و يا ساير فرمت های مورد نظر پياده كننده باشد .
در مقابل استفاده از فريم های مخفی و يا iframe ، اين امر ميسر گرديد كه به سرويس دهنده از طريق كد و توسط جاوا اسكريپت دستيابی داشت ( مستقل از چرخه load و reload صفحه ) . شی XMLHttp پس از مدتی به عنوان يك موفقيت بزرگ برای پياده كنندگان مرورگر IE عرض اندام كرد .
به موازات متداول شدن شی فوق ، پياده كنندگان در Mozilla نسخه اختصاصی از XMLHttp را پياده سازی كردند . در مقابل اجازه دستيابی از طريق اكتيو ايكس ، پياده كنندگان موزيلا متدها و خصلت ها را در يك شی ذاتی مرورگر و با نام objectXMLHttpRequest ارائه كردند . پس از اين كه دو مرورگر اصلی در بازار هر يك توانستند به نوعی از XMLHttp حمايت نمايند ، مرورگرهائی ديگر نظير Opera و Safari نيز هر يك به نوعی حمايت خود از شی فوق را اعلام كردند .
[HIGHLIGHT=#1F497D] بهترين مترجم كيست كه سكوت را ترجمه كند.

- پست: 433
- تاریخ عضویت: یکشنبه ۱۲ اردیبهشت ۱۳۸۹, ۱:۴۸ ب.ظ
- سپاسهای ارسالی: 733 بار
- سپاسهای دریافتی: 1344 بار
Re: همه چيز درباره Ajax
بدين ترتيب پياده كنندگان صفحات وب توانستند ، صفحاتی را خلق نمايند كه با تعبيه كدهای مورد نياز در آنها ، امكان پردازش در سمت سرويس گيرنده را فراهم نمايند .
انجام پردازش های اوليه نظير تغيير رنگ و شكل ظاهری صفحات ، مديريت عناصر موجود بر روی يك صفحه و تغيير آنها در زمان اجراء متناسب با عمليات كاربر ، بررسی صحت داده ورودی توسط كاربر در يك فرم ساده اطلاعاتی ، دريافت داده در پس زمينه و عدم نياز به ارسال تمامی صفحه و بهنگام سازی بخش هائی خاص از آن ( با بكارگيری فريم ها ) ، نمونه هائی از تاثير فناوری هائی بود كه توان پردازش در سمت سرويس گيرنده را در اختيار پياده كنندگان قرار می داد .
وب پويا با تمركز بر روی پردازش های سمت سرويس دهنده
همزمان با گسترش اينترنت و وب ، ايجاد صفحات وب با محتويات پويا با اتكاء به منابع داده موجود در سمت سرويس دهنده و ساير شرايط تاثير گذار در فرآيند پاسخ به درخواست كاربران مطرح گرديد .
همين موضوع باعث شد كه توجه به سرويس دهنده برای انجام برخی پردازش ها نيز در دستور كار قرار بگيرد . ظهور فناورهائی نظير ASP ( برگرفته شده از Active Server Page ) و PHP ( برگرفته شده از Hypertext Preprocessor ) از اوايل سال 1996 پاسخی به اين نياز بود . از آن زمان به بعد بود كه كم كم واژه برنامه های وب قدم در عرصه نرم افزار گذاشت . اگر به تعاريف آن زمان برگرديم مشاهده می كنيم كه در ابتدا از اين اصطلاح در خصوص صفحات وب پويا استفاده می گرديد .
نگرش جزيره ای به فناورهای مرتبط با برنامه های وب تا اوايل سال 1999 ادامه يافت . تا اين كه شركت های متعددی به فكر ارائه يك پلت فرم با در نظر گرفتن واقعيتی به نام اينترنت افتادند . دات نت ، پلت فرم ارائه شده توسط شركت مايكروسافت يك نمونه در اين زمينه است كه از صدر تا ذيل آن با در نظر گرفتن واقعيتی با نام اينترنت طراحی و پياده سازی شده است .
در اين دوران بود كه به برنامه های وب با يك نگاه جامع تر و سيستماتيك تر نگاه می شد . در طی پنج سال گذشته ، اين نوع برنامه ها توانستند با بكارگيری مجموعه ای از فناوری ها منشاء تحولات عمده ای در خصوص بردن اينترنت در متن زندگی (و نه حاشيه ! ) مردم جهان باشند .
ايده " نرم افزار به عنوان سرويس " و يا برنامه نويسی سرويس گراء از نگرش های جديد به مقوله نرم افزار و دنيای برنامه نويسی در عرصه وب است .
موج استفاده از اينترنت برای ارائه خدمات online ( ارائه شده به كاربران از طريق برنامه های وب ) باعث گرديد تا معماری و رفتار اينگونه برنامه ها با تامل بيشتر مطالعه و بررسی گردد . هدف ، ايجاد برنامه های وب با كارآئی مطلوب است تا ضمن ارائه خدمات خود دارای ويژگی هائی نظير : افزايش تعامل كاربر با برنامه ( همانند برنامه های desktop ) ، استفاده بهينه از محيط انتقال و به حداقل رساندن ترافيك آن ، مديريت بهينه منابع سمت سرويس گيرنده در پاسخ به رويدادهای محقق شده سمت سرويس گيرنده ، عدم ارسال اطلاعات غيره ضروری توسط سرويس گيرنده و ... باشند .
ماحصل اين تفكرات ظهور فناوری جديدی با نام Ajax است كه شركت هائی نظير گوگل و مايكروسافت توانستند از سال 2005 با بكارگيری اين فناوری تحول بزرگی را در عرصه برخی از سرويس ها و خدمات خود ايجاد نمايند .
حمع بندی
همزمان با بحث معماری سرويس گيرنده و سرويس دهنده دو واژه fat-client و thin-client قدم در ادبيات نرم افزار گذاشتند . در معماری فوق ، هدف استفاده از توان پردازشی سرويس گيرنده و سرويس دهنده برای اجرای يك برنامه است . استفاده از توان پردازشی هر يك از عناصر اصلی درگير در معماری فوق و تعريف سهمی خاص برای هر يك ( سرويس گيرنده و سرويس دهنده ) ، از اهداف اوليه و در عين حال بسيار مهم معماری فوق است .
پياده كنندگان برنامه های كامپيوتری خصوصا" برنامه های وب ، همواره با اين سوال مواجه بوده و هستند كه در تقسيم سهم پردازش ، چه ميزان سهم را می بايست به سرويس گيرنده داد ؟ چه پردازش هائی را می توان در سمت سرويس گيرنده انجام داد ؟ در پاسخ به اين سوال رويكردهای مختلفی مطرح شده است .
fat client و thin client دو نمونه متداول در اين زمينه می باشند :
در fat client ، هدف بكارگيری پتانسيل های مرورگر برای انجام اكثر پردازش ها در يك برنامه وب است . رويكرد فوق در اواسط دهه 90 ميلادی در كانون توجه طراحان و پياده كنندگان وب قرار گرفت . علت اين امر به تلاش شركت های بزرگ نرم افزاری در جهت توليد و ارائه فناورهائی بود كه توانمندی مرورگر در انجام پردازش را افزايش می داد .
ظهور فناورهائی نظير جاوا اسكريپت ، ايجاد يك اينترفيس برنامه نويسی در مرورگر ،ايجاد يك مدل شی گراء ( ولو ناقص ) برای يك سند HTML با هدف امكان دستيابی به هر يك از عناصر موجود در آن ، عرضه DHTML و CSS جملگی نشاندهنده تلاش هائی است كه در آن زمان با هدف افزايش توان پردازش در سمت سرويس گيرنده مطرح شد .
پس از گذشت مدت زمان كوتاهی ( از ابتدای سال 1996 ) ، تمايل به سمت برنامه های وب با ويژگی thin client مطرح گرديد . در مدل فوق ، هدف كاهش سهم پردازش در سمت سرويس گيرنده و افزايش پردازش های سمت سرويس دهنده بود . ظهور فناورهای متعددی نظير ASP و PHP تنها نمونه ای اندك از تلاش های انجام يافته در آن دوران برای افزايش توان پردازش در سمت سرويس دهنده است .
با اين كه در ساليان گذشته همچنان از پتانسيل های سمت سرويس گيرنده برای انجام پردازش در برنامه های وب استفاده می گرديد ، ولی رفتار اكثر برنامه های وب مبتنی بر اين واقعيت بود كه : " داده را وارد نمائيد ، صفحه را برای سرويس دهنده ارسال نمائيد و منتظر دريافت پاسخ باشيد " .
هم اينك ما شاهد يك تحول بزرگ ديگر در عرصه برنامه نويسی هستيم . تحولی كه مهمترين دستاورد آن ، تولد نسل جديدی از برنامه های وب است كه در آنها كاربر با برنامه دارای تعامل بمراتب بيشتری نسبت به نسل گذشته برنامه های وب است . اين تحول عظيم نرم افزاری به كمك مجموعه ای از فن آوری ها كه در مجموع به آنها Ajax گفته می شود ، محقق می گردد .
آيا Ajax قصد دارد با تغيير در الگوی رفتاری برنامه های وب فاصله آنها را با برنامه های desktop كاهش دهد ؟ آيا زمان آن رسيده است كه برای پردازش های سمت سرويس گيرنده از يك پلت فرم جامع ، همانند پلت فرم های ارائه شده سمت سرويس دهنده ، استفاده گردد ؟ آيا تاكنون از اين فناوری به منظور ايجاد برنامه های وب استفاده شده است ؟ با استفاده از چه مكانيزم هائی می توان مبادله اطلاعات بين سرويس گيرنده و سرويس دهنده را كاهش و از پهنای باند موجود استفاده بهينه كرد ؟
انجام پردازش های اوليه نظير تغيير رنگ و شكل ظاهری صفحات ، مديريت عناصر موجود بر روی يك صفحه و تغيير آنها در زمان اجراء متناسب با عمليات كاربر ، بررسی صحت داده ورودی توسط كاربر در يك فرم ساده اطلاعاتی ، دريافت داده در پس زمينه و عدم نياز به ارسال تمامی صفحه و بهنگام سازی بخش هائی خاص از آن ( با بكارگيری فريم ها ) ، نمونه هائی از تاثير فناوری هائی بود كه توان پردازش در سمت سرويس گيرنده را در اختيار پياده كنندگان قرار می داد .
وب پويا با تمركز بر روی پردازش های سمت سرويس دهنده
همزمان با گسترش اينترنت و وب ، ايجاد صفحات وب با محتويات پويا با اتكاء به منابع داده موجود در سمت سرويس دهنده و ساير شرايط تاثير گذار در فرآيند پاسخ به درخواست كاربران مطرح گرديد .
همين موضوع باعث شد كه توجه به سرويس دهنده برای انجام برخی پردازش ها نيز در دستور كار قرار بگيرد . ظهور فناورهائی نظير ASP ( برگرفته شده از Active Server Page ) و PHP ( برگرفته شده از Hypertext Preprocessor ) از اوايل سال 1996 پاسخی به اين نياز بود . از آن زمان به بعد بود كه كم كم واژه برنامه های وب قدم در عرصه نرم افزار گذاشت . اگر به تعاريف آن زمان برگرديم مشاهده می كنيم كه در ابتدا از اين اصطلاح در خصوص صفحات وب پويا استفاده می گرديد .
نگرش جزيره ای به فناورهای مرتبط با برنامه های وب تا اوايل سال 1999 ادامه يافت . تا اين كه شركت های متعددی به فكر ارائه يك پلت فرم با در نظر گرفتن واقعيتی به نام اينترنت افتادند . دات نت ، پلت فرم ارائه شده توسط شركت مايكروسافت يك نمونه در اين زمينه است كه از صدر تا ذيل آن با در نظر گرفتن واقعيتی با نام اينترنت طراحی و پياده سازی شده است .
در اين دوران بود كه به برنامه های وب با يك نگاه جامع تر و سيستماتيك تر نگاه می شد . در طی پنج سال گذشته ، اين نوع برنامه ها توانستند با بكارگيری مجموعه ای از فناوری ها منشاء تحولات عمده ای در خصوص بردن اينترنت در متن زندگی (و نه حاشيه ! ) مردم جهان باشند .
ايده " نرم افزار به عنوان سرويس " و يا برنامه نويسی سرويس گراء از نگرش های جديد به مقوله نرم افزار و دنيای برنامه نويسی در عرصه وب است .
موج استفاده از اينترنت برای ارائه خدمات online ( ارائه شده به كاربران از طريق برنامه های وب ) باعث گرديد تا معماری و رفتار اينگونه برنامه ها با تامل بيشتر مطالعه و بررسی گردد . هدف ، ايجاد برنامه های وب با كارآئی مطلوب است تا ضمن ارائه خدمات خود دارای ويژگی هائی نظير : افزايش تعامل كاربر با برنامه ( همانند برنامه های desktop ) ، استفاده بهينه از محيط انتقال و به حداقل رساندن ترافيك آن ، مديريت بهينه منابع سمت سرويس گيرنده در پاسخ به رويدادهای محقق شده سمت سرويس گيرنده ، عدم ارسال اطلاعات غيره ضروری توسط سرويس گيرنده و ... باشند .
ماحصل اين تفكرات ظهور فناوری جديدی با نام Ajax است كه شركت هائی نظير گوگل و مايكروسافت توانستند از سال 2005 با بكارگيری اين فناوری تحول بزرگی را در عرصه برخی از سرويس ها و خدمات خود ايجاد نمايند .
حمع بندی
همزمان با بحث معماری سرويس گيرنده و سرويس دهنده دو واژه fat-client و thin-client قدم در ادبيات نرم افزار گذاشتند . در معماری فوق ، هدف استفاده از توان پردازشی سرويس گيرنده و سرويس دهنده برای اجرای يك برنامه است . استفاده از توان پردازشی هر يك از عناصر اصلی درگير در معماری فوق و تعريف سهمی خاص برای هر يك ( سرويس گيرنده و سرويس دهنده ) ، از اهداف اوليه و در عين حال بسيار مهم معماری فوق است .
پياده كنندگان برنامه های كامپيوتری خصوصا" برنامه های وب ، همواره با اين سوال مواجه بوده و هستند كه در تقسيم سهم پردازش ، چه ميزان سهم را می بايست به سرويس گيرنده داد ؟ چه پردازش هائی را می توان در سمت سرويس گيرنده انجام داد ؟ در پاسخ به اين سوال رويكردهای مختلفی مطرح شده است .
fat client و thin client دو نمونه متداول در اين زمينه می باشند :
در fat client ، هدف بكارگيری پتانسيل های مرورگر برای انجام اكثر پردازش ها در يك برنامه وب است . رويكرد فوق در اواسط دهه 90 ميلادی در كانون توجه طراحان و پياده كنندگان وب قرار گرفت . علت اين امر به تلاش شركت های بزرگ نرم افزاری در جهت توليد و ارائه فناورهائی بود كه توانمندی مرورگر در انجام پردازش را افزايش می داد .
ظهور فناورهائی نظير جاوا اسكريپت ، ايجاد يك اينترفيس برنامه نويسی در مرورگر ،ايجاد يك مدل شی گراء ( ولو ناقص ) برای يك سند HTML با هدف امكان دستيابی به هر يك از عناصر موجود در آن ، عرضه DHTML و CSS جملگی نشاندهنده تلاش هائی است كه در آن زمان با هدف افزايش توان پردازش در سمت سرويس گيرنده مطرح شد .
پس از گذشت مدت زمان كوتاهی ( از ابتدای سال 1996 ) ، تمايل به سمت برنامه های وب با ويژگی thin client مطرح گرديد . در مدل فوق ، هدف كاهش سهم پردازش در سمت سرويس گيرنده و افزايش پردازش های سمت سرويس دهنده بود . ظهور فناورهای متعددی نظير ASP و PHP تنها نمونه ای اندك از تلاش های انجام يافته در آن دوران برای افزايش توان پردازش در سمت سرويس دهنده است .
با اين كه در ساليان گذشته همچنان از پتانسيل های سمت سرويس گيرنده برای انجام پردازش در برنامه های وب استفاده می گرديد ، ولی رفتار اكثر برنامه های وب مبتنی بر اين واقعيت بود كه : " داده را وارد نمائيد ، صفحه را برای سرويس دهنده ارسال نمائيد و منتظر دريافت پاسخ باشيد " .
هم اينك ما شاهد يك تحول بزرگ ديگر در عرصه برنامه نويسی هستيم . تحولی كه مهمترين دستاورد آن ، تولد نسل جديدی از برنامه های وب است كه در آنها كاربر با برنامه دارای تعامل بمراتب بيشتری نسبت به نسل گذشته برنامه های وب است . اين تحول عظيم نرم افزاری به كمك مجموعه ای از فن آوری ها كه در مجموع به آنها Ajax گفته می شود ، محقق می گردد .
آيا Ajax قصد دارد با تغيير در الگوی رفتاری برنامه های وب فاصله آنها را با برنامه های desktop كاهش دهد ؟ آيا زمان آن رسيده است كه برای پردازش های سمت سرويس گيرنده از يك پلت فرم جامع ، همانند پلت فرم های ارائه شده سمت سرويس دهنده ، استفاده گردد ؟ آيا تاكنون از اين فناوری به منظور ايجاد برنامه های وب استفاده شده است ؟ با استفاده از چه مكانيزم هائی می توان مبادله اطلاعات بين سرويس گيرنده و سرويس دهنده را كاهش و از پهنای باند موجود استفاده بهينه كرد ؟
[HIGHLIGHT=#1F497D] بهترين مترجم كيست كه سكوت را ترجمه كند.