فریم ورک چیست؟
فریم ورک (Framework) بستری است که امکانات پایه ای را برای توسعه برنامه های نرم افزاری فراهم می کند.در واقع فریم ورک را می توان، الگو یا چهارچوبی از یک برنامه کاری در نظر گرفت که با افزودن کد به صورت دلخواه قابل سفارشی سازی و اصلاح است.
فریم ورک ها از منابع مشترکی استفاده می کنند و آن ها را در یک بسته قرار می دهند.
برخی از این منابع عبارتند از:
- کتابخانه ها
- پرونده های تصویری
- اسناد مرجع
این بسته می تواند متناسب با نیازهای خاص پروژه اصلاح شود.
به عنوان مثال در فریم ورک های مربوط به طراحی سایت از منابع مورد نیاز برنامه نویس می توان به موارد زیر اشاره کرد:
- فایل های بهبود سازگاری در مرورگرهای مختلف مانند Modernizr و CSS reset
- کتابخانه های پایه ای برای طراحی بخش های مختلف سایت نظیر jQuery
و غیره
بنابراین توسعه دهنده به وسیله Framework می تواند ویژگی هایی را به پروژه اضافه یا جایگزین آن کند تا عملکرد جدیدی به آن بدهد.
ویژگی های مهم یک فریم ورک چیست؟
- فهم آن ساده و اجرای آن آسان است.
- حاوی کد اضافی که عملکردی را انجام نمی دهد، نیست.
- با بسترهای مختلف سازگار است.
- دارای به روز رسانی های متعدد و تکامل در آینده است.
- به توسعه دهنده اجازه می دهد تا اجزای قابل استفاده مجدد را بسازد.
- می توان آن را با افزودن کد اضافی برای ارائه عملکرد متفاوت گسترش داد (البته این شامل کد پیش فرض Framework است که قابل تغییر نیست و فقط می توان آن را بازنویسی کرد).
- همچنین استقبال توسعه دهندگان نشان دهنده کارایی و سازگاری یک Framework است.
فریم ورک های برنامه نویسی :
فریم ورک های برنامه نویسی کار نوشتن یک کد برنامه را بسیار ساده تر می کنند به همین دلیل برای هر یک از انواع زبان های برنامه نویسی یک یا چند فریم ورک ساخته شده است که در ادامه به پرکاربرد ترین آن ها اشاره میکنیم :
- زبان برنامه نویسی php
- Laravel
- Phalcon
- Symphony
- Yii
- Codelgniter
- CakePHP
- Zend
- Kohana
- FuelPHP
- زبان برنامه نویسی جاوا
- Spring
- Hibernate
- Java EE
- Struts
- GWT
- زبان برنامه نویسی جاوا اسکریپت
- Angular
- React
- Ember
- Backbone
- Vue
- Aurelia
- Polymer
- زبان برنامه نویسی پایتون
- Django
- Flask
- TurboGears
- Web2py
- Pyramid
- Bottle
- زبان های برنامه نویسی مایکروسافت مانند #C
- Net
کاربرد های Framework
توسعه نرم افزار یک فرآیند پیچیده است.این کار به مجموعه ای از وظایف از جمله کدنویسی، طراحی و آزمایش نیاز دارد.فقط برای قسمت کدنویسی، برنامه نویسان در حین کدنویسی باید مراقب بسیاری از بخش ها باشند که برخی از آن ها شامل موارد زیر هستند:
- سینتکس (syntax)
- تعریف ها (declarations)
- زباله روبی (garbage collection)
- دستورالعمل ها (statements)
- موارد استثنا (exceptions)
و موارد دیگر
مزایای استفاده از Framework
صرفهجویی در زمان : از آنجایی که فریم ورک از قبل طراحی شده است، با ایجاد فضای کاری سفارشی، صرفهجویی قابلتوجهی در زمان توسعهدهندگان خواهد شد.
توسعه همکاری : استانداردسازی کد، همکاری بین توسعهدهندگان را تسهیل میکند، بنابراین استفاده مشترک از یک فرآیند را ممکن میسازد.
امکان استفاده از ابزار ویژه : فریم ورک ابزارهایی را به صورت خاص طراحی کرده است که همیشه در دسترس هستند و توسعه بخشهای مختلف را در یک اپلیکیشن و یا وبسایت، راحتتر میسازند.
اجتناب از بهکارگیری کدهای تکراری : با استفاده از Framework، نیازی به برنامهنویسی قسمتهای مشترک مورد نیاز برای بخشهای مشابه در الگوی برنامهنویسی خود ندارید بنابراین به عنوان یک توسعهدهنده میتوانید تمرکز اصلی خود را بر قسمتهای منحصربهفرد برنامه و یا وبسایت خود معطوف کنید.
سادهسازی عملیات پیچیده : Framework امکانات و ابزارهایی که در اختیار توسعهدهندگان قرار میدهد، امکان پیادهسازی اهداف پیچیده را در فرآیند توسعه وب یا اپلیکیشن فراهم میآورد.
منبع باز (Open-source) : بیشتر فریمورکهای معروف در بسیاری از زبانها منبع باز (یا برای استفاده رایگان) هستند. آنها همچنین دارای مجوزی هستند که محدود کننده نیست و به شما اجازه میدهد با استفاده از چنین فریمورکهایی محصولات تجاری را بسازید.
مستندسازی و پشتیبانی : به طور معمول، هر فریم ورک معمولا همراه با اسناد و مدارک است، دارای یک تیم پشتیبانی یا جوامع انجمنهای بزرگ است که میتوانید پاسخهای سریع دریافت کنید، اما این امر نیز بستگی به سطح فعالیت در Framework دارد؛ چنانچه یک فریم ورک مانند Ruby on Rails با یک جامعه بسیار بزرگ نشان میدهد که به دلیل ماهیت خوشایند آن و همچنین پشتیبانی خوب مشهور شده است.
امنیت : به طور معمول، یک فریم ورک با استفاده از بسیاری از توسعه دهندگان مختلف توسعه یافته و آزمایش شده است. این امر بسیار خوب است که بسیاری از خطرهای امنیتی در هنگام ساخت فریم ورک مورد بررسی و آزمایش قرار میگیرند. همچنین خطرهای امنیتی جدید میتوانند یافت شده و به سرعت رفع شوند. بنابراین اگر خطری امنیتی یافتید، میتوانید به وبسایت فریم ورک رفته و تیم آن میتوانند مشکل را رفع کنند.
قابلیت ادغام پذیری : اگر شما تقریبا هر نوع اپلیکیشن (از جمله وبسایت) را ایجاد میکنید و میخواهید برخی از دادهها را ذخیره کنید، به طور معمول از یک دیتابیس استفاده خواهید کرد. درست مانند یک دیتابیس، بسیاری از ابزارهای دیگری نیز وجود دارد که به توسعه وب مرتبط است. بسیاری از فریم ورکها به راحتی با این ابزارها لینک شده و با آنها ارتباط برقرار میکنند.
معایب استفاده از Framework
محدودیت : به طور کلی، قادر به انجام تقریبا هیچ چیز با یک Frameworkواحد نخواهید بود. همه آنها به نوعی محدود شدهاند؛ از پارادایمهای برنامهنویسی تا طراحیهای دیتابیس و هر چیزی که در بین آنهاست. بنابراین رفتار اصلی فریمورک نمیتواند تغییر کند، به این معنی که وقتی از یک فریم ورک استفاده میکنید، شما مجبور هستید که به محدودیت های آن احترام بگذارید و به همان شیوه ای که مورد نیاز است کار کنید.
عملکرد : با محبوبیت ساختار MVC فریم ورکهای client-side جاوا اسکریپت مانند AngularJS، EmberJS و BackboneJS که از سال ۲۰۱۲ رشد داشته، عملکرد میتواند به عنوان یک فاکتور در نظر گرفته شود. به عنوان مثال هنگامی که در اپلیکیشنی از Framework در جاوا اسکریپت به عنوان ابزار ساخت برنامه استفاده میشود، عملکرد کاهش مییابد. در حالیکه ممکن است تأثیر بارگذاری یک فایل js فریم ورک فشرده ۷۵ کیلو بایتی را بر روی کامپیوتر خود احساس نکنید (با سرعت بالا)، اما این فایل js مطمئنا برای کاربران موبایلی تأثیر قابل توجهی خواهد داشت (که ممکن است سرعت پایینی بر روی تلفنهای هوشمند یا تبلتها داشته باشند).
گرایش یادگیری : اگر تصمیم دارید که چگونگی استفاده از هر فریم ورک را از زبان برنامهنویسی که با آن آشنا هستید، یاد بگیرید شانس این است که آنچه را که یاد میگیرید تا حدودی متفاوت با زبان خودتان خواهد بود. این امر به خاطر این واقعیت است که بسیاری از آن وظایف تکراری در کارکردهای سفارشی و دیگر بخشها ایجاد شده است، به همین دلیل است که شما چیزهایی را یاد میگیرید که ممکن است در درس های زبان شما وجود نداشته باشد. به غیر از این، همچنین بسیاری از چیزهایی یاد میگیرید که ممکن است در هنگام استفاده از فریم ورک در زندگی واقعی بیربط باشد؛ اما لازم است چگونگی کار فریم ورک را درک کنید.
منحنی یادگیری شیبدار : اگرچه این مورد همیشه نیست، اکثر فریم ورکها میتوانند یادگیری آنها مشکل و حتی سختتر از استاد شدن باشد. پس از تحقیقات ساده در مورد این موضوع، استاد دانشگاه میگوید که حدود ۲ سال (در صورت اشنا نبودن با برنامه نویسی) برای آشنایی و راحتی استفاده از یک زبان (Ruby) همراه با یک فریم ورک (Rails) طول میکشد. این ممکن است در مورد خودآموزی یا داشتن سالها تجربه برنامهنویسی صادق نباشد، اما میتوان گفت حتی اگر با تجربه باشید، حداقل ۳ تا ۶ ماه نیاز خواهد بود که برای استفاده از هر فریمورک (بر اساس یادگیری و تمرین مداوم) اعتماد به نفس و اطمینان حاصل کنید.
هزینه : فریم ورکها نیز به آزمایش و تجربه بیشتر برای توسعه نسبت به سیستمهای مدیریت محتوا (CMS) نیاز دارند. در نتیجه میتواند هزینههای بیشتری را برای استخدام توسعه دهندگان قابل اعتماد فریم ورک نسبت به توسعه دهندگان سیستم مدیریت محتوا (CMS) داشته باشند. بر اساس تجربه، متوسط پروژهای که بایکFramework ساخته میشود، پر هزینهتر نسبت به پروژه مشابه ساخته شده با سیستم مدیریت محتوا میباشد.
انواع فریم ورک
وب اپها
این فریم ورک ها به طور خاص در ایجاد پروژههای آنلاین استفاده میشوند، خواه طراحی یک وبسایت باشد یا یک اپلیکیشن وب خاص. اگرچه انواع مختلفی از فریم ورک ها برای وب اپها وجود دارد، اما هیچ مانعی در استفاده از فریم ورک های غیراختصاصی نیز در این حوزه وجود ندارد زیرا بسیاری از آنها را میتوان به زبانهای دیگر، توسعه داد.
اپلیکیشنها
این فریم ورک ها امکان توسعه ساختار یک اپلیکیشن را برای یک سیستم عامل مشخص فراهم میکنند. یک مثال واضح مایکروسافت است که از فریم ورک.NET برای کمک به برنامهنویسان با هدف استفاده مجدد از ساختارهای توسعه یافته در ویندوز استفاده میکند.
AJAX
فناوری AJAX به کاربران این امکان را میدهد که بدون نیاز به بارگذاری مجدد صفحه پس از هر درخواست جدید، درخواست خود را برای سرور ارسال کنند؛ بنابراین، اطلاعات مورد درخواست بدون بارگیری مجدد صفحه، نمایش داده میشود. فریم ورک های خاصی وجود دارد که امکان استفاده از این ویژگی را فراهم میکنند.
مدیریت محتوا
فریم ورک های مدیریت محتوا که با نام CMF نیز شناخته میشوند، برنامهنویسی برنامههای CMS (سیستم مدیریت محتوا) مانند WordPress، PrestaShop، Wix یا Joomla را تسهیل میکنند. بسته به پلتفرمی که اپلیکیشن با آن ایجاد میشود، CMF های زیادی نیز قابلاستفاده هستند.
عناصر چندرسانهای
این فریم ورک ها، انجام عملیات را برای توسعهدهندگانی را که با ویدئو، صدا و تصویر سروکار دارند، تسهیل میکند و به طور کلی برای ایجاد برنامههای چندرسانهای استفاده میشوند. برخی از کاربردهای این فریم ورک ها، پیادهسازی پروژههای پیچیده مانند کنفرانسهای ویدئویی یا بسترهای رسانهای است.
فریم ورک های مورد استفاده توسعهدهندگان فرانتاند :
فریم ورک های برنامهنویسهای فرانتاند، کار را بر روی نماها یا صفحاتی که توسط کاربر نهایی دیده میشود، آسان میکند. هسته این فریم ورک ها از فناوریهایی مانند جاوا اسکریپت، HTML و CSS تشکیل شده است. برخی از این فریم ورک ها عبارتند از : Angular JS، React JS، Vue JS، Bootstrap، Material Design و غیره هستند.
فریم ورک های مورد استفاده توسعهدهندگان بکاند :
فریم ورک های برنامهنویسهای بکاند کار با زبانهای برنامهنویسی سمت سرور مانند Python، Ruby، PHP، Node.js، Java و غیره را آسان میکنند. این فریم ورک ها به مدیریت پایگاههای داده، ارسال و پردازش دادهها، کوکیها و غیره کمک میکنند. برخی از این فریم ورک ها عبارتاند از : Django، Ruby، Rails، Laravel و غیره.
جمعبندی :
Framework به عنوان ابزاری برای سادهسازی فرآیند توسعه نرمافزار، اپلیکیشن و وبسایت، در حوزههای مختلف فناوریهای کامپیوتری ارائه شده است.استفاده از فریم ورک مزایای زیادی را برای توسعهدهنده به دنبال دارد، از جمله صرفهجویی در زمان، کاهش احتمال خطاهای کد نویسی، امکان پیادهسازی اهداف پیچیده به کمک ابزارهای ساده، پشتیبانی توسط جامعه کاربران گسترده، امکان ادغام، تغییر و سفارشیسازی فرآیند و غیره.
شما نیز به عنوان یک توسعهدهنده اگر به دنبال روشی ساده برای پیادهسازی اهداف مدنظر خود هستید، استفاده از Framework مناسب که ویژگیهای مورد نظرتان را داشته باشد، بهترین گزینه خواهد بود.
نظرات خود را با ما در میان بگذارید.