
فریمورک چیست؟ و چه تفاوتی با کتابخانه دارد؟
نویسنده : adminesr|10 تیر 1402
مقالات
فریمورک ( framework ) چیست ؟ اگر به تازگی به حوزه برنامه نویسی علاقه مند شدید یا اینکه تازه وارد این حوزه شدید قطعا چندین بار واژه فریمورک به گوشتون خورده و براتون یک کلمه آشنا است . خوب معنی , مفهوم و کار این واژه آشنا چیست ؟
فریم ورک یا فریمورک در فارسی به معنی چهارچوب است . این فریمورک یا چهارچوب در برنامه نویسی به یک مفهوم اشاره دارد . به این معنی که فریم ورک در واقع محیطی را برای شما فراهم می کند که نیازی به کد نویسی اضافی نداشته باشید و بتوانید تمرکز را روی قسمت های خاصی از پروژه که نیاز به دقت و بررسی بیشتری دارد بگذارید .
آنچه در این مقاله خواهیم خواند…
- فریمورک چیست ؟
- انواع فریمورک و کاربرد هر کدام از آن ها
- فریم ورکهای زبان برنامه نویسی PHP
- میکرو فریم ورک PHP
- فریم ورکهای زبان جاوااسکریپت
- فریم ورکهای زبان برنامه نویسی Python
- تفاوت فریمورک با کتابخانه
- لایبرری ( library ) چیست؟
فریمورک چیست ؟
اگر بخوایم واضح تر بگوییم در واقع فریم ورک قابلیتی است که با استفاده از مجموعه ای از دستورالعمل ها، کتابخانه ها، رابط کاربری، کلاس ها و در کل با استفاده از امکانات یک نرم افزار یا یک زبان برنامه نویسی، یک ساختاری جدید ایجاد می کند ، که این ساختار جدید به همان نرم افزار یا زبان برنامه نویسی کمک کند تا پروژه هایی که قرار است توسط این نرم افزار یا زبان برنامه نویسی پیاده سازی بشود ساده تر و با نتیجه بهتری به مرحله اجرا برسند .
به طور کلی هدف از ایجاد فریمورک ها فراهم کردن ساز و کاری است که به واسطه آن بشود از امکانات یک نرم افزار یا زبان برنامه نویسی سریعتر و حتی به شکل کاملتر و حرفه ای تری استفاده کرد . البته باید در نظر داشته باشیم که استفاده و یا استفاده نکردن از فریم ورک کاملا بسته به موقعیت ، نیاز ما دارد .
به عنوان مثال در دنیای وب و طراحی وب سایت که سرعت بالا آمدن وب سایت از فاکتور های اصلی و مهم است ، استفاده از فریمورک ممکن است به این فاکتور اصلی ضربه بزند ، پس استفاده از فریم ورک ها باید با احتیاط بیشتری انجام بشود .
در یک پاسخ کلی به این سوال که آیا استفاده از فریمورک در برنامه نویسی خوب است یا خیر؟
می توان گفت بله به طور کلی خوب است . به کاهش زمان توسعه و افزایش قابلیت توسعه پذیری در زمان برنامه نویسی و طراحی سایت کمک می کند . همینطور میشود در مورد فریمورک های تحت سیستم عامل مانند جاوا و دات نت، یک بار نوشتن و اجرا روی چندین سیستم عامل از نظر اقتصادی بسیار مهم استند .
انواع فریمورک و کاربرد هر کدام از آن ها:
در ابتدا و قبل از تقسیم بندی براساس زبان برنامه نویسی بهتر است در دو دسته کلی فرانت اند (Frontend) و بک اند ( Backend) فریمورک ها رو بررسی کنیم .
یادآوری : به برنامه نویسی ظاهر و رویه سایت می گوییم برنامه نویسی فرانت اند ( Frontend ) در واقع منظور همون ظاهری است که کاربر می بینه .
به کدهایی که نوشته می شود تا فرایندها اجرا بشوند و پردازش انجام بشود برنامه نویسی بک اند( Backend ) می گویند، این قسمت کدهایی استن که کاربر هیچ اطلاعی از آنها ندارد و بدون این کدها انگار یک صفحه طراحی شده رو فقط می بینید که هیچ اتفاقی در آن نمی افتد!
خوب ! فریم ورکهای بک اند یا سمت سرور (server-side) کارهایی مثل نوشتن، نگهداری و توسعه کدها را برای برنامه نویس آسانتر میکنند. این فریم ورکها، امنیت وبسایت را هم افزایش میدهند. در مورد اهمیت فریم ورک های بک اند ، سایت رسمی Mozilla، این طور میگوید که:
“شما مجبور به استفاده از فریم ورک های بک اند نیستید ولی خیلی زیاد توصیه میشود که از آنها استفاده کنید، چون که زندگی را برایتان سادهتر می کنند!” اگر بخواهیم چندتا از فریم ورک های سمت سرور یا بک اند را مثال بزنیم می توانیم از Django، Ruby On Rails، Laravel اسم ببریم .
درمورد فریمورکهای فرانت هم با توجه به تاثیر مستقیم ظاهر سایت روی احساسی که کاربر از سایت و یا یک اپلیکیشن می گیرد ، مشخصا اهمیت زیاد فریم ورکها در این قسمت را نمیشود نا دیده گرفت
اگه بخواهیم چند مثال خوب بزنیم برای فریمورکهای سمت فرانت اند می توان به Bootstrap، Foundation، Semantic-UI و Skeleton اشاره کرد .
خوب در اینجای مقاله اول چندتا از معرفترین فریم ورک ها را خیلی خلاصه بررسی می کنیم و بعد برای فریم ورک های بعضی از زبان های برنامه نویسی پرکاربرد را بررسی می کنیم.
CakePHP : محبوبیت CakePHP در بین برنامهنویسان به خاطر این است که میتوان با حداقل کدنویسی، قابلیتهای منحصربهفردی را ایجاد کرد. CakePHP بر مبنای معماری MVC و نقشهبرداری دادههای ارتباطی طراحی و ساخته شده. یک فریم ورکِ متن باز و تحت لیسانس MIT است و به همین سبب بهراحتی میتوان از آن برای ساخت وب اپلیکیشنهای عمومی استفاده کرد. داشتن راهنمای عملی و داکیومنت دقیق، یادگیری و کار را خیلی ساده می کند . از طرف دیگر با وجود قابلیتهایی که این فریمورک ارائه می دهد ، امنیت وب اپلیکیشنهای طراحیشده به راحتی فراهم میشود.
Django : این فریم ورک بر مبنای زبان Python نوشته شده، با ابزارهایی مثل Authentication ،URI Routing ، ORM و … برای طراحی وب اپلیکیشن آماده شده است. جَنگو به دلیل استفادهی آسان، قابلیت توسعه سریع اپلیکیشن و کارایی بالا به فریم ورکی ایدهآل برای توسعهدهندگان تبدیلشده است. جالب است بدانید که سیستم راهاندازی سایتهای بزرگی مثل Pinterest، اینستاگرام و فیسبوک از ابزارهای این فریم ورک استفاده میکنند.
Yii : اسم این فریمورک مخفف عبارت Yes It Is است. فریمورکی متن باز، سریع و امن که بر پایهی معماری MVC و در زبان PHP طراحی شده است . برنامه نویسان با استفاده از Yii میتونند زمان برنامه نویسی، از سایر فریم ورکها هم استفاده کنند. امنیت بالا و پشتیبانی حرفهای از AJAX از مهمترین ویژگیهای Yii محسوب می شود.
Laravel : لاراول یه فریم ورک رایگان و متن باز است که در زبان PHP، بر اساس ساختار MVC و برای پیاده سازی سریع و راحت وب اپلیکیشنها طراحیشده است. متن باز بودن این فریمورک به توسعه دهندها این امکان را میدهد تا بسته به نیاز و هدفشان تغییرات موردنظرشان را در آن ایجاد کنند. به همین دلیل لاراول برای ساخت هر نوع وب اپلیکیشنی مناسب است. از آنجاکه این فریمورک قدرتمند ، یک سیستم modular packaging است امکاناتی هم برای راهاندازی، تعمیر و نگهداری نرمافزار ارائه می کند.
Angular : محصولی از شرکت گوگل و از آخرین تکنولوژیهای توسعه وب محسوب میشود. فریمورکی متن باز که برای توسعه فرانت اِند از آن استفاده میشود. آنگولار بر اساس زبان جاوا اسکریپت و الگوی معماری MVC طراحی شده است. این چهارچوب برای برنامههای وب SPA ساخته شده و کاربردش تنها در صفحات وب است. به دلیل ارتقای مداوم این فریمورک از بهترین ها محسوب می شود.
Flask : یک میکرو فریمورک سبک و قابل توسعه است به کمک فلسک، برنامهنویسان خیلی راحت میتوانند در زبان پایتون با تعداد خطوط کد کمتری، وب اپلیکیشن طراحی کنند. از ویژگیهای اصلی این فریم ورک میتوان به سهولت استفاده از آن، مستندسازی زیاد و پشتیبانی از Unit Testing، Restful request، Secure cookies و Unicode اشاره کرد.
Ruby on Rails : این فریمورک که به طور مخفف ROR هم گفته میشود ، فریم ورکی متن باز و رایگان در زبان برنامه نویسی Ruby است. تاکنون دهها هزار وب اپلیکیشن با استفاده از این فریم ورک نوشته شده و یا توسعه داده شده است. Airbnb، Basecamp و Hulu که از برندهای بزرگ و شناختهشده استند، وب سایتشان را با استفاده از ROR توسعه دادند. این فریم ورک جامع در سیستم عامل لینوکس اجرا میشود و نسبت به سایر تکنولوژیها در این زمینه آسانتر و قابلکنترلتر است ، طوری که خیلی از توسعه دهندگان کار کردن با آن را سرگرمکننده و لذتبخش میدانند.
React : ریاَکت یک فریمورک محبوب دیگر در زبان جاوا اسکریپت و محصول شرکت فیسبوک است. از این چهارچوب برای طراحی و ساخت صفحههای کاربری داینامیک در وب سایتها استفاده میشود. با کمک React، برنامه نویسان و توسعه دهندگان به راحتی میتوانند از DOM مجازی استفاده کنند.
GWT : مبتنی بر زبان جاوا و محصول شرکت گوگل که اسم کامل آن Google Web Toolkit است. اصول برنامه نویسی GWT به برنامه نویسی اندروید شباهت دارد. Webmaster tools و Open KM از نرم افزارهای معروفی استند که با GWT نوشته شدند. برنامه نویسان با کمک این فریم ورک بهراحتی میتوانند برنامههایی مبتنی بر تکنولوژی AJAX بنویسند.
. Net framework : .. Net framework ( دات نت فریمورک ) محصول شرکت مایکروسافت است که برای توسعه نرم افزارها بهویژه ویندوز و همینطور نرم افزارهای تحت وب طراحی شده است. کتابخانهی کدهایی که در این فریم ورک به اشتراک گذاشتهشدند FCL (Framework Class Library) است که این کتابخانه، کلاسها، ساختارها، دادههای شمارشی و … را شامل می شود . فریم ورک دات نت شامل دهها هزار قطعه کد است که بیتهای این کدها میتونند عملیات مختلفی رو انجام بدهند.
Lotus : این فریمورکِ زبان روبی، اوپن سورس و دارای ساختار MVC است. از مزایای فراوان لوتوس می شود به سادگی، استفاده از اصول برنامه نویسی شی گرا و داشتن API باثبات اشاره کرد که لوتوس رو برای برنامه نویسانِ تحت وب به یک فریمورک محبوب تبدیل کرده است.
Spring : معروفترین فریمورک زبان جاوا و اولین فریم ورک MVC در دنیای برنامه نویسی . Spring یک استاندارد غیررسمی جاوا و یک full stack از الگوها و خدماتی مثل MVC، Dependency Injection، IOC، Security، Persistance، Security و… است.
خوب همانطور که گفتیم Framework ، یه فایل با مجموعهای از هزاران هزار کد و اسکریپت در زبانهای مختلف برنامه نویسی مثل PHP، java script ، Python و … است. هر زبان برنامه نویسی فریمورکهای مخصوص به خودش را دارد.
فریم ورکهای زبان برنامه نویسی PHP
- Laravel
- Phalcon
- Symphony
- Yii
- Codelgniter
- CakePHP
- Zend
- Kohana
- FuelPHP
میکرو فریم ورک PHP
- Flight
- Sliex
- Limonade
- Slim
فریم ورکهای زبان جاوااسکریپت
- Angular
- React
- Ember
- Backbone
- Vue
- Aurelia
- Polymer
فریم ورکهای زبان برنامه نویسی Python
- Django
- Flask
- TurboGears
- Web2py
- Pyramid
- Bottle
تفاوت فریمورک با کتابخانه
- اکثر توسعه دهنده ها این دو واژه یعنی فریمورک و لایبرری رو به جای همدیگر بهکار میبرند درحالیکه با هم دیگر تفاوتهایی دارند.
- درواقع هر دوی آنها یکسری کدهای از پیش نوشته شده توسط شخص یا اشخاص دیگری هستند ُکه استفاده از آنها کار را برای بقیهی برنامهنویسها خیلی راحتتر می کند و باعث می شود یک سری مشکلات رایج برنامهنویسی که به صورت عادی زمان زیادی می خواهد ، بهراحتی و بدوننیاز به وقت زیاد قابل حل باشند. هدف اصلی از ساختن لایبرری و فریمورک هم در واقع همین هست.
- با وجود این وجه مشترک اما تفاوتهایی بین لایبرری و فریمورک وجود دارد که می شود در واژهی inversion of control خلاصه اش کرد.
لایبرری ( library ) چیست؟
- شامل یکسری کلاسها و متدهاست. وقتی که شما از لایبرری استفاده میکنید به عبارتی کنترل جریان کد یا آن اپلیکیشن دست خود شماست، و این شما هستید که تعیین میکنید کی و کجا از چه لایبرری استفاده شود. دقیقا مثل زمانی که به کتابخانه می روید و خودتون وارد قسمت کتاب ها می شوید و از آنجا کتاب دلخواهتون را برای مطالعه انتخاب می کنید.
- با احتمال زیاد هر برنامهنویسی با لایبرری math آشنا هست ، برای استفاده از کتابخانه یا لایبرری شما فقط فانکشنهایی رو که نیاز دارید صدا می زنید ، و دیگر به این فکر نمی کنید که آن فانکشن از چه الگوریتمی دارد استفاده می کند. به عنوان مثال jQuery و React از جمله کتابخانه های معروف جاوااسکریپت هستند.
- اما فریمورک در اصطلاح یک چارچوب نرم افزاری گفته می شود که مجموعه ای هست از کتابخانه های برنامه نویسی و قوانینی برای برنامه نویسان . به عنوان مثال دات نت فریمورک محصولی از شرکت مایکروسافت هست که متشکل از هزاران کتابخانه ی کوچک به همراه قواعد و ابزارهایی برای توسعه دهندگان برنامه نویسی مختلف در آن قرار دارد.
- وقتی از فریمورک استفاده میکنید کنترل جریان برنامه دست آن فریمورک هست و چارچوب و اسکلت کلی کد شما توسط آن فریمورک تعیین می شود. فریمورک برای شما بستری فراهم می کند تا بتوانید کدها را بنویسید و این فریمورک هست که تصمیم میگیرد کی و کجا از کدهای شما استفاده بشود . یعنی به شما یک کتاب داده شده که باید جاهای خالی کتاب را شما پر کنید. به عنوان مثال Angular وjs از فریمورک های جاوااسکریپت محسوب میشوند .
- به طور کلی شما میتونید از لایبرریها یا همون کتابخانه ها در حین انجام یک پروژه استفاده کنید اما از فریمورک باید دقیقا زمان شروع آن پروژه استفاده کنید. یک نکته مهم دیگر این است که توی یک پروژه نمی شود از چند تا فریمورک همزمان استفاده کرد اما می شود همزمان از چند کتابخانه یا لایبرری استفاده کرد .
- به طور معمول فریمورک ساختاری پیچیدهتر از لایبرری یا کتابخانه دارد اما مزیت آن این است که دیگر دولوپر نگران این نیست که طراحی ساختار کد خوب هست یا نه !
- اگر بخواهیم این تفاوت را به یک شکل دیگر بگوییم :
تصور کنید در حال تلاش برای ساختن یک ماشین هستید. با فریمورک تمام موارد ضروری برای ساخت ماشین دراختیار شما قرار دارد و این بستگی به شما دارد چگونه آنها را در کنار هم قرار دهید. در واقع فریمورک مانند یک کارخانه عمل می کند. با کدهای از پیش ساخته شده به شما کمک می کند محصول خودتان را بدون فکر کردن به مسائل جزئی و پیکربندیهای پیچیده بسازید.
- اما کتابخانه هیچ چیزی را برای شروع در اختیار شما نمیگذارد. در مقابلِ فریمورک، ویژگیهای محدودتری در کتابخانه وجود دارد. همچنین برای استفاده گستردهتر از کتابخانه ها باید از ویژگیهای ثالث (third-party) دیگر استفاده کنید.
- هر کتابخانه، مجموعهای از کلاسهای (class) تعریف شده هست. دلیل این امر ساده، استفاده مجدد از کدهاست. مثلا ، کدی که قبلاً توسط توسعهدهندهای دیگر نوشته شده را دریافتکنید. کلاسها و متدها معمولاً عملیات خاصی را در یک منطقه خاص، تعریف میکنند.
- مثلا، چندین کتابخانه برای ریاضیات وجود دارد، که به توسعهدهنده اجازه میدهند، تابع (function) را بدون پیادهسازی مجدد یک الگوریتم و نحوه کار آن، فراخوانی کند.
- فریمورک، تمامی جریان (flow) را در کنترل خودش دارد و نقاطی از پیش تعریفشده وجود دارد که شما باید، با کدهای خود آنها را تکمیل کنید. فریمورک یک چهارچوبی رو تعریف می کند که در آن ، برنامه ما ویژگیهای خاص خودش را برای تکمیلکردن این چهارچوب به آن اضافه می شود . از اینطریق، فریمورک در زمان موردنیاز کدهای شما را فراخوانی می کند .
مزیت فریمورک این است که توسعه دهندگان، دیگر نیازی به نگرانی در مورد خوب بودن یا نبودن طراحی اسکلت برنامه شان ندارند ، بلکه تمرکز شان را روی توسعه اش می گذارند.
نظرات
- آخرین مقالات
بهترین راه برای اینکه مطلب خود را برسانی، این است که خیلی ساده بروی سر اصل مطلب
مشاهده بیشتر