اينترنت و مهمترين سرويس آن وب علاوه بر اين كه حيات بشري را در هزاره سوم دستخوش تحولات فراواني كرده است ، توانسته است منشاء تحولات گسترده اي در ساير حوزه هاي فناوري گردد . در واقع ، تحول در زندگي بشريت مديون پيشرفت در ساير حوزه هاي فناوري است . يكي از اين حوزه ها ، صنعت نرم افزار است .
براي آشنائي با اين تحول بد نيست مروري سريع داشته باشيم به گذشته وب و نرم افزار تا از اين رهگذر بتوانيم ضرورت ايجاد فناورهاي جديدي نظير 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 در آن زمان بود .
با توجه به اين كه يك فريم ، يك درخواست مجزاء را براي سرويس دهنده ايجاد مي كرد ، قابليت كنترل يك فريم و محتويات آن با استفاده از جاوا اسكريپت دنياي جديدي را پيش روي طراحان و پياده كنندگان صفحات وب قرار داد .
-
روش فريم مخفي : به موازات اين كه پياده كنندگان درگير نحوه استفاده از فريم ها شدند ، يك روش جديد با هدف تسهيل در امر ارتباط بين سرويس گيرنده و سرويس دهنده مطرح گرديد . روش فريم مخفي شامل تنظيم يك 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 مي كردند تا شرايط استفاده از فريم هاي مخفي فراهم گردد . زماني كه عنصر > در سال 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 نيز هر يك به نوعي حمايت خود از شي فوق را اعلام كردند .
بدين ترتيب پياده كنندگان صفحات وب توانستند ، صفحاتي را خلق نمايند كه با تعبيه كدهاي مورد نياز در آنها ، امكان پردازش در سمت سرويس گيرنده را فراهم نمايند . انجام پردازش هاي اوليه نظير تغيير رنگ و شكل ظاهري صفحات ، مديريت عناصر موجود بر روي يك صفحه و تغيير آنها در زمان اجراء متناسب با عمليات كاربر ، بررسي صحت داده ورودي توسط كاربر در يك فرم ساده اطلاعاتي ، دريافت داده در پس زمينه و عدم نياز به ارسال تمامي صفحه و بهنگام سازي بخش هائي خاص از آن ( با بكارگيري فريم ها ) ، نمونه هائي از تاثير فناوري هائي بود كه توان پردازش در سمت سرويس گيرنده را در اختيار پياده كنندگان قرار مي داد .
وب پويا با تمركز بر روي پردازش هاي سمت سرويس دهنده
همزمان با گسترش اينترنت و وب ، ايجاد صفحات وب با محتويات پويا با اتكاء به منابع داده موجود در سمت سرويس دهنده و ساير شرايط تاثير گذار در فرآيند پاسخ به درخواست كاربران مطرح گرديد . همين موضوع باعث شد كه توجه به سرويس دهنده براي انجام برخي پردازش ها نيز در دستور كار قرار بگيرد . ظهور فناورهائي نظير 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 كاهش دهد ؟ آيا زمان آن رسيده است كه براي پردازش هاي سمت سرويس گيرنده از يك پلت فرم جامع ، همانند پلت فرم هاي ارائه شده سمت سرويس دهنده ، استفاده گردد ؟ آيا تاكنون از اين فناوري به منظور ايجاد برنامه هاي وب استفاده شده است ؟ با استفاده از چه مكانيزم هائي مي توان مبادله اطلاعات بين سرويس گيرنده و سرويس دهنده را كاهش و از پهناي باند موجود استفاده بهينه كرد ؟
اجازه دهيد به اين سوال و سوالات بسيار ديگر در رابطه با Ajax ، فناورهاي مرتبط با آن و از همه مهمتر كاربرد آن در بخش هاي بعدي پاسخ دهيم .
برگرفته از سايت سخا روش