تفاوت فریم ورک و کتابخانه چیست؟
مجموعه ای از موارد و المان های پر استفاده توسط کاربر یا برنامه نویس را کتابخانه می نامند.
در واقع کتابخانهها آن دسته از کدهایی هستند که توسط توسعهدهندگان و برنامهنویسان خبره نوشته شده و به پکیجهای محیطهای برنامهنویسی اضافه شدهاند تا برنامهنویسان دیگر در حین کدنویسی قادر به استفاده و به کارگیری آنها باشند.
المان هایی که برنامه نویس حین انجام پروژه های مختلف به استفاده مکرر از آن ها نیاز دارد اسکریپت ها،فونت ها و … می باشد.
فریم ورک به یک چارچوب نرم افزاری گفته می شود که مجموعه ای است از کتابخانه های برنامه نویسی و احتمالا مجموعه ای از قوانین برای برنامه نویسان است .
هر دو اینها برای این به وجود آمدن تا از نوشتن کدهای تکراری برای یک سری کارها و مشکلات عمومی جلوگیری بشه.
یک کتابخونه ممکنه فقط یک کلاس و چندتا متد باشه و با یک خط کد بتونید از این کتابخونه استفاده کنید.
در واقع شما به عنوان برنامه نویس هرجا که نیاز داشتید میتونید از یک کتابخونه استفاده کنید.
اما فریمورک خیلی کلی تر و دارای چهارچوب و قوانین مخصوص به خودش هست که برای یک هدف خاصی طراحی شده که به اون زبان برنامه نویسی قابلیت هایی بده که شاید بدون این فریمورک پیاده سازی آن بسیار سخت بود.
در اینجا فریمورک هست که با سینتکس هایی که داره به شما میگه الان نیاز به نوشتن چه دستوری دارید.
برای مثال شما برنامه نویسی ++c انجام میدید اما حالا میخواید برای این برنامه یک رابط گرافیکی بسازید خب به شکل عادی شاید فوق العاده زمان بر باشه تا با این زبان بخواید فقط یک دکمه طراحی کنید از اول و بعد از آن استفاده کنید. اما با کمک فریمورک هایی مثل QT میتونید خیلی سریع یک رابط گرافیکی برای برنامه نوشته شده به زبان ++c طراحی کنید.
فریمورک ها همچنین از چندین کتابخونه تشکیل شدن در واقع میتونید اینجوری فرض کنید که یک فریمورک جعبه ابزار هست و داخل این جعبه ابزار دارای وسایل مختلفی می باشد مثل انبردست, چکش و… که حکم کتابخانه و دارند.
اینکه شما کجا از فریمورک یا کتابخانه استفاده میکنید باید ببینید آیا کاری که میخواید انجام بدید به راحتی بدون نیاز به ابزار خاصی قابل انجام هست یا خیر. اگر برای شما امکان پذیر نبود یا زمان زیادی صرف میشد میتونید از کتابخانه استفاده کنید.
با توجه به تعاریف بالا این نتیجه حاصل می شود که:
تفاوت فریم ورک و کتابخانه، نحوهی کنترل کدهاست. در کتابخانه، شما کد را فراخوانی میکنید و از آن استفاده میکنید؛ اما، در مورد فریم ورک، داستان کاملا متفاوت است. فریم ورک، به اصطلاح Inversion of Control (کنترلپذیر معکوس) است. به این معنی که بر خلاف کتابخانه، کاربر، فریم ورک را فراخوانی نمیکند، بلکه فریم ورک، کدهای اضافه شده توسط کاربر را فراخوانی میکند.
در واقع شما میتوانید از لایبرری ها در حین انجام یک پروژه استفاده کنید اما از فریم ورک باید دقیقا زمانی که میخواهید پروژه را شروع کنید استفاده نمایید . نکته ی دیگر این است که در یک پروژه امکان استفاده از چندین فریم ورک نیست اما امکان استفاده از چند کتابخانه وجود دارد.