ورود

View Full Version : آژاکس شیرین با ZK



ir_programmer
چهارشنبه 21 آذر 1386, 07:45 صبح
برنامه‌های تحت وب به عنوان اولین ابزار برای ارائه برنامه‌های تجاری به کاربران مطرح می‌شوند. مزیت‌های فراوانی در برنامه‌های تحت وب عنوان شده که مدیریت و نگهداری آسان و متمرکز و در دسترس پذیری از آن جمله هستند. با تمام این برتری‌ها برنامه‌های تحت وب در مقایسه با برنامه‌های تحت سیستم‌عامل دارای محدودیت‌هایی نیز هستند.

از آنجاییکه پروتکل ارتباطی وب یعنی HTTP از پایه، قابلیت نگهداری وضعیت برنامه را ندارد، پیچیدگی‌‌های تولید و حتی کاربری برنامه‌‌های تحت وب تا حدی افزایش می‌یابد. از اولین روزهای دوران تولید برنامه‌های تحت وب، تولید کنندگان سعی در شبیه نمودن هرچه بیشتر محصولات خود به برنامه‌های desktop داشته‌اند که این خواسته در عمل به پیاده‌سازی پیچیده جاوا اسکریپت در طرف client منجر می‌شد. با ارائه ایده Ajax امید دستیابی به رفتار کاربر پسند برای برنامه‌های تحت وب افزایش یافت.

تکنولوژی Ajax (Asynchronous JavaScript and XML) بر پایه ارتباط غیر همزمان بین سرویس‌گیرنده و سرویس‌دهنده با رابطی پویا تعریف شده‌ است. در برنامه‌های سنتی وب، کل داده‌های یک صفحه با یک درخواست برای سرویس‌دهنده فرستاده می‌شد و سرویس‌دهنده پس از بررسی داده‌ها و تولید خروجی‌های مرتبط همزمان اقدام به تولید(Document Object Model (DOM محتویات HTML صفحه خروجی می‌نمود. در این حالت صفحه کاملی شامل محتویات نمایشی صفحه و داده‌های خروجی به سوی کاربر (سرویس‌گیرنده) ارسال می‌شد.

این سناریو در حالتی که حتی داده‌ای بسیار کوچک مورد نیاز کاربر باشد، نیز اتفاق می‌افتد و مصرف حجم بالای پهنای باند و قدرت پردازش سرویس‌دهنده از ایرادات این روش است. در آژاکس به جای آن چندین درخواست کوچک و متناوب به سرویس‌دهنده فرستاده شده و پاسخ‌هایی شامل اجزای کوچکی از داده به سرویس گیرنده برگشت داده می‌شود. در این روش به واقع در زمان نیاز مدل داده‌ای طرف سرویس گیرنده به روز شده و اطلاعات نمایش داده می‌شود.

تا اینجا در آژاکس همه چیز به خوبی پیش رفته است، فقط تولید برنامه‌های آژاکس باقی می‌ماند. ابزارها و کتابخانه‌های فراوانی برای استفاده از آژاکس معرفی شده‌اند که برخی کاربری عمومی برای تمام تکنولوژی‌های و زبان‌های برنامه‌نویسی دارند و بعضی برای زبان‌های برنامه نویسی خاصی سفارشی شده‌اند. عده‌ای رابط API آسان و ساده‌ای برای برنامه‌نویسان ارائه داده‌اند و در برخی موارد برنامه‌نویس نیاز به دانش سطح بالای جاوااسکریپ و آشنایی با مدل شی‌‌گرای صفحه HTML خواهد داشت. وظیفه ارتباط با سرویس دهنده نیز معمولاً به کمک تکنولوژی Web Service انجام می‌پذیرد.

اگر برنامه‌نویس Web Service با آژاکس بوده‌اید، حتماً با پیچیدگی‌های این تکنولوژی در اتصال متدهای رابط طرف سرویس دهنده با متدهای جاوااسکریپتی سرویس گیرنده درگیر شده‌اید. اگرچه به نسبت تولید محصولات سنتی وب، روش Web Service ساده‌تر محسوب می‌شود اما هنوز پیچیدگی‌های آن آزار دهنده و در پروژه تولید هزینه‌ساز به شمار می‌روند.

ZK
اگر جاوااسکریپ کار نیستید و قصد فراگیری Web Service به صورت حرفه‌ای را ندارید و در عین حال نیاز به استفاده از امکانات آژاکس در پروژه‌های خود دارید،‌ پاسخ شما ZK Framework است. به خصوص اگر همگام با تکنولوژی‌های روز Java پیش رفته و با آنها آشنایی دارید. ZK یک فرم‌ورک بر اساس آژاکس از شرکت پتیکس بر اساس لیسانس نرم‌افزاری سورس آزاد GPL می‌باشد. ZK شامل کامپوننت‌هایی برای هر دو قسمت سرویس‌دهنده و سرویس‌گیرنده بوده که با یکدیگر ارتباط برقرار می‌کنند.

در قسمت client یا سرویس‌گیرنده، دو نوع کامپوننت موجود است. دسته اول بر اساس زبان XUL یا XML User Interface که تکنولوژی ابداعی برای طراحی رابط‌‌های کاربری بر اساس جاوا اسکریپت است و دسته دوم مبتنی بر XHTML می‌باشند که این زبان با اضافاتی که ZK برای پشتیبانی از آژاکس به آن افزوده است ZUML نامیده می‌شود. ZK مدل برنامه‌نویسی بسیار ساده شده‌ای مبتنی بر الگوی رویدادگرا که در Java Swing نیز استفاده شده را ارائه داده‌ است.

بر اساس معماری معروف مدل- نمایش- کنترل‌گر در وب، ZK راه‌حلی برای قسمت نمایش به حساب می‌آید. در این معماری برنامه‌نویس آزاد است که تکنولوژی‌های دلخواه و منطبق با نیازمندی‌های پروژه را برای لایه‌های دیگر مدل یا کنترل‌گر از جمله جاوابین (EJB) انواع ORMapperها نظیر Hibernate به کار ببرد. علاوه بر آن امکان اضافه نمودن ZK به پروژه‌هایی که در آنها تکنولوژی‌های سنتی نمایش همانند JSP یا JSF به کار رفته‌اند، وجود خواهد داشت. قابلیت فوق نکته بسیار مهم و حیاتی در مهاجرت سیستم‌های زنده و در حال سرویس موجود هستند.

از آنجایی که امکان مهاجرت یکباره سیستم‌های زنده به تکنولوژی‌های آژاکس مشکل است، این امکان ZK اجازه افزودن صفحات آژاکس به قسمت‌هایی از پروژه‌های قدیمی فراهم آورده‌ است. از مزایای بسیار عمده ZK که آن را از فرم‌ورک‌های مشابه متمایز ساخته‌است، ارائه طیف وسیعی از کامپوننت‌های رابط کاربری مورد نیاز برای تولید پروژه‌های واقعی و گسترده می‌باشد. انواع دکمه، برچسب، فیلد ورودی داده، منو، تب و جداول نمایش و ویرایش داده تنها نمونه‌های از امکانات گسترده ZK می‌باشد که برنامه‌نویس با آنها مواجه می‌شود.

نکته مهم این است که لازم نیست برنامه‌نویس ZK حتی یک خط هم جاوا اسکریپ کد بزند و علاوه بر آن نیاز به پیاده‌سازی سرویس‌های استاندارد Web Service نیز اجباری نیست. به خصوص در مورد سیستم‌های موجود که معماری آنها بسته شده است و روش‌های متنوعی برای دسترسی به لایه داده موجود است، امکان بهره‌گیری از همان روش‌ها و پیاده‌سازی‌ها فراهم خواهد بود. سهولت در فراگیری و تولید با ZK نکته مثبت دیگر این فرم‌ورک است. طراحی صفحات و قرار دادن اجزای رابط کاربری با تگ‌های ساده و سرراست XUL یا ZUML انجام می‌شود که می‌توان این وظیفه را به عهده شخص طراح وبی واگذار کرد که هیچگونه آشنایی با زبان جاوا ندارد.

این در صورتی است که قصد استفاده از محیط یکپارچه طراحی صفحات ZK که به صورت تحت وب در دسترس است نداشته باشید. در صورت استفاده از آن محیط؛ فرآیند تولید صفحات وب به خاطراتی شیرین برای برنامه‌نویس شامل عملیات drag-drop تبدیل خواهد شد. علاوه بر این یادگیری و آموزش ZK به نسبت سایر فرم‌ورک‌ها و تکنولوژی‌های سورس آزاد به علت وفور اسناد و آموزش‌های موجود به سرعت انجام خواهد پذیرفت. در زیر نمونه‌ای از اسکریپ xmlای مربوط به یک صفحه با کامپوننت درخت آورده شده است:

http://i10.tinypic.com/8e1ojzk.gif
در نمونه کد فوق سادگی چینش کامپوننت درخت و سطرها و آیتم‌های آن و چگونگی دسترسی به سرویس‌های داده در طرف سرویس دهنده به نمایش گذاشته شده است. پروژه ZK با نام ZK1 در سایت sourceforge.net یا در آدرس www.zkoss.org در دسترس است.

منبع: شهرام انسان

msaleh
چهارشنبه 21 آذر 1386, 09:42 صبح
آخر من نفهمیدم که تلفظ صحیح این AJAX به چه صورتی است؟

بعضی ها میگن آژاکس !!!

برخی هم میگن اِی-جکس !!!

کدومشون درسته؟

roozbeh_black
چهارشنبه 21 آذر 1386, 12:39 عصر
سلام.!
فکر میکنم اِی-جکس درست باشه.!

oxygenws
چهارشنبه 21 آذر 1386, 15:25 عصر
ظاهرا هر دو تاش درسته :)
http://www.yourdictionary.com/ajax
http://www.m-w.com/cgi-bin/audio.pl?ggajax01.wav=Ajax
http://www.hyperdic.net/dic/ajax.htm

JaguarXF
یک شنبه 01 اسفند 1389, 00:15 صبح
من در حال evaluate کردن ZK برای پروژه بعدیم (http://barnamenevis.org/showthread.php?275272-DNA-Sequencing) هستم.
"معایبی" اگر کسی که باهاش عملا "کار" کرده رو سراغ داره بگید ببینم کجاها باهاش مشکل داشتید؟