دو اصطلاح **فرانت‌اند** و **بک‌اند** (به انگلیسی: frontend and backend) در مهندسی نرم‌افزار به جداسازی نگرانی بین لایه نمایش (سر جلو) و لایه دسترسی داده (سر عقب) برای یک قطعه نرم‌افزاری، یا زیرساخت فیزیکی یا سخت‌افزار اشاره دارد. در مدل کارساز-کارخواه، کارخواه را معمولا فرانت‌اند درنظر می‌گیرند و کارساز را بک‌اند در نظر می‌گیرند، حتی اگر قسمتی از کار نمایشی واقعاً در کارساز انجام شود.

معرفی
-----

در معماری نرم‌افزار، ممکن است چندین لایه بین سخت‌افزار و کاربر نهایی وجود داشته باشد. «جلو» یک انتزاع است که مولفه زیرین را با ارائه یک واسط کاربر-پسند ساده‌سازی می‌کند؛ درحالی‌که «عقب» معمولاً ذخیره‌سازی داده و منطق تجاری را در دست دارد.

در مخابرات؛ «جلو» را می‌توان یک دستگاه یا سرویس در نظر گرفت، درحالی‌که «عقب» همان زیرساختی است که تدارک سرویس را پشتیبانی می‌کند.

یک قاعده سرانگشتی آن است که جهت-کارخواه (یا «فرانت‌اند») هر مولفه‌ای است که توسط کاربر دستکاری می‌شود. کد جهت-کارساز (یا « بک‌اند») معمولاً در سمت کارساز قرار دارد، معمولاً از کاربر دور است.

تعاریف نرم‌افزاری
-----------------

در سامانه مدیریت محتوا، دو اصطلاح *فرانت‌اند* و  *بک‌اند* ممکن است به دیدگاه کاربر نهایی از CMS و دیدگاه مدیریتی به ترتیب اشاره کند.

در سامانه تبدیل متن به گفتار، فرانت‌اند به بخشی از سامانه اشاره دارد که متن ورودی را به نمایش آوایی نمادین تبدیل می‌کند، و بک‌اند نمایش آوایی نمادین را به صدای واقعی تبدیل می‌کند.

در کامپایلرها، *فرانت‌اند* کد منبع یک زبان برنامه‌نویسی را به یک نمایش میانی ترجمه می‌کند؛ و بک‌اند با نمایش میانی کار می‌کند تا کدی به زبان رایانه ایجاد کند. بک‌اند معمولاً برای ایجاد کدی که سریع‌تر هست، یک عمل بهینه‌سازی انجام می‌دهد. تمایز فرانت‌اند/بک‌اند می‌تواند بخشی از تجزیه‌گر را که با کد منبع سروکار دارد و بک‌اند که کد را تولید می‌کند و بهینه‌سازی می‌کند را جدا کند. بعضی از طراحی‌ها، مثل GCC، گزینه‌هایی بین چندین فرانت‌اند (تجزیه‌کردن زبان‌های منبع مختلف) یا بک‌اند (تولید کد برای پردازنده‌های هدف مختلف) پیشنهاد می‌دهند.

بعضی از برنامه‌های واسط‌های کاربری گرافیکی (GUI) که در محیط رومیزی اجرا می‌شوند به صورت یک فرانت‌اند نازک برای برنامه‌های واسط خط فرمان (CLI) پیاده‌سازی می‌شوند، این باعث می‌شود دیگر نیاز نباشد که کاربر اصطلاحات به‌خصوص یا فرمان‌های خاص را یاد بگیرد و به خاطر بسپارد.

### مثال توسعه وب

یک راه دیگر برای فهم تفاوت بین این دو فهم دانش لازمه برای توسعه‌دهنده نرم‌افزار فرانت‌اند در برابر بک‌اند است.

### API

فرانت‌اند با بک‌اند از طریف یک API ارتباط برقرار می‌کند. در حالت فرانت‌اند وب و موبایل، API معمولاً براساس درخواست/پاسخ HTTP است. گاهی API از طریق الگوی «بک‌اند برای فرانت‌اند» (BFF) طراحی می‌شود، که پاسخ‌ها را برای پردازش ساده‌تر در سمت فرانت‌اند در خدمت می‌گیرد.

تعاریف سخت‌افزاری
-----------------

در رایانش شبکه‌ای، «فرانت‌اند» به هر سخت‌افزاری که ترافیک شبکه را بهینه‌سازی یا محافظت می‌کند، اشاره دارد. به این **سخت‌افزار فرانت‌اند کاربردی** گفته می‌شود زیرا در فرانت‌اند یا مرز بیرونی شبکه قرار دارد. ترافیک شبکه، قبل از ورود به شبکه، از سخت‌افزار فرانت‌اندی عبور می‌کند.

در طراحی پردازنده، «طراحی فرانت‌اند» به توصیف اولیه رفتار یک مدار در یک زبان توصیف سخت‌افزار مثل وریلاگ اشاره دارد، درحالی‌که «طراحی بک‌اند» همان فرایند نگاشت رفتار به ترانزیستورهای فیزیکی روی یک دای است.

منابع
-----

مشارکت‌کنندگان ویکی‌پدیا. «Frontend and backend». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۸ ژوئن ۲۰۲۳.

پانویس
------

1. ↑  «فرانت اند، بک اند یا هر دو؟». *ماهنامه شبکه* (۲۱۰): ۸۸. ۱۳۹۷. دریافت‌شده در ۸ ژوئن ۲۰۲۳.
2. ↑  "Front End vs Back End of Your Website: Everything You Need to Know". *DOJO Creative*. 7 February 2020. Retrieved 31 August 2022.
3. ↑  Thapliyal, Vimal. "Difference Between Frontend and Backend MVC – Joomlatuts". *joomlatuts.net*. Archived from the original on 30 December 2016. Retrieved 30 December 2016.
4. ↑  Gutierrez--Osuna, Ricardo. "L18: Speech synthesis (backend)" (PDF). *tamu.edu*. Texas A&M University. Archived from the original (PDF) on 14 February 2019. Retrieved 29 December 2016.
5. ↑  Bin Muhammad, Rashid. "Operating Systems Notes". *www.personal.kent.edu*. Kent State University. Retrieved 30 December 2016.
6. ↑  Wickramarachchi, Viduni (24 February 2021). "The BFF Pattern (Backend for Frontend): An Introduction". *Bits and pieces*. Retrieved 13 November 2021.
7. ↑  O'Dell, Mike. "Network Front-End Processors, Yet Again | June 2009 | Communications of the ACM". *cacm.acm.org*. Retrieved 2016-12-30.