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