شنبه, ۸ اردیبهشت, ۱۴۰۳ / 27 April, 2024
مجله ویستا

چارچوبی رایگان برای تولید کاربردهای AJAX


چارچوبی رایگان برای تولید کاربردهای AJAX
در طول یک دهه رشد و تکامل، کاربردهای مبتنی بر وب از صفحات ایستا، به سمت صفحات پویا، Applet، Flash و در نهایت به کاربردهای AJAX ختم شده است. کاربرانی که سامانه ها و کاربردهای مدرن وب (نظیر Google MAP و یا واسط کاربر جدید Yahoo Mail) را تجربه کرده اند، به این نکته ظریف و جالب پی برده اند که رابط کاربر این کاربردها بر خلاف کاربردهای سنتی وب، از قابلیت ها و ویژگی های محاوره ای بیشتری برخوردار هستند. صفحات وب برخلاف کاربردهای رومیزی، ساختاری سست پیوند (Loosely Coupled) دارند. به این معنی که اطلاعات و داده هایی که در صفحات وب نمایش داده می شوند، پیوند مستحکمی با منابع داده (معمولاً بانک های اطلاعاتی) ندارند.
از این رو برای مشاهده داده ها (یا اطلاعات جدید) کاربر می بایست درخواست خود را مجددا به کارگزار وب (کارگزار کاربرد) ارسال کند. این عمل معمولاً با عملکرد Refresh در مرورگر حاصل می شود. با استفاده از ترفند AJAX یا ترکیبی ناهمزمان از JavaScript و XML، امکان تولید کاربردهای محاوره ای مبتنی بر وب فراهم می گردد. منظور از معماری ناهمزمان آن است که برخلاف معماری سنتی کارگزار سرویس گیرنده، در AJAX مرورگر تقاضاهایی را بدون نیاز به دخالت کاربر به کارگزار وب (یا کاربرد) می فرستد و به این ترتیب صفحات وب به طور پویا به روز می شوند. زبان برنامه نویسی که با استفاده از آن این تقاضاها به کارگزار وب فرستاده می شوند، JavaScript است و اطلاعات با استفاده از شیس خاصی موسوم به XMLHTTPRequest دریافت می شود.
با وجود آنکه واژه فنی AJAX اولین بار توسط Jesse James Garrett در سال ۲۰۰۵ به کاربرده شد، ولی یک دهه قبل شرکت مایکروسافت همین ایده را در تکنیک Remote Scripting مطرح نموده بود. عنصر بنیادی در تکنیک AJAX شی XMLHTTPRequest است که به مرورگر اینترنت (نظیر IE یا FireFox) امکان می دهد بدون بارگیری مجدد کل صفحه، درخواست داده را به طور پویا و بدون نیاز به دخالت کاربر (ناهمزمان) به کارگزار وب ارسال نماید. یکی از دلایل جذاب بودن کاربردهایی نظیر Google Map استفاده از همین تکنیک می باشد. در این مقاله قصد داریم چارچوب رایگان و پرطرفداری را معرفی نماییم که تولید کابردهای مبتنی بر تکنیک AJAX را به شکل چشمگیری تسریع می نمایند.
● کاربردهای سنتی وب
برخلاف رشد و گسترش وب، و محبوبیت و فراگیری آن، کاربردهای سنتی وب با یک چالش اساسی مواجه هستند. این چالش عدم توانایی کاربردهای سنتی در ارائه رابط کاربر محاوره ای متناسب با کاربردهای جدید در وب است. این ناتوانایی ریشه در مدل حاکم بر این رده از کاربردها است که در آن از یک سو ارتباط کارگزار و سرویس گیرنده بدون حافظه و Stateless است و از سوی دیگر واحد ارتباطی در رابط کاربر یک صفحه کامل است. کاربردی که در کارگزار اجرا می شود، موظف است که واکشی و تفکیک پارامترهای درخواست، ارائه پاسخ، و هدایت و مسیریابی کاربر از یک صفحه به صفحه بعدی را بر عهده بگیرد.
به علاوه در صورتی که خطایی در این مسیر رخ دهد، چگونگی مواجه با آن نیز بر عهده کاربرد است. نیاز به توضیح نیست که تمام این وظایف بر عهده کاربردی است که در سمت کارگزار وب (کارگزار کاربرد) اجرا می شود. برای تسهیل این فرآیند عملیاتی، چارچوب های متعددی نظیر Struts، Tapestry و JSF ارائه شده اند. با این حال به سبب فاصله ذاتی مدل مبتنی بر صفحه در کاربردها سنتی وب، با مدل محاوره ای در کاربردهای مدرن، هیچ یک از این چارچوب های راه حل کاملی برای ناتوانایی فوق الذکر تلقی نمی شوند.
● کاربردهای مبتنی بر AJAX
در طول یک دهه تکامل کاربردهای مبتنی بر وب از شکل ابتدایی و ایستا، به صفحات پویا، کاربردهای مبتنی بر جاوا و سایر فناوری های مربوط به تولید کاربرد در سمت کارگزار، و در چند سال اخیر به کاربردهای AJAX ختم شده اند. همانطور که در کاربردهای جذابی چون Google Map مشاهده می شود، ترفند AJAX زندگی جدیدی به کاربردهای مبتنی بر وب بخشیده است به گونه ای که این کاربردها از نظر سطح محاوره ای بودن، یادآور برنامه های رومیزی هستند که در ده های قبل برروی کامپیوترهای منفرد اجرا می شدند. نکته جالب توجه آن است که تکنیک AJAX تنها استفاده هوشمندانه از Javascript است و کاربران برای بهره گیری از آن تنها به یک مرورگر ساده (و استاندارد) نیاز دارند. می توان AJAX را به عنوان نسل جدیدی از صفحات پویای HTML تلقی کرد. در این تکنیک برنامه های Javascript در پشت صحنه منتظر رخدادهایی می مانند که کاربر و محاوره وی با صفحات پدید می آورد. در پاسخ به این رخدادها (معمولاً) تنها بخشی از صفحه (که به عبارت دقیق تر DOM یا Document Object Model) به شکل پویا تغییر می نماید.ارتباط کارگزار و مرورگر در این تکنیک ناهمزمان (Asynchronous) است. به این ترتیب AJAX به مدل محاوره تک صفحه ای خاتمه می دهد. با بهره گیری از این تکنیک و طراحی مناسب می توان اجزاء محاوره ای متعددی در صفحات وب گنجاند که بر خلاف مدل سنتی به شکل پویا به روز می شوند.
● محاوره کاربرد و کاربر در تکنیک AJAX
به عنوان مثال فرض کنید که در یک صفحه (فرم) ورود اطلاعات نام کشور و شهر مورد نظر کاربر از وی پرسیده شود. در کاربردهای سنتی ابتدا کاربر از فهرستی، کشور مورد نظر را انتخاب می نماید. سپس کل صفحه به روز شده و فهرست مربوط به انتخاب نام شهر به شکل مناسب به روز شده و کاربر می تواند شهر مورد نظر در آن کشور را انتخاب نماید. بدیهی است که در کاربردهای سنتی این امر از طریق به روز رسانی تمام صفحه به ازاء انتخاب هر پارامتر از فرم انجام می شود. حال در کاربردهایی که از تکنیک AJAX بهره می برند، به محض انتخاب کشور از فهرست اول، تنها فهرست دوم و نه تمام صفحه به روز شده و کاربر در فهرست شهرها، تنها شهرهای مربوط به کشور انتخاب شده را مشاهده خواهد کرد. تفاوت مهم آن است که در اینجا نیازی به روزآمد سازی تمام صفحه نیست.
● چالش ها
تکنیک AJAX با وجود آنکه قابلیت های محاوره ای جالب توجهی به کاربردها می افزاید، ولی از سوی دیگر پیچیدگی تولید کاربرد، و مهارت های مورد نیاز برای تولید کاربرد را نیز افزایش می دهد که به نوبه خود هزینه تولید کاربردها را نیز افزایش می دهد.
● چارچوبی رایگان برای تولید کاربردهای AJAX
سایر چالش های مرتبط با تکنیک AJAX عبارت است از:
▪ مرورگرها از رابط های کاربر JavaScript و API (رابط برنامه های کاربردی) خاص خودبهره می برند که در برخی موارد با یکدیگر سازگار نیستند. تکنیک AJAX ارتباط تنگاتنگی با دستکاری DOM (مدل شی گرایی صفحه وب) دارد. این ناسازگاری که در پیاده سازی مرورگرهای اینترنتی وجود دارد موجب افزایش زمان تولید کاربرد (و در مواردی پیاده سازی متعدد برای مرورگرهای متعدد که امری خسته کننده است) می گردد.
▪ استفاده از AJAX علاوه بر به روزرسانی بخشی از صفحه وب، مبادله داده بین سرویس گیرنده (مرورگر) و کارگزار را نیز به دنبال دارد.
این تبادل داده ارتباط نزدیکی با کاربرد و ماهیت آن دارد و موجب می شود که بخشی از منطق برنامه و حتی داده ها برای افزایش کارآیی و بهنیه سازی ارتباطات و تبادل داده ها به مرورگر منتقل گردد که این امر موجبات افزایش هزینه تولید و نگهداری کاربرد را به همراه دارد.
▪ برای به روزرسانی بخشی از صفحه، لازم است که مرورگر به شکل ناهمزمان با کارگزار ارتباط برقرار نماید. از دید کارگزار درخواست های AJAX تفاوتی با درخواست های عادی HTTP ندارند. در واقع تنها تفاوت آن است که درخواست های عادی HTTP توسط کاربر تولید می شوند، حال آنکه درخواست های AJAX به طور ناهمزمان و بدون نیاز به دخالت کاربر به کارگزار فرستاده می شوند. این ویژگی می تواند روال منطقی و دنباله ای کاربرد را تحت تأثیر قرار دهد. در حال حاضر رهیافت های متعددی برای مواجه و پاسخگویی به این چالش ها داده شده است. رایج ترین رهیافت ارائه چارچوب ها و روال های کتابخانه ای به زبان JavaScript است. این رهیافت ها، برنامه سازان را مجبور می کنند که روال ها را به گونه ای به منطق کاربرد مرتبط نمایند. از سوی دیگر ماهیت ناهمزمان کاربرد چالشی است که همچنان به قوت خود باقی است. رهیافت دیگر توسعه و گسترش برچسب های HTML به گونه ای است که بدون نیاز به برنامه نویسی Javascript و فقط با گنجاندن این برچسب های رفتار موردنظر بروز نماید. در این رهیافت لازم است که یک برنامه اولیه (به زبان Javascript) اجرا شود که این برنامه نقش تفسیر برچسب های جدید (و غیراستاندارد) را بر عهده دارد.مزیت عمده این رهیافت سهولت در استفاده از برچسب های جدید و عدم نیاز به برنامه نویسی است. هرچند که با افزایش پیچیدگی منطق کاربرد این رهیافت از کارایی خوبی برخوردار نخواهد بود. رهیافت دیگر توسعه و گسترش چارچوب تولید کاربرد به گونه ای است که AJAX را در برگیرد. در رهیافت اخیر، نتیجه، ارتباط تنگاتنگی با معماری اولیه کاربرد دارد. اغلب چنین رهیافت هایی نیاز به برنامه نویسی به زبان Javascript را مرتفع می نمایند و به جای آن نوشتن Servletهایی ضروری و اجتناب ناپذیر می شوند که تبادل پویای داده بین کارگزار وب و مرورگر را میسر می نمایند.
● چارچوب ZK ساده و غنی:
این چارچوب در واقع مجموعه ای از توابع و متدهایی است که با هدف پنهان سازی پیچیدگی های ذاتی AJAX از دیدکاربران تولید شده است. در واقع این چارچوب تولید کاربرد، به طراحان و برنامه نویسان کاربردهای مبتنی بر وب امکان می دهد که با سهولت و سرعت بیشتری کاربردهای موردنظر را تولید نمایند. اجزای ساختمانی این چارچوب یک موتور مبتنی بر AJAX است که ارتباط محاوره ای (مرورگر و کارگزار) را خودکار می نماید، به علاوه مجموعه ای غنی از (XML User interface Language) UXL و XHTML است برای بهبود رابط کاربر، و در نهایت زبان نشانه گذاری ویژه برای تولید رابط کاربر بدون نیاز به برنامه نویسی است.مشابه با کاربردهای رومیزی (که در دهه ۱۹۹۰ نوشته می شدند)، در این چارچوب رابط کاربر با استفاده از اجزاء UXL تولید شده و کاربرد گوش به زنگ رخدادهایی (نظیر کلیک موش واره و یا فشردن کلیدها) می ماند که توسط کاربر ایجاد می شوند. رابط کاربر نیز بدون نیاز به برنامه نویسی و تنها با استفاده از زبان نشانه گذاری خاصی موسوم به (ZKUser-interface Markup Language)ZUML انجام می شود. در چارچوب ZK همه کاربرد برروی کارگزار اجرا می شوند، هر رخدادی که توسط کاربر ایجاد شود به برنامه کاربردی در حال اجرا برروی کارگزار ارسال می شود. اگر یکی از اجزای رابط کاربر توسط کاربر تغییر کند، این تغییر به کارگزار (و کاربرد در حال اجرا در آن) ارجاع شده و تغییر مربوطه در صفحه مرورگر منعکس می شود. از ویژگی های مهم و قابل توجه این کاربرد تضمین سازگاری آن با فناوری های جاری و مورد استفاده است. در واقع در مدل سه لایه (لایه نمایش، منطق و داده)، چارچوب ZK فقط لایه ارائه (یا نمایش) را تحت تأثیر قرار می دهد و منطق کاربرد و بانک های اطلاعاتی دست نخورده باقی خواهند ماند.
● معماری چارچوب ZK
این چارچوب تولید کاربرد از دو جز بنیادی موسوم به موتور مروگر یا ZK Client Engine و موتور به روزرسانی یا ZK Update Engine تشکیل شده است. صفحه اولیه که در مرورگر نمایش داده می شود، دربرگیرنده اجزای ZKاست، با ایجاد یک رخداد از سوی کاربر، درخواست مربوطه به موتور به روزرسانی فرستاده می شود. موتور بروزرسانی اجزاء ZK متناظر را به روز کرده و رخداد را در صف پردازش قرار می دهد. کاربرد، رخدادها را به ترتیب از صف استخراج کرده و با استفاده از داده های دیگر و منطق برنامه به دستکاری اجزای ZK (اجزاء فرم رابط کاربر) می پردازد. در نهایت پاسخ از موتور بروزرسانی به موتور مرورگر ارسال شده و اجزاء فرم در صفحه مرورگر نیز به روز می شوند. این چارچوب تولید کاربرد از ۷۰ جزی XUL و ۸۰ جزء XHTML و یک زبان نشانه گذاری برای طراحی رابط کاربر بهره می برد که فرآیند تولید کابرد را به شکل چشمگیری تسریع می نماید. طراحان کاربرد با استفاده از این مجموعه رابط کاربر و اجزای کاربرد (نظیر منوها، دکمه های رادیویی، دکمه های فشاری، فهرست ها و نظایر آن) را طراحی کرده و با توجه به عکس العمل های کاربر (رخدادها) عکس العمل های مربوطه را برنامه ریزی می نمایند. این چارچوب رایگان از نشانی http://www.zkoss.org قابل دریافت است. برای استفاده از این چارچوب تولید کاربردهای AJAX، نگارش ۱‎/۴ یا بالاتر JRE و کارگزار وب با پشتیبانی Servlets (نظیر Apache Tomcat) مورد نیاز است.
worldit.com
منبع : روزنامه ابرار اقتصادی


همچنین مشاهده کنید