abadanboy
دوشنبه 23 مهر 1386, 16:52 عصر
شش ابزار برای توسعه ایجکس - بررسی اجمالی ابزارهای اپن سورس AJAX
http://www.shabakeh-mag.com/Data/1002906_b.jpg ترجمه: شیوا گرامی
ماهنامه شبکه - مهر ۱۳۸۵ شماره 69
اشاره :
بستههای نرمافزاری گوگل، مایکروسافت، یاهو، Zimbra، و OpenRico/Prototype Dojo، گوناگونیِ کتابخانههای قابل دسترس برای توسعهدهندگان ایجکس را به نمایش میگذارند. اگر می خواهید ایجکس (AJAX) را به مجموعه لغات جادویی که توسط وب سایتتان پشتیبانی میشوند، اضافه کنید (و چه کسی می تواند در برابر این جذابیت مقاومت کند؟)، مجبور به انتخاب یکی از دو روش هستید: یک بسته نرم افزاری اختصاصی خریداری کنید یا با کتابخانههای اپنسورس این کار را انجام دهید. در این مقاله چند برنامه اپنسورسی مورد بررسی قرار میگیرند.
منبع: اینفو ورلد
تعداد بسیار زیادی از بسته ابزارهای اپنسورسی که من بررسی کردم، با ایجکس (Asynchronous JavaScript and :XML) که بیشتر از یکسال از پیدایش آن نمی گذرد، کار میکنند.
ایده استفاده از جاوااسکریپت همراه با یا بدونXML برای افزایش هوشمندی و کارایی صفحه وب به اولین روزهای پیدایش وب برمیگردد و ایجکس هم اکنون یکی از بهترین روشها برای توزیع برنامههای کاربردی کلاینت با کمترین دردسر می باشد.
اگر علاقمندید بدانید که آیا این بستههای نرمافزاری اپن سورس با بهترین ابزارهای تجاری رقابت می کنند یا نه، آسانترین پاسخ این است که بگوییم در کلیات نه، ولی گاهی در جزئیات خاص، بله.
بهترین برنامههای کاربردی اختصاصی شناختهشده مانند: Backbase ،JackBe، و Tibco's General Interface، همگی محیطهای پیشرفته را همراه با بسته ابزارهای جامع، eventهای سطح بالاو debuggerها، ارائه میکنند. با آنها، میتوانید برنامههای کاربردیای را که در محیط محدودی از یک مرورگر وب اجرا میشوند، اما تقریباً همه فیچرهای کد محلی را ارائه میکنند، بنویسید.
هیچکدام از بستههای نرمافزاری اپنسورسی که من بررسی کردهام، به لحاظ تعداد و وسعت، به پای بستههای نرمافزاری تجاری، نمیرسند. اما این به این معنی نیست که موارد ارزشمندی در پروژههای اپن سورس ایجکس وجود ندارد، بلکه همین حالا هم علاقه زیادی به این محیط وجود دارد.
شش انتخاب
پس از بررسی بیش از دوازده بسته نرمافزاری خوب و هزارها راهحل جامع و کامل، بسته ابزارهای قدرتمندی را که توسط شرکتهای معتبر پشتیبانی میشوند انتخاب کردم که عبارتند از: DOJO ،Google Web Toolkit ،Microsoft Atlas ،Open Rico and Prototype ،Yahoo AJAX Library و Zimbra's Kabuki AJAX Toolkit ممکن است کهMicrosoft Atlas اپنسورس نباشد (به مجوز نیاز داشته باشد)، اما کدی که شما با سیستم ایجاد میکنید بسته به نوعی که خودتان تمایل دارید، مجوز میگیرد و قادر خواهید بود که برنامههای کاربردی Atlas را با محدودیتهای کاربردی اندک، ایجاد کنید.
شش برنامه کاربردی که مورد بررسی قرار گرفتند، همگی دارای تعداد زیادی ابزارهای بسیار سودمند، جهت تولید واسط کاربر و background میباشند که مراحل ساخت یک برنامه کاربردی ایجکس را آسان میکنند.
توسعهدهندگان وب، استفاده از برنامههای کاربردی را هنگامی که تنها میخواهند قسمت کوچکی را به وبشان اضافه یا صفحهای را بروزرسانی کنند، ترجیح میدهند. چنانچه برای مثال، میخواهید یک پانل متحرک یا یک جدول پویا را اضافه کنید، معمولاً میتوانید آنها را Copy و Paste کنید. این مثالها عموماً با روش گفتهشده قابل انجام هستند.
با این حال اگر بخواهید کاری را انجام دهید که با چارچوب اولیه متفاوت باشد،لازم است تغییراتی را در کد اعمال نمایید. این موردی آشنا برای برنامهنویسانی است که از برنامههای اپنسورس استفاده میکنند: اغلب کد کاملاً خوب است، اما به نظر میرسد که توسعهدهندهها ترجیح میدهند کد موجود را کنار گذاشته و از ابتدا کدنویسی کنند تا اینکه مهندسی مجدد انجام دهند؛ حتی اگر این کار راحتتر باشد.
به عنوان نمونه، با برخی از این ابزارها، تنها چند دقیقه از وقت من صرف اضافه کردن یک جدول از دادهها که میتواند روی کلاینت ذخیره شده باشد، میشود. اما اگربخواهم بیدرنگ چیزی را بسازم یا کار متفاوتی انجام دهم، کد شکسته شده و مستندات هم کمک نخواهد کرد.
این بههمریختگی بدین معنی است که هر تیم توسعهدهنده، قبل از به کارگیری ابزارهای ایجکس، باید در مورد محیطی که میخواهد کار کند، به خوبی فکر کند. اگر برنامهنویسانی دارید که توانایی، زمان و انعطافپذیری استفاده از کدهای اپنسورس را دارند، این ابزارها، فوقالعادهاند. اگر شما یک برنامهنویس جدید یا کسی هستید که وقت کافی برای درگیر شدن در یک پروژه را ندارید، باید مجدداً هزینهها را برآورد کرده و به بستههای نرمافزاری حرفهای بیشتر توجه کنید.
http://www.shabakeh-mag.com/Data/Gallery/s69_ajax_5_s.jpgDOJO
اگر یک پروژه اپن سورس ایجکس وجود داشته باشد که پیشتاز باشد، حتما ًDOJO است. لزوما ًDOJO در هر ویژگی از بقیه بهتر نیست، اما هم به لحاظ وسعت و هم عمق، همراه با مجموعه بزرگی از اجزای قابلتغییر، بر دیگران برتری دارد. شاید همین ویژگی سبب شده است که اخیراً شرکتهای آیبیام و سان، پشتیبانی DOJO را بپذیرند.
پروژه وبسایت و کدنویسی آن که از امکانات اپن سورس استفاده میکند و توسط یک تیم توسعهدهنده مشتاق و بیطرف، اجرا شد به طور بیسابقهای مورد توجه قرار گرفت. مدیریت و هدف این پروژه، به طور مشخص، تشویق هرچه بیشتر به فلسفه اصلی DOJO، یعنی شفافیت و سهولت، بود.
DOJO یک بسته ویرایشی عالی دارد، مجموعه جامعی از تصاویر متحرک، برخی ابزارهای drag and drop و خیلی چیزهای دیگر. ابزاری برای تولید نقشهها از گوگل و یاهو نیز، در نسخه اخیرآن یعنی 1.3.0 ایجاد شده است.
احساس میکنم DOJO نیز کمی با مشکلات کیفی معمول در پروژههای اپن سورس، درگیر است. برخی از قسمتهای کتابخانه به خوبی مستندسازی شده است و از طریق مجموعه خوبی از صفحات دمو، نشان داده میشود. قسمتهای دیگر مستندسازی کمتری داشته و مستندسازی به عهده خود توسعهدهندگان، واگذار میشود که چنانچه تمایل داشته باشند، خود راهنمایی برای شرح پروژه، ایجاد کنند.
اضافهکردن بسته ابزار DOJO به برنامه کاربردی وب شما، خیلی ساده است. منبع کد به صورت ماجولار است. بنابراین برنامه کاربردی شما تنها باید قسمتهایی را که از مکانیزم لود DOJO استفاده می کنند، لود کند. در بیشتر موارد تنها چیزی که باید اضافه کنید، یک خصوصیت اضافی، از نوع DOJO، برای کار HTML شما میباشد. سپس کد، کار خود را زمانی که صفحه لود میشود، انجام میدهد.
DOJO به پیشرفت خود ادامه میدهد تا توسعهدهندگان بیشتر با ایدهها و کدهای بیشتر را از سایر پروژهها جذب نماید. رهبرانDOJO برای حفظ این همکاری خوب کار میکنند و دلایل بسیاری وجود دارد که آنها مهارت خود را درآینده نیز بیشتر کنند.
Zimbra Kabuki AJAX Toolkit http://www.shabakeh-mag.com/Data/Gallery/s69_ajax_6_s.jpg
هنگامی که Zimbra به عنوان یک راهحل کامل برای پستالکترونیکی و مدیریت تقویم کاری در یک شرکت، پدیدار شد، خیلیها تحتتأثیر استفاده پیشرفته ایجکس در تمامی سطوح قرار گرفتند.
با اینکه مجموعهای از ابزارها تحت مجوز یک انجمن، در دسترس است، Zimbra بسته ابزار ایجکس را در بسته نرمافزاری جداگانهای به نام Kabuki که تحت مجوز، Apache یا Mozilla بود، قرار داد.
این بسته ابزار حاوی برخی ابزارها و اجزا کاربردی است و تمامی قسمتهایی که در بستههای بزرگتر دیده میشد را در برنمیگیرد.
این بدان معنی نیست که Zimbra بسته ابزار کوچکی است. Kabuki ویرایشگر بسیار قوی، بسته ساختاردرختی، و مکانیزم طرح بندی که برای ساخت واسط کاربرهای پیچیده قابل استفاده میباشد را دارد.
سیستم Zimbra مانند بستههای ایجکس DOJO یا Yahoo، دموهای واضح و پیشرفته ندارد. اجزا کاملاً کاربردی و البته ابتدایی هستند. هیچ اثری از تصاویر متحرکی که برخی مردم انتظار دیدن آن را زمانی که از جاوااسکریپت استفاده میکنند تا یک واسط کاربر را اجرا کنند، نیست.
میتوانید برخی از این موارد را با style sheetهای صحیح و طراحی خوب، اصلاح نمایید، اما باید برنامهنویسی اضافه انجام دهید. اگر میخواهید این کار انجام شود، مکانیزم Zimbra Ajax ابزارهای کاربردی بسیاری دارد.
http://www.shabakeh-mag.com/Data/Gallery/s69_ajax_4_s.jpgGoogle Web Toolkit
عجیبترین ابزار در این دسته، شاید گوگل باشد؛ چرا که بقیه ابزارها، با جاوااسکریپت نوشته شدهاند و به کد جاوااسکریپت خودشان، ترجمه شده و کامپایل میشوند، اما بسته ابزار وب گوگل، با جاوا نوشته شده و به جاوااسکریپت ترجمه میشود. زمانی که کد خود را مینویسید، جاوا مینویسید و میبینید که به جاوااسکریپت ترجمه شده است.
این موضوع به عجیبیِ چیزی که به نظر میآید نیست؛ چرا که جاوااسکریپت حداقل به لحاظ قواعد نحوی ظاهری، تا حدی شبیه به جاوا است. اینکه برخی اطلاعات با کد جاوا وارد شوند و با چیزی شبیه به جاوااسکریپت، خاتمه یابند، مسئله پیچیدهای نیست.
کامپایل یک راه حل جذاب است و چیزی است که برنامهنویسان جاوا هم آن را دوست دارند و هم در این مورد نگران هستند. خود من نیز گاهی در مواردی که جاوااسکریپت کمی متفاوت از جاوا رفتار میکند، سردرگم میشوم.
در کل استفاده از سیستم گوگل را به طور شگفتآوری، آسان یافتم. کار با این سیستم شبیه به کار با
Abstract Windows Toolkit) AWT)، یا نسخه سادهتر Swing است. بسته نرمافزاری به گونهای طراحی شده است که میتوان یک برنامه کاربردی کامل را داخل مرورگر اجرا کرد؛ نه اینکه فقط به محتویات صفحات چیزی را اضافه نمود.
http://www.shabakeh-mag.com/Data/Gallery/s69_ajax_3_s.jpgOpen Rico and Prototype
یکی از برجستهترین پروژههای کاملاً اپنسورس ایجکس از به هم پیوستن مجموعهای از پروژههای مجزا، شاملRico و Prototype ساخته شده است.
مانند Dojo که یک پروژه بزرگ منفرد است که به صورت یک پروژه یکپارچه میباشد، این دو و برخی پروژههای کوچکتر دیگر نیز همگی از لحاظ فنی، مستقل میباشند.
برای هر کسی این فکر پیش میآید که آیا پروژههای مستقل خوب هستند یا نه، اما از نتایج به دست آمده مشخص شده است که این کتابخانه مجزا نیز کارکردی همانند بقیه کتابخانهها را دارد.
Rico و Prototype، بیشتر روی افکتهای تصاویر متحرک، تأکید داشته است و کمتر به ابزارهای عملی میپردازد. به عنوان مثال، فاقد ساختار درختی یا تأکیدی برای جمعآوری دادهها از یک فرم میباشد، اما افکتهای تصاویر متحرک و ابزارهای قدرتمند دیگری نظیر مجموعهای از پانلهای آکاردئونی، وجود دارند.
کتابخانه Prototype مجموعهای ابتدایی از ابزارهای سطح پایین جهت برنامهنویسان است. این مجموعه دارای تابعهای واضح و ساده است تا سرعت دانلود را افزایش دهد. بیشتر توابع مشترک، خلاصهنویسی شدهاند و اگر بخواهید از تابعی برای کد خودتان استفاده کنید، صرفنظر از اینکه از مکانیزم دیگری استفاده میکنید، این کار یعنی خلاصهنویسی انجام می شود؛ چرا که یکی از اصول این کتابخانه، خلاصهنویسی برای دستیابی به کدنویسی منعطفتر و آسانتر می باشد.
Rico مجموعهای از برخی ابزارهای عمومی و تصاویر متحرک ایجکس است که در بالاترین قسمت Prototype ساخته میشود. نیازی نیست که Rico را با Prototype استفاده کنید، اما اگر این کار صورت گیرد، ساخت برنامههای کاربردی ایجکس آسانتر میشود و تمامی امکاناتی که آنها ارائه میکنند، از این طریق قابل دستیابی است.
من خودم به طور خاص،LiveGrid متعلق بهRico را خیلی دوست دارم، مجموعهای از روتینها که از طریق الحاق دادهها به پسزمینه زمانی که بین ردیفهای جدول اسکرول میکنید، یک جدول HTML را بالا میبرد. بنابراین نمایش حجم زیادی از دادهها در یک مجموعه کوچک از ردیفها بدون اینکه کاربر را مجبور به لود صفحهای بعد از صفحه دیگر کند، آسان میگردد. من Rico را نسخه کوچکتر و آسانتر Dojo که اجزایی بهتر از آن مانند پشتیبانی ازDrag&Drop دارد، میدانم.
http://www.shabakeh-mag.com/Data/Gallery/s69_ajax_2_s.jpgMicrosoft Atlas
دنیای نرمافزار اغلب به دو بخش تقسیم میشود: مایکروسافت و بقیه. این گروهبندی زمانی که به جاوااسکریپت و ایجکس فکر میکنیم، تقریباً کامل و دقیق به نظر میرسد.
مایکروسافت از طریق برخی امکانات پیچیده و کامل ایجکس، فضای قابلقبولی را به وجود آورده است و این کار را با پدید آوردن Atlas، گسترش داده است.
ممکن است کتابخانه Microsoft Atlas، رایگان باشد، اما دستیابی به آن برای کسانی که از بسته نرمافزاری Visual Studio مایکروسافت استفاده نمیکنند، آسان نیست.
مایکروسافت خیلی خوشحالتر خواهد بود که شما صدها مگابایت از ابزارهای توسعه را قبل از نصب کتابخانههایAtlas JavaScript، که کارهای بسیاری را انجام میدهند، دانلود کنید. واقعاً نمی توانید بدون اینکه از برخی موانع عبور کنید، به کتابخانههای JS دسترسی پیدا کنید. مثلاً من با مکینتاش خودم نتوانستم این کار را انجام دهم.
کتابخانهها هم به تنهایی، متقاضیان کمی دارند. آنها مرورگرهای خوبی را که کاربران فایرفاکس و Safari را پشتیبانی میکنند، ارائه میدهند، چیزهایی که شاید کاربران متنفر از مایکروسافت را متعجب میکند، اما محدودیتهایی در این الزامات وجود دارد: من این جمله را بارها در مستندات دیدم <برای اجرای Atlas روی Safari، مبلغ ... را پرداخت کنید.> و همینطور جملات مشابهی برای کاربران فایرفاکس.
اجزای مجموعه Atlas، حداقل در مقایسه با بقیه موارد ارائه شده، کمی پراکنده میباشد. مثلاً ادیتورهای زیادی وجود ندارد. همچنین ابزارهای تصاویر متحرک نیز اندک هستند. بیشتر کارها به جای اینکه ایجکس را با سرور درگیر کند، سرویسهای وب داتنت را به کار میگیرد. که در این حالت، مستندات و نمونهها، بسیار خوب میباشند.
مکانیزمهای زیادی برای گرفتن اطلاعات از بانکهای اطلاعاتی و فرمت آنها در کلاینت، وجود دارند. بیشتر آنها به شدت متکی به #C روی سرور هستند و تمام آنها به خوبی با جاوااسکریپت روی کلاینت در تعامل میباشند.
کدها به وضوح در پلتفرم دات نت، بسط داده میشوند و تنها ابزاری برای یکی کردن اجزا در کلاینت، نیستند. اگر به سرمایهگذاری در داتنت خیلی علاقمند هستید و میخواهید زیربنای سرویسهای وب سیستمتان را با این پلتفرم داشته باشید، Atlas روش خوبی برای زندگی بخشیدن به صفحات وبتان از طریق استفاده از سرویسهای موجود در آن میباشد.
http://www.shabakeh-mag.com/Data/Gallery/s69_ajax_1_s.jpgکتابخانه Yahoo AJAX
کتابخانه ایجکس یاهو، نه تنها یک مجموعه نیرومند از توابع است، بلکه نمونه خوبی از نحوه انتشار نرمافزارهای اپن سورس میباشد.
کدی که برای اضافهکردن گروهی از موارد به برنامه کاربردی تحت وب شما میباشد، به صورت فایلی زیپ شده بوده و یاهو نمونههای بسیار زیاد و طرح پیشنهادی را در اختیار میگذارد. برای بیشتر روتینها شش تا ده مثال همراه با نمونه کدها و صفحات نمایشی وجود دارد.
این مورد به طور مشخص از دیگر بستههای نرمافزاری، متفاوت است؛ زیرا یاهو میخواهد فلسفه طراحی را همراه با انتقال کدهای آن قرار دهد.
این شیوه بسیار مهمتر از چیزی است که به نظر میرسد؛ زیرا عموم کاربران هنوز نیازمند آموزشهای گستردهای در مورد نحوه رفتار برنامههای کاربردی ایجکس میباشند. طراحان یاهو میخواهند رفتاری منعطف و ثابت را برای اجزای ایجکس و مستندات بسیار جامعی که کاربران را تشویق به استفاده از ایجکس میکند، در کتابخانه خود جا دهند.
مجموعه امکانات در کتابخانه یاهو قوی است، اما نه به بزرگی کتابخانه DOJO. کتابخانه یاهو دارای ابزارهای استاندارد بسیار مانند کتابخانه تصاویر متحرک و مجموعه ساختارهای درختی میباشد، اما ابزارهای قابلتوجهی مانند ادیتور یا جدول پویای موجود در یاهو را ندارد.
اما یاهو برخی موارد جالب توجه هم دارد. به عنوان نمونه، کتابخانه تصاویر متحرک، با برخی ابزارهای استاندارد در تعامل است؛ ابزارهایی نظیر اسکرولکننده متن که به شما اجازه میدهد رفتار برخی از قسمتهای HTML را خودکار کنید. یا اینکه مدیر ارتباط به طور خودکار دادههای به دست آمده از یک فرم را ترکیب کرده و به فرمت صحیح قابل استفاده جهت برنامه کاربردی GET یا Post، تبدیل میکند.
بهرغم کمبود ادیتور، این تعامل کتابخانه یاهو، احساس منعطفتری را در مقایسه با آشفتگی و به هم ریختگیOpen Rico و Zimbra، به وجود میآورد. هنگامی که با بسته ابزار یاهو کدها را بررسی میکنید، به این نتیجه میرسید که این شرکت زمان بیشتری را صرف بهینهکردن توابع و توسعه کتابخانهها کرده است.
شروعی در آینده
فکر میکنم با توجه به چیزهایی که بستههای نرمافزاری اپنسورس ایجکس عرضه کردهاند، شاهد تفاوتهای بیشتری بین بستههای نرمافزاری که مستقیماً به یک شرکت منسوب هستند و بستههایی که تنها محدود به یک شرکت ویژه نمیباشند، خواهیم بود.
پیشبینی میکنم که گوگل، مایکروسافت و یاهو، کنترلهای بیشتری را اعمال خواهند کرد و راهنماهای تدوین شده پروژههای ایجکس خود، در مقایسه با سایر بستههای نرمافزاریشان، بهتر خواهد بود. این کنترلها به کسانی که خواهان شفافیت بیشتر و مستندات بهتر میباشند، کمک خواهد کرد. همانطور که انتظار میرود، این نوع از فروشندگان نسبت به بقیه، باید تلاش بیشتری بکنند.
اینگونه تسهیلات همیشه با افزایش قیمت همراه است؛ هرچند که اندک باشد. به عنوان نمونه، کتابخانه جاوااسکریپت همیشه برای پشتیبانی نقشههای تجاری یاهو، حضور خواهد داشت. از طرف دیگر کتابخانههایDOJO، حتی با طرحهای گوگل یا یاهو کار خواهد کرد.
در ضمن، بستههای نرمافزاری سنتی برای جذب سهم بازار و همکاری، توسعه بیشتری پیدا کرده و متنوع تر خواهند شد. پیش از این نیز برخی ازقسمتهای DOJO، از امکاناتی که در برنامههای اپنسورسی که جهت استفاده از DOJO مجدداً نوشته شدند، نشأت گرفتند. به نظر میرسد که درآینده، افراد کمی، روی اضافه کردن خطهایی به کدهای پروژههایشان، کار کنند؛ زیرا برای آنها به کاربردن کتابخانهها با پروژههایشان، راحتتر خواهد بود. به طور مشابه بستههای نرمافزاری سنتی نیز برای تبدیل شدن به بستههایی که ایدههای مؤثر و چیزهای جذاب با کمترین زمان و نرخ را ارائه میکنند، تلاش خواهند کرد.
واضح است که موارد ذکر شده تنها در حد پیشگویی است. در حال حاضر اساس DOJO توسط شرکتهای بزرگ، تحت بررسی است، اتفاقاً این کار با تمرکز بر کارایی و شفاف سازی مستندات آن، شروع خواهد شد.
صرفنظر از اینکه چطور این ابزارها کار میکنند، بهترین راه برای استفاده از همه این بستههای نرمافزاری اپنسورس، به کار بردن و انتخاب قسمتهایی است که برای چیدن برنامه کاربردی تحت وبی لازم هستند. برای مثال، من ادیتور DOJO را از یکی از پروژههایم، زمانیکه ادیتور متن آن دستیابی به دادهها به فرمتی که ساخته بودم را ارائه نمیکرد، حذف کردم.
خیلی سخت است که یک کتابخانه ویژه را به عنوان بهترین، پیشنهاد کرد یا اظهارنظر قاطعی را در مورد برتری آنها مطرح کرد؛ زیرا بسیاری از ابزارهایی که بهنظر نامناسب میآیند، بستگی به روش و نیازمندیهای برنامهنویسی شما دارد. توصیه میکنم از این کتابخانهها به نوبت یا حتی به صورت ترکیبی استفاده کنید و آنها را با هم بهکاربندید. در هر صورت، دلایل اندکی وجود دارد که نتوانید از کدهای Atlas و DOJO در یک صفحه استفاده کنید.
منبع : مجله شبکه
http://www.shabakeh-mag.com/Data/1002906_b.jpg ترجمه: شیوا گرامی
ماهنامه شبکه - مهر ۱۳۸۵ شماره 69
اشاره :
بستههای نرمافزاری گوگل، مایکروسافت، یاهو، Zimbra، و OpenRico/Prototype Dojo، گوناگونیِ کتابخانههای قابل دسترس برای توسعهدهندگان ایجکس را به نمایش میگذارند. اگر می خواهید ایجکس (AJAX) را به مجموعه لغات جادویی که توسط وب سایتتان پشتیبانی میشوند، اضافه کنید (و چه کسی می تواند در برابر این جذابیت مقاومت کند؟)، مجبور به انتخاب یکی از دو روش هستید: یک بسته نرم افزاری اختصاصی خریداری کنید یا با کتابخانههای اپنسورس این کار را انجام دهید. در این مقاله چند برنامه اپنسورسی مورد بررسی قرار میگیرند.
منبع: اینفو ورلد
تعداد بسیار زیادی از بسته ابزارهای اپنسورسی که من بررسی کردم، با ایجکس (Asynchronous JavaScript and :XML) که بیشتر از یکسال از پیدایش آن نمی گذرد، کار میکنند.
ایده استفاده از جاوااسکریپت همراه با یا بدونXML برای افزایش هوشمندی و کارایی صفحه وب به اولین روزهای پیدایش وب برمیگردد و ایجکس هم اکنون یکی از بهترین روشها برای توزیع برنامههای کاربردی کلاینت با کمترین دردسر می باشد.
اگر علاقمندید بدانید که آیا این بستههای نرمافزاری اپن سورس با بهترین ابزارهای تجاری رقابت می کنند یا نه، آسانترین پاسخ این است که بگوییم در کلیات نه، ولی گاهی در جزئیات خاص، بله.
بهترین برنامههای کاربردی اختصاصی شناختهشده مانند: Backbase ،JackBe، و Tibco's General Interface، همگی محیطهای پیشرفته را همراه با بسته ابزارهای جامع، eventهای سطح بالاو debuggerها، ارائه میکنند. با آنها، میتوانید برنامههای کاربردیای را که در محیط محدودی از یک مرورگر وب اجرا میشوند، اما تقریباً همه فیچرهای کد محلی را ارائه میکنند، بنویسید.
هیچکدام از بستههای نرمافزاری اپنسورسی که من بررسی کردهام، به لحاظ تعداد و وسعت، به پای بستههای نرمافزاری تجاری، نمیرسند. اما این به این معنی نیست که موارد ارزشمندی در پروژههای اپن سورس ایجکس وجود ندارد، بلکه همین حالا هم علاقه زیادی به این محیط وجود دارد.
شش انتخاب
پس از بررسی بیش از دوازده بسته نرمافزاری خوب و هزارها راهحل جامع و کامل، بسته ابزارهای قدرتمندی را که توسط شرکتهای معتبر پشتیبانی میشوند انتخاب کردم که عبارتند از: DOJO ،Google Web Toolkit ،Microsoft Atlas ،Open Rico and Prototype ،Yahoo AJAX Library و Zimbra's Kabuki AJAX Toolkit ممکن است کهMicrosoft Atlas اپنسورس نباشد (به مجوز نیاز داشته باشد)، اما کدی که شما با سیستم ایجاد میکنید بسته به نوعی که خودتان تمایل دارید، مجوز میگیرد و قادر خواهید بود که برنامههای کاربردی Atlas را با محدودیتهای کاربردی اندک، ایجاد کنید.
شش برنامه کاربردی که مورد بررسی قرار گرفتند، همگی دارای تعداد زیادی ابزارهای بسیار سودمند، جهت تولید واسط کاربر و background میباشند که مراحل ساخت یک برنامه کاربردی ایجکس را آسان میکنند.
توسعهدهندگان وب، استفاده از برنامههای کاربردی را هنگامی که تنها میخواهند قسمت کوچکی را به وبشان اضافه یا صفحهای را بروزرسانی کنند، ترجیح میدهند. چنانچه برای مثال، میخواهید یک پانل متحرک یا یک جدول پویا را اضافه کنید، معمولاً میتوانید آنها را Copy و Paste کنید. این مثالها عموماً با روش گفتهشده قابل انجام هستند.
با این حال اگر بخواهید کاری را انجام دهید که با چارچوب اولیه متفاوت باشد،لازم است تغییراتی را در کد اعمال نمایید. این موردی آشنا برای برنامهنویسانی است که از برنامههای اپنسورس استفاده میکنند: اغلب کد کاملاً خوب است، اما به نظر میرسد که توسعهدهندهها ترجیح میدهند کد موجود را کنار گذاشته و از ابتدا کدنویسی کنند تا اینکه مهندسی مجدد انجام دهند؛ حتی اگر این کار راحتتر باشد.
به عنوان نمونه، با برخی از این ابزارها، تنها چند دقیقه از وقت من صرف اضافه کردن یک جدول از دادهها که میتواند روی کلاینت ذخیره شده باشد، میشود. اما اگربخواهم بیدرنگ چیزی را بسازم یا کار متفاوتی انجام دهم، کد شکسته شده و مستندات هم کمک نخواهد کرد.
این بههمریختگی بدین معنی است که هر تیم توسعهدهنده، قبل از به کارگیری ابزارهای ایجکس، باید در مورد محیطی که میخواهد کار کند، به خوبی فکر کند. اگر برنامهنویسانی دارید که توانایی، زمان و انعطافپذیری استفاده از کدهای اپنسورس را دارند، این ابزارها، فوقالعادهاند. اگر شما یک برنامهنویس جدید یا کسی هستید که وقت کافی برای درگیر شدن در یک پروژه را ندارید، باید مجدداً هزینهها را برآورد کرده و به بستههای نرمافزاری حرفهای بیشتر توجه کنید.
http://www.shabakeh-mag.com/Data/Gallery/s69_ajax_5_s.jpgDOJO
اگر یک پروژه اپن سورس ایجکس وجود داشته باشد که پیشتاز باشد، حتما ًDOJO است. لزوما ًDOJO در هر ویژگی از بقیه بهتر نیست، اما هم به لحاظ وسعت و هم عمق، همراه با مجموعه بزرگی از اجزای قابلتغییر، بر دیگران برتری دارد. شاید همین ویژگی سبب شده است که اخیراً شرکتهای آیبیام و سان، پشتیبانی DOJO را بپذیرند.
پروژه وبسایت و کدنویسی آن که از امکانات اپن سورس استفاده میکند و توسط یک تیم توسعهدهنده مشتاق و بیطرف، اجرا شد به طور بیسابقهای مورد توجه قرار گرفت. مدیریت و هدف این پروژه، به طور مشخص، تشویق هرچه بیشتر به فلسفه اصلی DOJO، یعنی شفافیت و سهولت، بود.
DOJO یک بسته ویرایشی عالی دارد، مجموعه جامعی از تصاویر متحرک، برخی ابزارهای drag and drop و خیلی چیزهای دیگر. ابزاری برای تولید نقشهها از گوگل و یاهو نیز، در نسخه اخیرآن یعنی 1.3.0 ایجاد شده است.
احساس میکنم DOJO نیز کمی با مشکلات کیفی معمول در پروژههای اپن سورس، درگیر است. برخی از قسمتهای کتابخانه به خوبی مستندسازی شده است و از طریق مجموعه خوبی از صفحات دمو، نشان داده میشود. قسمتهای دیگر مستندسازی کمتری داشته و مستندسازی به عهده خود توسعهدهندگان، واگذار میشود که چنانچه تمایل داشته باشند، خود راهنمایی برای شرح پروژه، ایجاد کنند.
اضافهکردن بسته ابزار DOJO به برنامه کاربردی وب شما، خیلی ساده است. منبع کد به صورت ماجولار است. بنابراین برنامه کاربردی شما تنها باید قسمتهایی را که از مکانیزم لود DOJO استفاده می کنند، لود کند. در بیشتر موارد تنها چیزی که باید اضافه کنید، یک خصوصیت اضافی، از نوع DOJO، برای کار HTML شما میباشد. سپس کد، کار خود را زمانی که صفحه لود میشود، انجام میدهد.
DOJO به پیشرفت خود ادامه میدهد تا توسعهدهندگان بیشتر با ایدهها و کدهای بیشتر را از سایر پروژهها جذب نماید. رهبرانDOJO برای حفظ این همکاری خوب کار میکنند و دلایل بسیاری وجود دارد که آنها مهارت خود را درآینده نیز بیشتر کنند.
Zimbra Kabuki AJAX Toolkit http://www.shabakeh-mag.com/Data/Gallery/s69_ajax_6_s.jpg
هنگامی که Zimbra به عنوان یک راهحل کامل برای پستالکترونیکی و مدیریت تقویم کاری در یک شرکت، پدیدار شد، خیلیها تحتتأثیر استفاده پیشرفته ایجکس در تمامی سطوح قرار گرفتند.
با اینکه مجموعهای از ابزارها تحت مجوز یک انجمن، در دسترس است، Zimbra بسته ابزار ایجکس را در بسته نرمافزاری جداگانهای به نام Kabuki که تحت مجوز، Apache یا Mozilla بود، قرار داد.
این بسته ابزار حاوی برخی ابزارها و اجزا کاربردی است و تمامی قسمتهایی که در بستههای بزرگتر دیده میشد را در برنمیگیرد.
این بدان معنی نیست که Zimbra بسته ابزار کوچکی است. Kabuki ویرایشگر بسیار قوی، بسته ساختاردرختی، و مکانیزم طرح بندی که برای ساخت واسط کاربرهای پیچیده قابل استفاده میباشد را دارد.
سیستم Zimbra مانند بستههای ایجکس DOJO یا Yahoo، دموهای واضح و پیشرفته ندارد. اجزا کاملاً کاربردی و البته ابتدایی هستند. هیچ اثری از تصاویر متحرکی که برخی مردم انتظار دیدن آن را زمانی که از جاوااسکریپت استفاده میکنند تا یک واسط کاربر را اجرا کنند، نیست.
میتوانید برخی از این موارد را با style sheetهای صحیح و طراحی خوب، اصلاح نمایید، اما باید برنامهنویسی اضافه انجام دهید. اگر میخواهید این کار انجام شود، مکانیزم Zimbra Ajax ابزارهای کاربردی بسیاری دارد.
http://www.shabakeh-mag.com/Data/Gallery/s69_ajax_4_s.jpgGoogle Web Toolkit
عجیبترین ابزار در این دسته، شاید گوگل باشد؛ چرا که بقیه ابزارها، با جاوااسکریپت نوشته شدهاند و به کد جاوااسکریپت خودشان، ترجمه شده و کامپایل میشوند، اما بسته ابزار وب گوگل، با جاوا نوشته شده و به جاوااسکریپت ترجمه میشود. زمانی که کد خود را مینویسید، جاوا مینویسید و میبینید که به جاوااسکریپت ترجمه شده است.
این موضوع به عجیبیِ چیزی که به نظر میآید نیست؛ چرا که جاوااسکریپت حداقل به لحاظ قواعد نحوی ظاهری، تا حدی شبیه به جاوا است. اینکه برخی اطلاعات با کد جاوا وارد شوند و با چیزی شبیه به جاوااسکریپت، خاتمه یابند، مسئله پیچیدهای نیست.
کامپایل یک راه حل جذاب است و چیزی است که برنامهنویسان جاوا هم آن را دوست دارند و هم در این مورد نگران هستند. خود من نیز گاهی در مواردی که جاوااسکریپت کمی متفاوت از جاوا رفتار میکند، سردرگم میشوم.
در کل استفاده از سیستم گوگل را به طور شگفتآوری، آسان یافتم. کار با این سیستم شبیه به کار با
Abstract Windows Toolkit) AWT)، یا نسخه سادهتر Swing است. بسته نرمافزاری به گونهای طراحی شده است که میتوان یک برنامه کاربردی کامل را داخل مرورگر اجرا کرد؛ نه اینکه فقط به محتویات صفحات چیزی را اضافه نمود.
http://www.shabakeh-mag.com/Data/Gallery/s69_ajax_3_s.jpgOpen Rico and Prototype
یکی از برجستهترین پروژههای کاملاً اپنسورس ایجکس از به هم پیوستن مجموعهای از پروژههای مجزا، شاملRico و Prototype ساخته شده است.
مانند Dojo که یک پروژه بزرگ منفرد است که به صورت یک پروژه یکپارچه میباشد، این دو و برخی پروژههای کوچکتر دیگر نیز همگی از لحاظ فنی، مستقل میباشند.
برای هر کسی این فکر پیش میآید که آیا پروژههای مستقل خوب هستند یا نه، اما از نتایج به دست آمده مشخص شده است که این کتابخانه مجزا نیز کارکردی همانند بقیه کتابخانهها را دارد.
Rico و Prototype، بیشتر روی افکتهای تصاویر متحرک، تأکید داشته است و کمتر به ابزارهای عملی میپردازد. به عنوان مثال، فاقد ساختار درختی یا تأکیدی برای جمعآوری دادهها از یک فرم میباشد، اما افکتهای تصاویر متحرک و ابزارهای قدرتمند دیگری نظیر مجموعهای از پانلهای آکاردئونی، وجود دارند.
کتابخانه Prototype مجموعهای ابتدایی از ابزارهای سطح پایین جهت برنامهنویسان است. این مجموعه دارای تابعهای واضح و ساده است تا سرعت دانلود را افزایش دهد. بیشتر توابع مشترک، خلاصهنویسی شدهاند و اگر بخواهید از تابعی برای کد خودتان استفاده کنید، صرفنظر از اینکه از مکانیزم دیگری استفاده میکنید، این کار یعنی خلاصهنویسی انجام می شود؛ چرا که یکی از اصول این کتابخانه، خلاصهنویسی برای دستیابی به کدنویسی منعطفتر و آسانتر می باشد.
Rico مجموعهای از برخی ابزارهای عمومی و تصاویر متحرک ایجکس است که در بالاترین قسمت Prototype ساخته میشود. نیازی نیست که Rico را با Prototype استفاده کنید، اما اگر این کار صورت گیرد، ساخت برنامههای کاربردی ایجکس آسانتر میشود و تمامی امکاناتی که آنها ارائه میکنند، از این طریق قابل دستیابی است.
من خودم به طور خاص،LiveGrid متعلق بهRico را خیلی دوست دارم، مجموعهای از روتینها که از طریق الحاق دادهها به پسزمینه زمانی که بین ردیفهای جدول اسکرول میکنید، یک جدول HTML را بالا میبرد. بنابراین نمایش حجم زیادی از دادهها در یک مجموعه کوچک از ردیفها بدون اینکه کاربر را مجبور به لود صفحهای بعد از صفحه دیگر کند، آسان میگردد. من Rico را نسخه کوچکتر و آسانتر Dojo که اجزایی بهتر از آن مانند پشتیبانی ازDrag&Drop دارد، میدانم.
http://www.shabakeh-mag.com/Data/Gallery/s69_ajax_2_s.jpgMicrosoft Atlas
دنیای نرمافزار اغلب به دو بخش تقسیم میشود: مایکروسافت و بقیه. این گروهبندی زمانی که به جاوااسکریپت و ایجکس فکر میکنیم، تقریباً کامل و دقیق به نظر میرسد.
مایکروسافت از طریق برخی امکانات پیچیده و کامل ایجکس، فضای قابلقبولی را به وجود آورده است و این کار را با پدید آوردن Atlas، گسترش داده است.
ممکن است کتابخانه Microsoft Atlas، رایگان باشد، اما دستیابی به آن برای کسانی که از بسته نرمافزاری Visual Studio مایکروسافت استفاده نمیکنند، آسان نیست.
مایکروسافت خیلی خوشحالتر خواهد بود که شما صدها مگابایت از ابزارهای توسعه را قبل از نصب کتابخانههایAtlas JavaScript، که کارهای بسیاری را انجام میدهند، دانلود کنید. واقعاً نمی توانید بدون اینکه از برخی موانع عبور کنید، به کتابخانههای JS دسترسی پیدا کنید. مثلاً من با مکینتاش خودم نتوانستم این کار را انجام دهم.
کتابخانهها هم به تنهایی، متقاضیان کمی دارند. آنها مرورگرهای خوبی را که کاربران فایرفاکس و Safari را پشتیبانی میکنند، ارائه میدهند، چیزهایی که شاید کاربران متنفر از مایکروسافت را متعجب میکند، اما محدودیتهایی در این الزامات وجود دارد: من این جمله را بارها در مستندات دیدم <برای اجرای Atlas روی Safari، مبلغ ... را پرداخت کنید.> و همینطور جملات مشابهی برای کاربران فایرفاکس.
اجزای مجموعه Atlas، حداقل در مقایسه با بقیه موارد ارائه شده، کمی پراکنده میباشد. مثلاً ادیتورهای زیادی وجود ندارد. همچنین ابزارهای تصاویر متحرک نیز اندک هستند. بیشتر کارها به جای اینکه ایجکس را با سرور درگیر کند، سرویسهای وب داتنت را به کار میگیرد. که در این حالت، مستندات و نمونهها، بسیار خوب میباشند.
مکانیزمهای زیادی برای گرفتن اطلاعات از بانکهای اطلاعاتی و فرمت آنها در کلاینت، وجود دارند. بیشتر آنها به شدت متکی به #C روی سرور هستند و تمام آنها به خوبی با جاوااسکریپت روی کلاینت در تعامل میباشند.
کدها به وضوح در پلتفرم دات نت، بسط داده میشوند و تنها ابزاری برای یکی کردن اجزا در کلاینت، نیستند. اگر به سرمایهگذاری در داتنت خیلی علاقمند هستید و میخواهید زیربنای سرویسهای وب سیستمتان را با این پلتفرم داشته باشید، Atlas روش خوبی برای زندگی بخشیدن به صفحات وبتان از طریق استفاده از سرویسهای موجود در آن میباشد.
http://www.shabakeh-mag.com/Data/Gallery/s69_ajax_1_s.jpgکتابخانه Yahoo AJAX
کتابخانه ایجکس یاهو، نه تنها یک مجموعه نیرومند از توابع است، بلکه نمونه خوبی از نحوه انتشار نرمافزارهای اپن سورس میباشد.
کدی که برای اضافهکردن گروهی از موارد به برنامه کاربردی تحت وب شما میباشد، به صورت فایلی زیپ شده بوده و یاهو نمونههای بسیار زیاد و طرح پیشنهادی را در اختیار میگذارد. برای بیشتر روتینها شش تا ده مثال همراه با نمونه کدها و صفحات نمایشی وجود دارد.
این مورد به طور مشخص از دیگر بستههای نرمافزاری، متفاوت است؛ زیرا یاهو میخواهد فلسفه طراحی را همراه با انتقال کدهای آن قرار دهد.
این شیوه بسیار مهمتر از چیزی است که به نظر میرسد؛ زیرا عموم کاربران هنوز نیازمند آموزشهای گستردهای در مورد نحوه رفتار برنامههای کاربردی ایجکس میباشند. طراحان یاهو میخواهند رفتاری منعطف و ثابت را برای اجزای ایجکس و مستندات بسیار جامعی که کاربران را تشویق به استفاده از ایجکس میکند، در کتابخانه خود جا دهند.
مجموعه امکانات در کتابخانه یاهو قوی است، اما نه به بزرگی کتابخانه DOJO. کتابخانه یاهو دارای ابزارهای استاندارد بسیار مانند کتابخانه تصاویر متحرک و مجموعه ساختارهای درختی میباشد، اما ابزارهای قابلتوجهی مانند ادیتور یا جدول پویای موجود در یاهو را ندارد.
اما یاهو برخی موارد جالب توجه هم دارد. به عنوان نمونه، کتابخانه تصاویر متحرک، با برخی ابزارهای استاندارد در تعامل است؛ ابزارهایی نظیر اسکرولکننده متن که به شما اجازه میدهد رفتار برخی از قسمتهای HTML را خودکار کنید. یا اینکه مدیر ارتباط به طور خودکار دادههای به دست آمده از یک فرم را ترکیب کرده و به فرمت صحیح قابل استفاده جهت برنامه کاربردی GET یا Post، تبدیل میکند.
بهرغم کمبود ادیتور، این تعامل کتابخانه یاهو، احساس منعطفتری را در مقایسه با آشفتگی و به هم ریختگیOpen Rico و Zimbra، به وجود میآورد. هنگامی که با بسته ابزار یاهو کدها را بررسی میکنید، به این نتیجه میرسید که این شرکت زمان بیشتری را صرف بهینهکردن توابع و توسعه کتابخانهها کرده است.
شروعی در آینده
فکر میکنم با توجه به چیزهایی که بستههای نرمافزاری اپنسورس ایجکس عرضه کردهاند، شاهد تفاوتهای بیشتری بین بستههای نرمافزاری که مستقیماً به یک شرکت منسوب هستند و بستههایی که تنها محدود به یک شرکت ویژه نمیباشند، خواهیم بود.
پیشبینی میکنم که گوگل، مایکروسافت و یاهو، کنترلهای بیشتری را اعمال خواهند کرد و راهنماهای تدوین شده پروژههای ایجکس خود، در مقایسه با سایر بستههای نرمافزاریشان، بهتر خواهد بود. این کنترلها به کسانی که خواهان شفافیت بیشتر و مستندات بهتر میباشند، کمک خواهد کرد. همانطور که انتظار میرود، این نوع از فروشندگان نسبت به بقیه، باید تلاش بیشتری بکنند.
اینگونه تسهیلات همیشه با افزایش قیمت همراه است؛ هرچند که اندک باشد. به عنوان نمونه، کتابخانه جاوااسکریپت همیشه برای پشتیبانی نقشههای تجاری یاهو، حضور خواهد داشت. از طرف دیگر کتابخانههایDOJO، حتی با طرحهای گوگل یا یاهو کار خواهد کرد.
در ضمن، بستههای نرمافزاری سنتی برای جذب سهم بازار و همکاری، توسعه بیشتری پیدا کرده و متنوع تر خواهند شد. پیش از این نیز برخی ازقسمتهای DOJO، از امکاناتی که در برنامههای اپنسورسی که جهت استفاده از DOJO مجدداً نوشته شدند، نشأت گرفتند. به نظر میرسد که درآینده، افراد کمی، روی اضافه کردن خطهایی به کدهای پروژههایشان، کار کنند؛ زیرا برای آنها به کاربردن کتابخانهها با پروژههایشان، راحتتر خواهد بود. به طور مشابه بستههای نرمافزاری سنتی نیز برای تبدیل شدن به بستههایی که ایدههای مؤثر و چیزهای جذاب با کمترین زمان و نرخ را ارائه میکنند، تلاش خواهند کرد.
واضح است که موارد ذکر شده تنها در حد پیشگویی است. در حال حاضر اساس DOJO توسط شرکتهای بزرگ، تحت بررسی است، اتفاقاً این کار با تمرکز بر کارایی و شفاف سازی مستندات آن، شروع خواهد شد.
صرفنظر از اینکه چطور این ابزارها کار میکنند، بهترین راه برای استفاده از همه این بستههای نرمافزاری اپنسورس، به کار بردن و انتخاب قسمتهایی است که برای چیدن برنامه کاربردی تحت وبی لازم هستند. برای مثال، من ادیتور DOJO را از یکی از پروژههایم، زمانیکه ادیتور متن آن دستیابی به دادهها به فرمتی که ساخته بودم را ارائه نمیکرد، حذف کردم.
خیلی سخت است که یک کتابخانه ویژه را به عنوان بهترین، پیشنهاد کرد یا اظهارنظر قاطعی را در مورد برتری آنها مطرح کرد؛ زیرا بسیاری از ابزارهایی که بهنظر نامناسب میآیند، بستگی به روش و نیازمندیهای برنامهنویسی شما دارد. توصیه میکنم از این کتابخانهها به نوبت یا حتی به صورت ترکیبی استفاده کنید و آنها را با هم بهکاربندید. در هر صورت، دلایل اندکی وجود دارد که نتوانید از کدهای Atlas و DOJO در یک صفحه استفاده کنید.
منبع : مجله شبکه