بررسی فریمورک‌های توسعه وب

بررسی و مقایسه فریمورک‌های مختلف توسعه وب و پلتفرم‌های توسعه نرم‌افزار تبدیل به یکی از فعالیت‌های همیشگی من شده. فریمورک‌های مختلفی مثل ASP.NET MVC و Rails و Django و MEAN (Node.js) را بر اساس معیارهای مختلف مثل سرعت یادگیری، سرعت توسعه، سرعت اجرا، Reusablity، امکان توسعه در دسکتاپ‌های غیر ویندوزی، بازار کار، Batteryها، Startup Friendly بودن و چیزای دیگه مقایسه می‌کنم. انصافاً هم بررسی راحتی نیست. خصوصاً اگر تجربه کار با تک تک اونها را نداشته باشید. هر کدام از این فریمورک‌ها برای شرایط به‌خصوصی مناسب هستند.Rails بازار کار خوبی در خارج ایران دارد، یادگیری و استفاده از اون راحت است و معماری اون شباهت زیادی به ASP.NET MVC دارد. Startup Friendly است و خیلی سریع می‌شود باهاش MVP (حداقل محصول) تولید کرد. ریلز جامعه کاربری پویا و Battery های فراوانی داره. ولی در عوض سرعت اجرای پایینی دارد و به همین دلیل در کاربردهایی که سرعت مهم است مناسب نیست. در این‌طور موارد بعضاً با Node.js جایگزین می‌شود. برنامه‌نویس‌های ریلز در ایران خیلی کم پیدا می‌شوند و بر خلاف C# و Python و JavaScript که با یادگیری یک زبان میشه چند کار دیگه هم انجام داد (مثل توسعه نرم‌‌افزارهای desktop یا توسعه Front End)، با روبی فقط میشه یک کار انجام داد و اون هم توسعه وب است.
Django ماهیتاً تفاوت زیادی با Rails و ASP.NET MVC نداره ولی دو تا چیز مفید توی جانگو هست که توی اون دو تای دیگه نیست. بخش Admin جانگو در applicationهای وبی که بخش ادمین دارند (بیشتر پروژه‌های وبی سفارش مشتری) کار راه بندازه و صرفه‌جویی زمانی خوبی خصوصاً در اول پروژه ایجاد می‌کنه چون نیاز به پیاده‌سازی CRUDهای تکراری رو از بین می‌بره. جانگو یک امکان خوب دیگه هم برای صرفه‌جویی زمانی در طول پروژه‌های مختلف داره. اسم این امکان خوب، app است. هر پروژه در جانگو به چند app تقسیم می‌شود. App ها می‌توانند در پروژه‌های مختلف استفاده بشوند بدون آنکه وابستگی کدی خیلی زیادی داشته باشند. مثلاً شما می‌تونید یک app برای ticketing یا accounting داشته باشین و اونو برای چند پروژه دیگه هم به عینه استفاده کنید بدون آنکه مجبور به کپی کد از یک پروژه به پروژه دیگه و داشتن چندین نسخه از یک کد بشوید. بدی جانگو اینه که بازار کار خیلی کوچک‌تری از Rails و ASP.NET داره و خیلی کمتر شناخته شده است. یادگیری اون هم نسبت به Rails سخت‌تر است.

ASP.NET MVC در ایران و خارج از ایران رواج زیادی داره. برنامه‌نویس‌هاش رو خیلی راحت میشه پیدا کرد. بازار کار خوبی داره. در محیط‌های Enterprise مقبول‌تره، پشتیبانی از دیتابیس‌های خیلی زیادی رو داره، و پشت اون زبان چند منظوره و به روز C# قرار داره. ولی هنوز چندان Cross Platform نیست. جامعه کاربری آن پویایی جامعه کاربری Rails یا Nodes.js رو نداره. و تازه چند ماهه که میشه روی دسکتاپ لینوکسی باهاش کار کرد. Batteryهای اون کمتره و در دنیای Open Source محبوبیت کمتری داره.

راجع به Node.js نمی‌تونم چیز زیادی بگم چون تجربه کمی از اون دارم، به شدت در حال توسعه و تغییره و دنیای وسیعی هم داره. Node.js خودش فریمورک توسعه وب نیست بلکه چیزهایی مثل MEAN فریمورک هستند. سرعت اجرای Node.js خیلی بالاست. موضوع روزه و خیلی خوش رزومه‌است. زبان برنامه‌نویسی اون در front end هم کاربرد داره و افراد زیادی از قبل با اون آشنا هستند. اما مشکلش اینه که هنوز در حال توسعه و تغییره، گویا با دیتابیس‌های متعارف Relational رابطه خوبی نداره و علاوه بر این درست در نقطه مقابل Rails شما مجبور هستید برای انجام هر کاری اونو به طور کامل تعریف کنید و جزییاتش رو مشخص کنید تا قابل استفاده باشه.

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

Published by

Afshar Mohebbi

A Software developer.

2 thoughts on “بررسی فریمورک‌های توسعه وب”

Leave a Reply

Your email address will not be published. Required fields are marked *