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