فهرست محتوا
وقتی بخواهیم یک برنامه کامپیوتری را از یک سایت گرفته تا یک برنامه سیستمی بزرگ طراحی کنیم، پیچیدگی های زیادی پیش روی ما خواهد بود که می توان گفت گرفتار شدن در آنها ممکن است باعث شود تا یک پروژه با شکست مواجه شود. البته اکنون روش های بسیار راحتی نیز برای این کار وجود دارد و تقریبا می توان گفت که سیستم ساخت و طراحی برنامه ها به صورت یک متد مجتمع تغییر کرده است که برای خیلی از برنامه های مشابه از این روش ها استفاده می شود. این روش های مجتمع به صورت ساختار یافته گرد هم آمده و عنصری مهم به نام فریم ورک را ارائه می کنند. در این مقاله با بررسی این سوال که فریم ورک چیست و چه کاری را برای ما انجام خواهد داد می خواهیم در مورد یکی از مهمترین و برجسته ترین عناصری که برای توسعه برنامه های کامپیوتری توسط هر برنامه نویسی مورد استفاده قرار می گیرد صحبت کنیم و ببینیم که این عنصر کاربردی برای ما چه مزایا و ویژگی هایی دارد.
قبل از اینکه در مورد این مسئله که فریم ورک چیست صحبت کنیم لازم است در مورد برنامه نویسی و ساخته شدن یک برنامه و یا سایت کمی بیشتر توضیح دهیم و ببینیم که اصلا قرار است برای نوشته شدن یک برنامه چه کارهایی انجام شود و یک برنامه کامپیوتری از چه اجزایی تشکیل شده است.
روند ساخت یک برنامه کامپیوتری
خیلی از مواقع وقتی صحبت از یک برنامه کامپیوتری به میان می آید همه به یاد برنامه های سیستمی که روی کامپیوترها و لپ تاپ ها اجرا می شوند می افتند. یک برنامه که شما آن را از روی سی دی نصب کرده و یا فایل نصبی را دانلود می کنید و بعد از اتمام نصب هم آن را کرک کرده و برای هر موضوعی که لازم دارید از آن استفاده می کنید. اما وقتی به سراغ دنیای برنامه نویسی برویم، خواهیم دید که حقیقت چیز دیگری است و برنامه ها بسیار گسترده تر و بزرگ تر از آن هستند که به نظر می رسد. تمامی المان های رایانه ای و نرم افزاری که با استفاده از کد نویسی و یا روش های ویژوال و بصری ساخته شده و می توانند خدمتی را به صورت مستتقیم و یا غیر مستقیم به کاربران و برنامه های دیگر ارائه کنند، برنامه کامپیوتری هستند.
در این دسته بندی سایت ها، برنامه های تحت وب مانند شبکه های اجتماعی و پیام رسان ها، برنامه های موبایل، وب سرور ها، کنترل پنل های هاست، برنامه های سیستمی، برنامه های حسابداری و اداری، پلیر ها و برنامه های مالتی مدیا و تقریبا هر چیزی که شما از طریق دستگاه های دیجیتال هوشمند با آن سروکار دارید یک برنامه کامپیوتری به حساب می آید. ساخت این برنامه های کامپیوتری به روش های مختلفی اتفاق می افتد و هر برنامه ای سبک و سیاق خود را دارد.
اولین روشی که برای ساخت برنامه ها مورد استفاده گرفت، یک روش خطی و تگ مرحله ای بود که البته برای برنامه های کوچک و سبک که در آن موقع عموما با استفاده از کارت پانچ ها و ماشین های IBM اجرا می شد. این روش به روش سنتی شهرت داشت که دیگر استفاده ای ندارد. در این روش برنامه نویس صورت سوال را مطرح کرده، آن را به عنوان یک الگوریتم در نظر می گرفت و با استفاده از تکنیک های ساده ای وجود داشت و بهره گیری از حلقه ها و جهش های درون برنامه ای یک برنامه را در یک کد مجتمع می نوشت. این روش برنامه نویسی با روی کار آمدن زبان های برنامه نویسی ای مانند فرترن و پیچیده شدن نصبی برنامه ها رو به زوال رفت و وقتی که زبان برنامه نویسی C توسط کن تامپسون و دنیس ریچی ارائه کردید و مباحثی مانند شی گرایی در C++ به آن افزوده شد، کارایی خود را به صورت کامل از دست داد.
بعد از ارائه این روش ها کار به این صورت دنبال می شد که برنامه دیگر یک صفحه کد نبود. بلکه به ماژول های مختلفی تقسیم میشد که در چندین فایل و صفحه قرار داشتند و یک صفحه به عنوان صفحه اصلی یا Main این فایل ها و ماژول ها را با استفاده از روش هایی مانند فراخوانی به کار می گرفت. در این برنامه ها کمی ساختار برنامه نویسی نوین قابل مشاهده بود و می توان این روند را به عنوان آغازی برای برنامه نویسی مدرن و ساخت برنامه های با کیفیت دانست. با استفاده از این روش، کم کم متد هایی مانند استفاده از ماژول های قابل استفاده مجدد یا Reusable به عنوان یک قابلیت خوب مطرح شد که به برنامه نویسان امکانات خوبی را می داد.
این روش های نوین به خوبی توانسته بودند جوابگو باشند و استفاده از ماژول ها و کتابخانه هایی که یک بار طراحی و نوشته می شدند و چند بار مورد استفاده قرار می گرفتند ایده بسیار جالب و کار راه بیندازی بود. به پیروی از این ایده، بعضی از برنامه نویسان به این فکر افتادند که اگر می شود یک ماژول را دوباره مورد استفاده قرار داد، چرا روش های برنامه نویسی و روش های طراحی را به این صورت تغییر ندهیم که بتوان از آنها به راحتی استفاده کرد. اینجا بود که الگوهای طراحی به وجود آمدند.
الگوهای طراحی یکی از بهترین روش ها بود که در آن مسئله های مشابه هم، راه حل ها و طراحی های برنامه نویسی مشابه هم داشتند. به عنوان مثال الگوی MVC یا همان مدل نما کنترلر که در ادامه هم از آن صحبت خواهیم کرد، به یک گزینه ایده آل برای ساخت برنامه های تحت وب تبدیل شده بود که دو بخش پایگاه داده و رابط کاربری را با استفاده از یک کنترلر از هم جدا می کرد و با استفاده از این تمایز یک قابلیت مانور خوب روی هر کدام از این بخش ها ایجاد می نمود.
ترکیب ماژول های قابل استفاده و الگوهای طراحی برای برنامه های مشابه توانست کار برنامه نویسان را به خوبی جلو بیندازد و همین امر باعث شد که فریم ورک ها ایجاد شوند. در ادامه در مورد اینکه فریم ورک چیست و چه کاری را انجام خواهد داد بیشتر صحبت خواهیم کرد.
فریم ورک چیست
اگر بخواهیم به صورت دقیق به این موضوع که فریم ورک چیست بپردازیم باید به زمانی باز گردیم که شرکت های بزرگ از اهمیت الگوها و همینطور کتابخانه ها آگاه شده بودند. خیلی از شرکت های برنامه نویسی و برنامه نویسان برای ساخت برنامه های خود روش هایی را دنبال می کردند که در آنها از ماژول های خود و یا ماژول های خریداری شده به همراه الگوهایی که همیشه استفاده می کردند برای مسائل و برنامه های مشابه خود بهره می بردند. اما بعضی از این شرکت ها یک گام جلوتر رفته و یک استاندارد سازی را روی این الگوها و کتابخانه های موجود ارائه دادند. به این صورت که یک الگو که تمامی کتابخانه های یک زبان برنامه نویسی خاص، به همراه یک الگوی قدرتمند برای ساخت برنامه های کامپیوتری خاص به صورت همزمان روی یک IDE که بتواند با چند کلیک ساده تمام فایل ها را آماده کند، عرضه می شد و کار را برای برنامه نویس ساده می کرد.
پس اگر بخواهیم بگوییم که فریم ورک چیست می توانیم تعریف کتابی آن را اینگونه ارائه کنیم که بسته ای نرم افزاری است که کتابخانه های مورد نیاز و همینطور یک الگوی طراحی را برای طراحی یک سایت و یا برنامه سیستمی در اختیار برنامه نویسان قرار می دهد و برنامه نویس با دنبال کردن یک روش خاص می تواند برنامه و یا سایت مورد نظر خود را به صورت کامل طراحی کند و خروجی خود را دریافت نماید. فریم ورک ها با تمام شباهت هایی که به هم دارند، اما نکات مختلف و ریزه کاری هایی در بین آنها وجود دارد که باعث شده است به شدت از یکدیگر متمایز شوند. اگر بخواهیم بگوییم کلی ترین وجه تمایز یک فریم ورک چیست می توان به حوزه کاری آنها اشاره کرد.
حوزه کاری فریم ورک چیست
یکی از موارد مهمی که باید در مورد فریم ورک ها در نظر داشت حوزه کاری آنها است. اگر بخواهیم بگوییم که حوزه های اصلی کاری فریم ورک چیست و فریم ورک ها در چه زمینه ای کار می کنند می توانیم سه دسته اصلی فریم ورک های اپلیکیشن های سیستمی، فریم ورک های موبایل و همینطور فریم ورک های ساخت سایت و برنامه های وب را نام ببریم.
در فریم ورک های برنامه های سیستمی شما با یک برنامه طرف هستید که کلیه امکانات لازم را برای ساخت برنامه ای سیستمی که بتوانید از آن برای کار خود استفاده کنید، در اختیارتان قرار خواهد گرفت. در این مورد شما قادر خواهید بود تا با استفاده از این فریم ورک ها یک برنامه کامپیوتری را برای کامپیوتر های دسکتاپ و عادی از صفر تا صد برنامه ریزی کنید.
به عنوان مثال از بزرگترین این فریم ورک ها می توانیم به فریم ورک های .Net، WPF، Cocoa و Electron اشاره کنیم که این امکان را به شما خواهند داد تا با استفاده از روش های ساده برنامه های دسکتاپ را به راحتی بسازید، و یا فریم ورک های سیمفونی، لاراول، جانگو و ویو جی اس نیز نمونه هایی از فریم ورک هایی هستند که با استفاده از آنها می توانید برنامه های وب و سایت ها را شکل دهید.
البته باید گفت که فریم ورک هایی نیز وجود دارند که به صورت کراس اور فعالیت داشته و به شما این امکان را می دهند که هر برنامه ای که می خواهید بسازید را با استفاده از آنها ایجاد کنید و هم توابع و قابلیت های وب را ارائه می کنند و هم کتابخانه های برنامه ها و اپلیکیشن های دسکتاپ را در این میان فریم ورک .Net را می توان به عنوان یک مورد شاخص از این موارد معرفی نمود.
علاوه بر اینکه حوزه کاری یک فریم ورک چیست باید نکات دیگری را هم برای انتخاب مناسب خود در نظر داشته باشید. یکی از مواردی که باید به آن توجه کرد. زبان برنامه نویسی فریم ورک است. در ادامه به بررسی اینکه نقش زبان برنامه نویسی در کارایی فریم ورک چیست خواهیم پرداخت.
بررسی فریم ورک از نظر زبان برنامه نویسی
یکی دیگر مواردی که باید در مورد فریم ورک ها به آن توجه ویژه ای داشته باشید، زبان برنامه نویسی فریم ورک ها است. عموما فریم ورک ها برای شما زبان های برنامه نویسی خاصی را پشتیبانی می کنند. یک فریم ورک ممکن است چند زبان را برای راحت شدن ما ارائه کند و کتابخانه های خود را تحت این زبان ها ارائه دهد. اما آنچه که مسلم است هر فریم ورک یک زبان برنامه نویسی به صورت نیتیو برای خود دارد. به عنوان مثال فریم ورک های سیمفونی و لاراول و همینطور فریم ورک Yii، فریم ورک هایی هستند که از زبان برنامه نویسی PHP استفاده می کنند. این فریم ورک ها به صورت کامل در مقالات فریم ورک Yii، لاراول چیست و سیمفونی چیست معرفی شده اند و می توانید برای آشنایی بیشتر با این فریم ورک های کاربردی سری به این مقالات بزنید.
این در حالی است که اگر شما به سراغ فریم ورک .NET بروید تا سایت خود را با استفاده از آن طراحی کنید، شاید توابع جاوا اسکریپتی که در لاراول وجود دارد را داشته باشید. اما باید در نظر بگیرید که در نهایت لازم است سایتتان را با زبان ASP برنامه نویسی کنید. در مقاله .NET Core چیست به طور کامل در مورد ویژگی های این فریم ورک صحبت کردیم.
پس یکی دیگر از ویژگی هایی که تعیین می کند کدام فریم ورک برای کدام برنامه نویس مناسب تر است، زبان برنامه نویسی ای است که با استفاده از آن می تواند برنامه های مورد نظر خود را بنویسد. به طور معمول می توان گفت فریم ورک های سه زبان برنامه نویسی PHP، ASP و همینطور Java Script در زمینه طراحی وب سایت ها طرفداران زیادی دارند و می توان فریم ورک های لاراول، .NET و همینطور Angular را به عنوان نمونه ای از پرطرفدار ترین فریم ورک ها برای این زبان های برنامه نویسی مثال زد.
در واقع کاری اگر بخواهیم بگوییم در مورد یک زبان برنامه نویسی خاص کار انجام شده توسط یک فریم ورک چیست باید بگوییم که فریم ورک یک زبان خاص، توابع و کتابخانه های مربوط به این زبان را فراهم کرده و روش هایی را در اختیار برنامه نویس قرار می دهد که استفاده از آنها روی زبان مورد نظر بهینه باشد. به عنوان مثال فریم ورک های ASP که یک زبان کامپایلری است تکنیک های مربوط به خود را دارد و فریم ورک های PHP که یک زبان مفسری است داستان خود را دنبال می کنند. از این رو زبان برنامه نویسی می تواند یکی از مهمترین و تعیین کننده ترین المان ها برای مکانیزم های یک فریم ورک باشد.
تمامی این بهینه سازی ها و مکانیزم ها در جهتی گام بر می دارند که سایت را به سمت یک طراحی صحیح هدایت کنند. طراحی ای که عموما آن را با نام MVC می شناسیم و در ادامه در مورد آن توضیح خواهیم داد.
نقش MVC در فریم ورک چیست
اگر به ساختار برنامه نویسی ای که خیلی از فریم ورک ها خصوصا فریم ورک های مورد استفاده برای طراحی وب کمی دقت کنید به این نتیجه خواهید رسید که مانور بسیار بزرگی روی استفاده از روش های MVC در جریان است. حتی این مورد به سیستم های مدیریت محتوا نیز سرایت کرده است و آنها نیز در حال حرکت به این سمت هستند(برای اطلاعات بیشتر در خصوص سیستم های مدیریت محتوا به مقاله CMS چیست مراجعه کنید). ساختار MVC در واقع یک ساختار لایه ای است که سه عضو اصلی دارد.
مدل که حرف M به نشانه واژه Model نماد آن است، ویو که حرف V از واژه View آن را معرفی می کند و در آخر هم C از واژه Controller که همان کنترلر است. کاری که این سه لایه قرار است برای یک برنامه کامپیوتری انجام دهند این است که بخش های رابط کاربری و بخشی که با پایگاه داده سر و کار دارد را به طور کامل از هم جدا کنند. این جداسازی می تواند قابلیت های زیادی را از مولفه های مورد استفاده در طراحی مجدد گرفته تا بالا بردن امنیت را به دنبال داشته باشد که برای درک آنها باید به این مورد بپردازیم که یک سایت و یا برنامه ساخته شده به وسیله تکنیک MVC چگونه قرار است کار کند.
در این برنامه ها، رابط کاربری ما همان View خواهد بود و می تواند فرم های ویندوزی و سیستمی باشد یا کدهای HTML و CSS که به وسیله آنها نما و ظاهر سایت ساخته می شود. بخش Model نیز شامل المان هایی است که پایگاه داده را کنترل می کنند. هر اطلاعاتی که بخواهد از ویو و رابط کاربری به پایگاه داده برود و یا از پایگاه داده به کاربران برسد، باید از طریق کنترلر رد و بدل شود و ویو و مدل هیچ تبادل اطلاعاتی را با هم ندارند.
در این ساختار شما یک بار کد نویسی می توانید اطلاعات را روی کنترل فیلتر کرده، یک بار آنها را با ویو چک کنید، و یک بار هم مدل با استفاده از متد های خود آنها را بررسی می کند. پس احتمال اینکه کدی ناخواسته وارد پایگاه داده شما شده و یا اطلاعات حساس شما، به کاربری که نباید نمایش داده شود، به صفر می رسد. پس می توانید مطمئن باشید که این روش می تواند یک امنیت خیلی خوب را برای پایگاه داده شما و اطلاعات شما فراهم کند و دست شما را برای پیاده سازی تکنیک هایی که دارید باز خواهد گذاشت. از طرف دیگر کار تیمی را راحت خواهد کرد و بخش طراحان فرانت اند و رابط کاربری تیم برنامه نویسی شما، قادر خواهند بود تا بدون هیچ ارتباطی با بک اند کاران و برنامه نویسان و طراحان پایگاه داده کار خود را انجام دهند.
پس MVC توان این که یک شفافیت را در پروژه شما ایجاد کند و هر کارمندی به آن اطلاعاتی که نیاز است بداند، دسترسی داشته باشد را هم فراهم کند. در این حالت ساختار اصلی برنامه شما به صورت محرمانه تری باقی می ماند و احتمال موفق بودن حملات بیشتر به صفر نزدیک می شود. مورد دیگری که باید به آن توجه ویژه ای داشته باشید این است که شما می توانید هر زمان که لازم داشتید بدون درگیر کردن پایگاه داده و بخش های دیگر برنامه رابط کاربری خود را ارتقا داده و روی کیفیت آن کار کنید. پس می توانید روز به روز برای داشتن برنامه ای بهتر پیش بروید و اینها همه از مزایایی است که MVC به شما می دهد.
پس اکنون دیگر می دانیم دلیل این مانور ها روی MVC بودن روش طراحی فریم ورک چیست و فریم ورک های مختلف چرا روی آن تا این اندازه تاکید دارند. البته پیاده سازی MVC ممکن است در بعضی اوقات بیشتر از سه مرحله باشد. به عنوان مثال پلتفرم سیمفونی این پیاده سازی را با 5 بخش انجام می دهد و لایه ها را به 5 بخش مختلف که هر کدام کار خاص خود را دارند تقسیم می کنند. از آنجا که تخصص اصلی ما ارائه هاست برای سایت است در ادامه به معرفی بهترین هاست برای سایت های طراحی شده با فریم ورک های مختلف می پردازیم و می بینیم که در مورد انتخاب هاست و میزبانی سایت نقش فریم ورک ها چیست.
نقش هاست در عملکرد محصولات یک فریم ورک چیست
هاست یا فضای میزبانی وظیفه آماده به کار نگه داشتن سایت شما را بر عهده دارند و در واقع اجرا کننده برنامه سایت شما هستند و انواع مختلف دارند که در مقاله هاست چیست به طور کامل در مورد آنها صحبت کرده ایم. عملکردی که یک هاست برای شما ارائه می کند و در اختیار شما قرار می دهد کاملا بستگی به سروری که هاست روی آن قرار گرفته و همینطور استراتژی استفاده از هاست که می تواند به صورت اختصاصی و یا اشتراکی باشد، دارد. اما در این میان نقش فریم ورک چیست و باید چه نوع هاستی را برای سایت های طراحی شده با چه فریم ورکی استفاده کنیم.
در صورتی که فریم ورک مورد استفاده از فریم ورک های زبان های ASP مانند .NET است، بهتر است از سرور های ویندوزی برای آن استفاده کنیم که هاست ویندوز و همینطور هاست ویندوز ابری گزینه های خوبی برای این سایت ها می باشد. اما در صورتی که از زبان های PHP استفاده شده است شما بهتر است که به سراغ سرویس های لینوکسی بروید. اما در این مورد نیز ظرافت هایی وجود دارد.
در صورتی که از فریم ورک های لاراول و سیمفونی برای کار خود استفاده کرده باشید، باید توجه خود را علاوه بر سیستم عامل سرور، به اندازه سایت نیز معطوف کنید. این پلتفرم ها دو مورد از ایده آل ترین گزینه ها برای طراحی سایت هستند که هاست لینوکس می تواند براحتی نیاز شما را پاسخ بدهد. اما اگر شما یک سایت بزرگ و پیچیده دارید، بهتر است از هاست لینوکس ابری استفاده کنید. همینطور برای سایر فریم ورک ها که از Java Script استفاده می کنند، مانند Angular، هاست ابری گزینه ای کاملا ایده آل و حرفه ای می باشد.
دسته بندی های مختلف فریم ورک ها
تا اینجای کار دیدیم که یک فریم ورک چه کارهایی را انجام می دهد و چگونه می توان با استفاده از فریم ورک ها روش های مناسبی را برای اینکه یک برنامه کامپیوتری را به بهترین شکل ممکن ساخته و به سرعت هرچه تمام تر و همینطور دقت بالا بتوان پروژه را به ثمر رساند، چه امکاناتی ارائه شده است. اکنون نوبت به آن رسیده است تا ببینیم که فریم ورک ها چه دسته بندی هایی دارند. در واقع این موضوع به ما کمک می کند که راحت تر بتوانیم بر اساس پروژه ای که داریم، کار انتخاب فریم ورک مناسب را انجام دهیم.
در مورد اینکه دسته بندی انواع فریم ورک چیست می توانیم این موارد را معرفی کنیم:
فریم ورک های بک اند، فرانت اند و فریم ورک های کامل
یکی از مهمترین موضوعاتی که باید در پاسخ به این سوال که دسته بندی فریم ها کدام است مد نظر قرار داد این است که آنها برای کار با کدام بخش های برنامه طراحی شده اند. همانطور که در بخش های قبلی دیدیم یکی از معروف ترین و مهمترین الگوهای طراحی و همینطور روش های برنامه نویسی، روش هایی هستند که برنامه را به بخش ها فرانت و بک تقسیم کرده و هر یک از این بخش ها به صورت مجزا و با یک شفافیت از بخش دیگر تبدیل می شود تا بتوان یک محیط دو طرفه ایده آل و همینطور جدا از هم را داشت که هر کدام از آنها عملکردی مستقل داشته و برای توسعه هر طرف به تغییر دیگری نیازی نباشد.
برای هر کدام از این بخش ها فریم ورک های خاصی وجود دارد که می توان آنها را به عنوان مهمترین دسته بندی از فریم ورک ها معرفی کرد. هر فریم ورک می تواند متعلق به یک بخش از این الگو باشد. به عنوان مثال فریم ورک های Angular JS که در مقاله Angular JS چیست به آن پرداختیم یکی از فریم ورک های محبوب برای فرانت اند می باشد که کار طراحی رابط کاربری و بخش فرانت را با زبان برنامه نویسی جاوا اسکریپت(برای اطلاعات بیشتر در این زمینه به مقاله جاوا اسکریپت چیست مراجعه کنید) انجام می دهد.
همینطور فریم ورک هایی مانند Express JS و ASP.NET Core که در مقالات Express JS چیست و .NET Core چیست به بررسی کامل آنها پرداختیم، از فریم ورک هایی هستند که با استفاده از آنها می توانیم یک مجموعه از اقدامات کنترلی حرفه ای و ایده آل را برای بک اند سایت داشته باشیم و می توان که بخش سیستمی و سمت سرور سایت ها و یا اپلیکیشن های حرفه ای را با استفاده از آنها طراحی نمود.
نوع دیگری از فریم ورک ها نیز وجود دارند که شما با استفاده از آنها می توانید صفر تا صد یک سایت و یا اپلیکیشن را طراحی کرده و هم خدمات مربوط به بک اند و هم خدمات مربوط به فرانت اند را در اختیار شما قرار خواهند داد. در این فریم ورک ها عموما گرایش اصلی به سمت یکی از جهات است، اما امکاناتی برای ساخت طرف دیگر نیز در آنها قرار گرفته است از معروفترین این فریم ورک ها می توان به دو فریم ورک های حرفه ای سیمفونی و لاراول برای زبان PHP اشاره گرد.
شما با استفاده از فریم ورک لاراول این امکان را خواهید داشت که با زبان PHP سمت سرور سایت خود را طراحی کرده و موتور قالب ساز BLADE که روی این فریم ورک کار می کند، می تواند یک فرانت اند خوش ساخت را برای شما پیاده سازی کند. یادگیری یک فریم ورک از این نوع می تواند به شما امکان تبدیل شدن به یک برنامه نویس فول استک(Full stack) را بدهد که می تواند صفر تا صد یک برنامه را خودش پیاده سازی کند.
در صورتی که در مورد هر یک از دو فریم ورک سیمفونی و لاراول سوالی دارید می توانید به مقالات لاراول چیست و سیمفونی چیست مراجعه کنید.
به طور کلی می توانیم بگوییم که این دسته بندی مهمترین و کاربردی ترین دسته بندی ای است که برای یک فریم ورک ارائه می شود. اما می توان دسته بندی های دیگری را برای فریم ورک ها نیز ارائه کرد که در ادامه به آنها خواهیم پرداخت.
فریم ورک های سبک وزن و فریم ورک های کامل
یکی دیگر از دسته بندی های فریم ورک ها که می توان در پاسخ به این سوال که دسته بندی های فریم ورک چیست معرفی نمود، بررسی فریم ورک ها از نظر کاری است که می توانند انجام دهند و امکاناتی که می توانند ارائه کنند. معمولا وقتی صحبت از یک فریم ورک به میان می آید، ما به روش برنامه نویسی ای فکر می کنیم که با این امکان را می دهد که به صورت کامل یک برنامه را از صفر تا صد با استفاده از یک زبان برنامه نویسی طراحی کنیم، اما بعضی از فرریم روک ها این قابلیت را نداشته و صرفا مربوط به طراحی بخش های مختلفی هستند.
در کل می توانیم فریم ورک ها را با توجه به این دسته بندی، به دو نوع مختلف فریم ورک های سبک وزن و فریم ورک های کامل معرفی کنیم. در بخش قبلی با دو مورد از فریم ورک های کامل آشنا شدیم و لاراول و همینطور سیمفونی را که از این دسته فریم ورک ها هستند معرفی کردیم. کاری که این فریم ورک ها انجام می دهند در واقع چند مرحله مشخص دارد و از چند جز اصلی تشکیل شده اند. اجزای فریم ورک های کامل به این صورت می باشد:
- یک پایگاه داده و همینطور سیستم مدیریت آن
- یک الگوی طراحی قوی که عموما از MVC و MVVM استفاده می شود و معماری کلی را تشکیل می دهد
- یک طراحی پیشفرض از بک اند که برنامه نویس بنا به نیاز پروژه آن را تغییر می دهد
- یک موتور قالب برای ساخت اجزای فرانت اند و رابط کاربری و همینطور امکانات لازم برای اتصال آن به بک اند
به طور کلی می توانیم بگوییم فریم ورکی که تمامی این موارد را ارائه می کند، یک فریم ورک کامل است که با استفاده از آن می توان یک برنامه را از صفر تا صد پیاده سازی کرد و تمامی موارد لازم برای ساخت را در اختیار کاربران خود قرار می دهد. البته باید در نظر داشت که ممکن است برنامه ای که این فریم ورک ها به تنهایی ارائه می کنند تمامی امکانات لازم برای یک برنامه خوب را نداشته باشد. به طور کلی می توانیم بگوییم که یک فریم ورک کامل الزاما یک برنامه حرفه ای و زیبا را به ما تحویل نمی دهد. اما می توانیم بگوییم که یک برنامه کامل را در اختیار ما خواهد گذاشت.
در مورد فریم ورک های سبک وزن اوضاع کمی متفاوت است. اگر بخواهیم بگوییم که این نوع از فریم ورک چیست می توانیم بگوییم که این فریم ورک ها، در واقع ابزار هایی هستند که به صورت اجمالی برای کار کردن با یک قابلیت خاص ارائه می شوند و صرفا قرار است که یک کار را انجام دهند. از معروفترین این فریم ورک ها می توانیم به فریم ورک Express JS اشاره کنیم. شما در این فریم روک می توانید با استفاده از محیط برنامه نویسی Node JS بخش بک اند و سمت سرور برنامه خود را برنامه نویسی کنید، اما صرفا همین کار را می توانید انجام دهید و از پایگاه داده و بخش فرانت اند خبری نیست.
در واقع مهمترین ویژگی فریم ورک های سبک وزن این است که پایگاه داده ندارند و صرفا مربوط به یک بخش از برنامه هستند. این فریم ورک ها عموما به صورت بنا بر نیاز طراحی می شوند. Express JS هم همینطور بوده و دقیقا برای کار کردن با Node JS ارائه شده است. این فریم ورک فاقد پایگاه داده به صورت Embeded است و برای پایگاه داده خود نیاز است تا از پایگاه داده Mongo DB به صورت جدا مورد استفاده قرار گیرد. در صورتی که مایل به اطلاعات بیشتر در خصوص فریم ورک ها و پایگاه داده های معرفی شده در این بخش هستید می توانید به مقالات مانگو دی بی چیست ، Node JS چیست و Express JS چیست مراجعه کنید.
این دو تقسیم بندی معروف ترین انواع تقسیم بندی هستند و می توان گفت که معمولا هر فریم ورکی در یکی از این دسته ها قرار می گیرد. اما در مورد فریم ورک ها ممکن است به یک مفهوم دیگر هم برخورد کنید و آن پشته های نرم افزاری است که باید به صورت جدا به آن پرداخته شود. در ادامه در مورد اینکه این پشته ها و استک ها چه هستند و تفاوت آنها با فریم ورک چیست بیشتر صحبت خواهیم کرد.
پشته های توسعه یا Development stack چه هستند
وقتی صحبت از طراحی برنامه های کامپیوتری و برنامه های وب در میان باشد، این که شما چه مسیری را انتخاب کنید می تواند تا حد زیادی وابسته به فریم روک باشد و در ابتدای مقاله در مورد آن صحبت کردیم. اما این موضوع که چه فریم ورکی را انتخاب کنیم و کدام یک از آنها برای کار ما مناسب هستند یک مورد مهم به شمار می آید. همینطور این که وقتی فریم ورک بک اند را پیدا کردیم بخش فرانت را باید با چه فریم ورکی طراحی کنیم، بحثی است که کمی کار را سخت می کند.
در اینجا است که پشته های توسعه یا همان Development stack ها وارد ماجرا می شوند. Development stack ها مجموعه ای از روش ها هستند که تعیین می کنند شما باید کجا از چه امکانی استفاده کنید و برنامه خود را به چه صورتی بنویسید. هر Development stack این امکان را دارد که چند فریم ورک را به شما ارائه کند و به شما بگویید که باید پروژه را با چه ترتیبی جلو ببرید. به عنوان مثال این پشته ها تعیین می کنند که شما ابتدا باید کار بک اند را با استفاده از Express JS شروع کرده و پایگاه داده خود را روی Mongo DB پیاده سازی کنید، بعد از آن نوبت به بکار گرفتن Angular JS و یا Vue JS برای فرانت اند سایت یا اپلیکیشن تحت وب شما خواهد بود.
تعداد پشته های توسعه زیاد هستند، اما می توان محبوب ترین آنها را به این صورت معرفی کرد:
MEAN Stack
معروفترین پشته نرم افزاری که به ما امکان استفاده از Node JS را می دهد و با استفاده از آن می توان برنامه های خوبی را با زبان برنامه نویسی جاوا اسکریپت برنامه نویسی و طراحی کرد. در این پشته ما با چهار تکنولوژی اصلی طرف هستیم که حروف ابتدایی آنها واژه MEAN را تشکیل می دهند.
این چهار تکنولوژی در واقع Mongo DB، Express JS، Angular JS و Node JS می باشند که در بخش قبلی آن را به عنوان یکی از روش های مهم معرفی کردیم.
MEVN Stack
این پشته توسعه هم دقیقا مانند پسته توسعه قبلی یکی از پشته های مهم نرم افزاری تلقی می شود که شباهت زیادی با مورد قبلی دارد. تنها تفاوتی که می توان در این پشته با مورد قبلی دید، استفاده از Vue JS به جای فریم ورک Angular JS برای طراحی فرانت اند سایت و یا اپلیکیشن است.
Meteor
یکی دیگر از پشته های برنامه نویسی می باشد که در واقع می توان آن را به صورت یک فریم ورک کامل هم معرفی کرد. در این پروژه با استفاده از Node JS می توان سمت بک اند را تکمیل کرده و همینطور امکانات خوبی برای فرانت هم داده می شود که به صورت تمام و کمال با استفاده از جاوا اسکریپت ارائه شده اند و می توان گفت که با استفاده از این فریم ورک می توان یک سایت را هم در بک اند و هم در فرانت طراحی کرد و از امکانات خوبی برای این کار استفاده نمود.
Flutter
یک کیت ساخت نرم افزار یا همان SDK است که به صورت اوپن سورس توسط گوگل ارائه شده است و به عنوان یک ابزار تولید برنامه برای اندروید، iOS، لینوکس، مک و ویندوز به صورت کراس پلتفرم مورد استفاده قرار می گیرد و برنامه نویسان زیادی از آن استفاده می کنند. برنامه نویسان با استفاده از این سیستم به صورت کامل می توانند کل برنامه خود را با یک کد یکپارچه و تک پایه پیاده سازی کنند.
به طور کلی می توانیم بگوییم که خیلی از برنامه نویسان حرفه ای از این پشته های توسعه یا همان Development stack ها برای کار خود استفاده می کنند و با استفاده از این موارد می توان یک برنامه را به راحتی پیاده سازی کرد و خیلی از درگیری های ذهنی که یک برنامه نویس دارد را کاهش داد.
نتیجه گیری
در این مقاله به بررسی اینکه فریم ورک چیست و چه کاری را انجام می دهد، حوزه های مختلف فعالیت فریم ورک چیست و همینطور این موضوع که تاثیر زبان برنامه نویسی در کارایی فریم ورک چیست صحبت کردیم و به این نتیجه رسیدیم که این قابلیت می تواند با استفاده از ویژگی های خوبی مانند الگوی طراحی MVC و همینطور کتابخانه هایی که ارائه می کند یک مجموعه کامل از امکانات را برای ساخت یک برنامه و یا طراحی یک سایت اینترنتی در اختیار برنامه نویسان قرار دهد که با استفاده از آن هم کار راحت تر و سریعتر پیش برود و هم در آخر کیفیتی بسیار بسیار بهتر از سایر روش های معمولی به ما ارائه شود.