فرانت اند و بک اند
در مهندسی نرمافزار، اصطلاحات front-end وback-end به تفکیک توجهها بین لایه نمایش (قسمتی که نتیجه در آن نمایش داده میشود) و لایه دسترسی به داده (قسمت کار بر روی دادهها) در یک قطعه نرمافزار یا زیرساختهای فیزیکی یا سختافزار اشاره دارد. در مدل client-server (مثل سایتها که با سرور در ارتباط اند)، client یا سرویس گیرنده معمولاً به عنوان front end در نظر گرفته میشود و معمولاً سرور به عنوان back end در نظر گرفته میشود، حتی زمانی که برخی از کارهای ارائه شده (در لایه نمایش یا همان front end) در واقع بر روی سرور انجام میشود.
معرفی
در معماری نرمافزار، ممکن است لایههای زیادی بین سختافزار و کاربر نهایی وجود داشته باشد؛ که دربارهٔ داشتن یا نداشتن front end و back end برای هر لایه بحث کرد. front-end یک انتزاع (abstract) است، که لایههای زیرین (که تقریباً توسط کاربر غیرقابل فهم است) را سادهسازی میکند تا لایه نمایشی ای(front end)بسازد که کاربر بتواند به راحتی از آن استفاده کند، در حالی که back end معمولاً پردازش و ذخیرهسازی دادهها را انجام میدهد.
در ارتباطهای مخابراتی، front-endمیتواند یک دستگاه یا سرویس باشد، در حالی که پشت (back end)این زیرساخت است که از ارائه خدمات پشتیبانی میکند.
یک قاعده کلی این است که سمت سرویس گیرنده (یا "front-end") هر جزء است که کاربر آن را دستکاری میکند. کد سمت سرور (یا "back end") معمولاً روی سرور قرار میگیرد، که اغلب از طرف کاربر به صورت فیزیکی قابل دسترسی نیست.
تعاریف نرمافزاری
- در سیستمهای مدیریت محتوا، اصطلاحها front end وback end ممکن است به ترتیب به آنچه که کاربر نهایی از CMS میبیند و آنچه admin میبیند مربوط شود.[1]
- در TTS، قسمت جلویی (front end)اشاره به بخشی از سیستم سنتز است که متن ورودی را به نمایش نمادین آوایی تبدیل میکند، و بخش عقب(back end) نماد نمادین آوایی را به صداهای واقعی تبدیل میکند.[2]
- برای زیرسیستمهای اصلی کامپیوتر یک نرمافزار مدیریت فایل که گرافیکی است یک front end برای سیستم فایل(file system) رایانه است و یکshellبا سیستم عامل پیادهسازی میشود. کاربر با front end رو به رو میشود وback end برنامههای سیستم عامل را در پاسخ میدهد و لانچ میکند.
- در کامپایلرها front-end کد برنامهنویسی کامپیوتر را به یک نمایش واسطه تبدیل میکند و back end با نمایش واسطه ایجاد شده برای تولید کد به زبان خروجی کامپیوتر کار میکند. back end معمولاً برای تولید کد ای که سریعتر اجرا میشود، بهینهسازی میکند. تمایز جلویی / عقب پایان میتواند بخش تجزیه کننده را که مربوط به کد منبع و انتهای عقب است که کد را تولید می کند و بهینهسازی می کند، جدا میکند. بعضی از کامپایلرها، مانند GCC، اجازه انتخاب بین چند front end (تجزیه کد زبانهای مختلف) یا back end را میدهند (تولید کد برای پردازندههای مختلف).[3]
- استفاده از رابط خط فرمان (CLI) نیاز به دستیابی به اصطلاحات خاص و حفظ دستورها دارد، بنابراین یک رابط کاربری گرافیکی (GUI) همانند دسکتاپ به عنوان front end عمل می کند.
به عنوان مثال توسعه وب
راه دیگری برای درک تفاوت بین این دو دانستن آگاهی یا دانش مورد نیاز یک برنامهنویس front end و back end است. لیست زیر به عنوان مثال در توسعه وب تمرکز دارد.
هر دو
- ابزار کنترل نسخه مانند GitHub، SourceForge یا Mercurial
- ابزار انتقال فایل مانند FTP یا rsync
front end متمرکز است بر
- زبانهای نشانه گذاری و زبانهای وب مانند HTML، CSS، جاوا اسکریپت و کتابخانههای جانبی که معمولاً در آن زبانها استفاده میشود مانند Sass یا JQuery
- Asynchronous request handling و AJAX
- برنامههای تک صفحه (با frame workهایی مانند React، AngularJS یا Vue.js)
- عملکرد وب (اولین رنگ معنی دار، زمان تعاملی، انیمیشن 60 FPS و تعامل، استفاده از حافظه و غیره)
- طراحی صفحات وب سازگار با شرایط (مانند اندازه صفحه)
- مسائل سازگاری با مرورگرها و راه حلها
- تست پایان دادن به یک مرورگر بدون سر و صدا
- اتوماتیک سازیتبدیل و بستهبندی نرمافزاری فایلهای جاوا اسکریپت، کاهش اندازه تصاویر … با ابزار مانند Webpack یا Gulp.js
- بهینهسازی موتور جستجو
- توجه به دسترسیها
- استفاده عمومی از ابزارهای ویرایش عکس مانند GIMP یا فتوشاپ
- رابط بصری
back end متمرکز است بر
- زبانهای اسکریپتی مانند Node.js، PHP، Python، Ruby، Perl یا زبانهای کامپایل شده مانند C #، Java یا Go
- frame workهایی که تست خودکار برای زبان مورد استفاده دارند
- دسترسی به دادههای برنامه
- منطق کسب و کار برنامه
- مدیریت پایگاه داده
- مقیاس پذیری
- توجههای امنیتی، تأیید هویت و مجوز
- معماری نرمافزار
- تبدیل دادهها
- روشها و نرمافزارهای بک آپگیری
توجه داشته باشید که هر دو موقعیت(front end و back end)، با وجود احتمالاً کار بر روی یک محصول، مجموعه ای از مهارتهای بسیار متمایز را دارند.
تعاریف سختافزاری
در محاسبات شبکه، front end میتواند به هر سختافزاری که ترافیک شبکه را بهینهسازی یا محافظت میکند اشاره کند.[4] این نرمافزار به عنوان سخت افزار front end نامیده میشود ، زیرا در قسمت جلو یا مرز خارجی به سمت شبکه قرار میگیرد. ترافیک شبکه از طریق سختافزار front end قبل از ورود به شبکه عبور میکند.
در طراحی پردازنده، طراحی front end، توصیف اولیه رفتار یک مدار در یک زبان توصیف سختافزاری مانند Verilog خواهد بود، در حالی که طراحی back end، به روند پردازش این رفتار را به ترانزیستورهای فیزیکی روی یک die گفته میشود.[5]
جستارهای وابسته
- مدل سرویسگیرنده-سرویسدهنده
- الگوی ناظر
- برنامهنویسی ماژولار
منابع
- Thapliyal, Vimal. "Difference Between Frontend and Backend MVC – Joomlatuts". joomlatuts.net. Archived from the original on 30 December 2016. Retrieved 2016-12-30.
- Gutierrez--Osuna, Ricardo. "L18: Speech synthesis (back end)" (PDF). tamu.edu. Texas A&M University. Archived from the original (PDF) on 14 February 2019. Retrieved 2016-12-29.
- Bin Muhammad, Rashid. "Operating Systems Notes". www.personal.kent.edu. Kent State University. Retrieved 2016-12-30.
- O'Dell, Mike. "Network Front-End Processors, Yet Again | June 2009 | Communications of the ACM". cacm.acm.org. Retrieved 2016-12-30.
- "Front-End Design | Online Documentation for Altium Products". techdocs.altium.com. Retrieved 2016-12-30.