В программной инженерии термины frontend и backend (иногда пишутся как back end или back-end ) относятся к разделению интересов между уровнем представления ( frontend ) и уровнем доступа к данным ( backend ) части программного обеспечения или физической инфраструктуры или оборудования . В модели клиент-сервер клиент обычно считается frontend, а сервер обычно считается backend, даже если некоторая работа по представлению фактически выполняется на самом сервере.
В архитектуре программного обеспечения может быть много слоев между оборудованием и конечным пользователем . Фронт — это абстракция, упрощающая базовый компонент, предоставляя удобный интерфейс, в то время как бэк обычно обрабатывает хранение данных и бизнес-логику .
В телекоммуникациях переднюю часть можно рассматривать как устройство или услугу, а заднюю — как инфраструктуру, которая поддерживает предоставление услуги.
Правило большого пальца заключается в том, что клиентская сторона (или «фронтенд») — это любой компонент, которым управляет пользователь. Серверная сторона (или «бэкенд») код обычно находится на сервере , часто физически далеко от пользователя.
В системах управления контентом термины frontend и backend могут относиться к представлениям CMS, обращенным к конечному пользователю, и административным представлениям соответственно. [1] [2]
В синтезе речи фронтенд относится к части системы синтеза, которая преобразует входной текст в символическое фонетическое представление, а бэкенд преобразует символическое фонетическое представление в реальные звуки. [3]
В компиляторах frontend транслирует исходный код компьютерного программирования в промежуточное представление , а backend работает с промежуточным представлением для создания кода на языке компьютерного вывода. Backend обычно оптимизирует для создания кода, который работает быстрее. Различие frontend/backend может разделить раздел парсера , который имеет дело с исходным кодом, и backend, который генерирует код и оптимизирует . Некоторые разработки, такие как GCC , предлагают выбор между несколькими frontend (анализирующими разные исходные языки ) или backend (генерирующими код для разных целевых процессоров ). [4]
Некоторые приложения с графическим пользовательским интерфейсом (GUI), работающие в среде рабочего стола, реализованы в виде тонкого интерфейса для базовых программ интерфейса командной строки (CLI), чтобы избавить пользователя от необходимости изучать специальную терминологию и запоминать команды .
Другой способ понять разницу между ними — понять, какие знания требуются от frontend- и backend- разработчика программного обеспечения . Список ниже в качестве примера фокусируется на веб-разработке .
Обратите внимание, что обе должности, несмотря на возможную работу над одним продуктом, предполагают совершенно разный набор навыков.
Фронтенд взаимодействует с бэкендом через API . В случае веб- и мобильных фронтендов API часто основано на HTTP- запросе/ответе. Иногда API разрабатывается с использованием шаблона «Бэкенд для фронтенда» (BFF), который обслуживает ответы для упрощения обработки на стороне фронтенда. [5]
В сетевых вычислениях frontend может относиться к любому оборудованию , которое оптимизирует или защищает сетевой трафик . [6] Оно называется front-end оборудованием приложения, поскольку размещается на внешнем frontend или границе сети . Сетевой трафик проходит через front-end оборудование перед входом в сеть.
В проектировании процессоров , проектирование внешнего интерфейса будет представлять собой начальное описание поведения схемы на языке описания оборудования, таком как Verilog , в то время как проектирование внутреннего интерфейса будет представлять собой процесс отображения этого поведения на физические транзисторы на кристалле. [7]