Разница между интерфейсом, бэкэнд и промежуточным программным обеспечением в веб-разработке

Мне было интересно, может ли кто-нибудь сравнить или сравнить различия между интерфейсом, бэкэнд и промежуточным программным обеспечением ( "средний конец"?) лаконично.

Есть ли случаи, когда они перекрываются? Существуют ли случаи, когда они ДОЛЖНЫ перекрываться, а интерфейс/бэкэнд не могут быть разделены? Что касается узких мест, какой конец связан с каким узким местом?

Ответ 1

Вот один пробой:

Внешний уровень → Уровень пользовательского интерфейса, обычно состоящий из сочетания HTML, Javascript, CSS, Flash и различных серверных кодов, таких как ASP.Net, классический ASP, PHP и т.д. Подумайте об этом как о ближайшем пользователю с точки зрения кода.

Middleware, middle-tier → Один уровень назад, обычно называемый "сантехнической" частью системы. Java и С# являются общими языками для написания этой части, которые можно рассматривать как клей между пользовательским интерфейсом и данными и могут быть веб-сервисами или компонентами WCF или другими компонентами SOA.

Базовый уровень → Базы данных и другие хранилища данных обычно находятся на этом уровне. Oracle, MS-SQL, MySQL, SAP и различные готовые программные средства приходят на ум для этой части программного обеспечения, которая является окончательной обработкой данных.

Перекрытие может существовать между любыми из них, так как вы могли бы вылить все на один слой, например, на веб-сайт ASP.Net, который использует встроенную функцию AJAX, которая генерирует Javascript, а код позади может содержать команды базы данных, в которых код, содержащий код, содержит как средний и задний уровни. В качестве альтернативы можно использовать VBScript, чтобы действовать как все слои с использованием объектов ADO и слияние всех трех уровней в один.

Аналогичным образом, в некоторых случаях объединение промежуточного программного обеспечения и переднего или заднего интерфейса может быть объединено.

Узкие места обычно имеют для них несколько разных уровней:

1) Работа с базами данных или внутренняя обработка → Это может варьироваться от зарплаты или продаж или других задач, когда пропускная способность базы данных утомляет вещи.

2) Узкие места промежуточного уровня → Это может привести к тому, что некоторые веб-службы могут поражать емкость, но передняя и задняя части имеют пропускную способность для обработки большего трафика. В качестве альтернативы, может быть какой-то сервер, который является частью системы, которая не является частью пользовательского интерфейса или необработанных данных, которые могут быть узким местом, используя что-то вроде Biztalk или MSMQ.

3) Узкие места переднего плана → Это может быть проблемой клиента или сервера. Например, если вы взяли компьютер с низким уровнем доступа и загрузили веб-страницу, состоящую из большого количества загружаемых данных, клиент может быть там, где это узкое место. Точно так же сервер может запросить запросы в очереди, если он забит запросами, например, что Amazon.com или другие сайты с высоким трафиком могут получить время от времени.

Некоторые из них подвержены интерпретации, поэтому они не совершенны никакими средствами и YMMV.


РЕДАКТИРОВАТЬ: что-то, что нужно учитывать, это то, что некоторые системы могут иметь несколько интерфейсов или back-end. Например, система управления контентом, вероятно, будет иметь возможность посетителям сайта просматривать содержимое, которое является интерфейсом, но как насчет того, как редакторы контента могут изменять данные на сайте? Возможность поднять эти данные можно рассматривать как интерфейс, поскольку он является компонентом пользовательского интерфейса, или его можно рассматривать как фоновый, поскольку он используется внутренними пользователями, а не для общего просмотра сайта. Таким образом, здесь есть что сказать об этом.

Ответ 2

Вообще говоря, люди ссылаются на уровень представления приложения как на его передний конец, на свой постоянный уровень (база данных, обычно), как на заднюю часть, и на все, что находится между средним уровнем. Этот набор идей часто упоминается как трехуровневая архитектура. Они позволяют разделить ваше приложение на более понятные (и проверяемые!) Куски; вы можете также повторно использовать код нижнего уровня более легко в более высоких уровнях.

Какой код является частью того уровня, который несколько субъективен; графические дизайнеры склонны думать обо всем, что не является презентацией в качестве задней части, люди базы данных думают обо всем, что находится перед базой данных, как передняя часть, и т.д.

Однако не все приложения должны быть отделены таким образом. Это, безусловно, больше работы, чтобы иметь 3 отдельных подпроекта, чем просто открыть index.php и взломать; в зависимости от (1) того, как долго вы планируете поддерживать приложение (2), насколько сложным вы ожидаете приложение, вы можете отказаться от сложности.

Ответ 3

В вашем вопросе есть 3 вопроса:

  • Определить интерфейс, средний и задний конец
  • Как и когда они перекрываются?
  • Связанные с ними обычные узкие места.

То, что JB King описал правильно, но это конкретная, простая версия, где на самом деле он сопоставил фронт, середину и bacn с уровнем MVC. Он сопоставил M со спиной, V спереди, а C - посередине.

Для многих это просто прекрасно, поскольку они происходят из уродливого мира, где даже MVC не применяется, и вы можете иметь прямые вызовы DB в представлении.

Однако в реальных сложных веб-приложениях у вас действительно есть два или три разных уровня: фронт, середина и спина. Каждый из них может иметь связанную базу данных и контроллер.

Внешний интерфейс будет виден конечным пользователем. Его не следует путать с фронт-офисом, который является пользовательским интерфейсом для параметров и управления фронтом. Интерфейс обычно будет своего рода платформой CMS или электронной коммерции (Magento и т.д.).

Средний конец не является обязательным и является местом ведения бизнес-логики. Он будет основан на PIM, инструменте MDM или какой-то пользовательской базе данных, где вы обогатите свои продукты или свои статьи (для CMS). Это также место, где вы кодируете бизнес-функции, которые должны быть разделены между различными интерфейсами (например, между интерфейсом ПК и мобильным приложением на базе API). Иногда ESB или инструмент, такой как ActiveMQ, будет вашим средним уровнем

Контекст будет третьим уровнем, который будет зависеть от исходной базы данных или вашего ERP. Это может означать, что API заходит и читает из вашего ERP. Это может быть ваша БД поставщика, если вы занимаетесь электронной коммерцией. Фактически, это действительно зависит от веб-проектов, но это всегда центральный репозиторий. Он будет доступен либо через вызов БД, через API, либо спящий уровень, либо полнофункциональное фоновое приложение

Это описание означает, что ответ на другие 2 вопроса невозможен в этом потоке, поскольку узкие места действительно зависят от того, что содержит ваши 3 конца: то, что написал JB King, остается верным для простых архитектур MVC.

в тот момент, когда вопрос был задан (5 лет назад), возможно, шаблон MVC еще не был так широко принят. Теперь нет абсолютно никакой причины, по которой шаблон MVC не будет соблюден, и представление будет привязано к вызовам БД. Если вы прочитали вопрос "Есть ли случаи, когда они ДОЛЖНЫ перекрываться, а интерфейс/бэкэнд не могут быть разделены?" в более широком смысле, с тремя различными компонентами, тогда время, когда архитектура из трех слоев бесполезна, конечно. Подумайте о простом личном блоге, вам не нужно вытягивать внешние данные или опросить очереди RabbitMQ.

Ответ 4

Вот пример реального мира, который показывает передний/средний/задний конец.

Общее описание:

  • Frontend отвечает за представление данных пользователю. Обратите внимание на интересную особенность, что у вас могут быть два разных интерфейса, связанных с одним бэкэнд.
  • Backend обеспечивает ведение бизнес-логики/данных.
  • Middleware (activemq на картинке) отвечает за систему в системе. интеграция между бэкендами. Обычно он устанавливается как отдельное приложение введите описание изображения здесь

Перекрытие:

Возможно совпадение между интерфейсом и бэкэнд. Обычно это связано с долгосрочными проблемами с обслуживанием приложений и масштабируемостью. Довольно распространено в устаревших приложениях.

Большинство современных технологических стеков поощряют разработчиков к строгому разделению. Например, на картинке вы можете видеть, что бэкэнд первой системы имеет веб-сервис отдыха, который является четкой разделительной линией.

Узкие

Большинство узких мест в основном вызваны базой данных/сетью. Базы данных находятся в бэкэнд. Что касается сетевых проблем, каждое соединение проходит через netowrk, поэтому каждое соединение может быть медленным. С хорошим дизайном приложений эти проблемы можно избежать в большой степени.

Ответ 5

Что касается сетей и безопасности, то бэкэнд на сегодняшний день является самым безопасным (должен быть) безопасным node.

Средняя часть, обычно являющаяся веб-сервером, будет несколько дикой и отрезана во многих отношениях от сети компаний. Средний конец node обычно помещается в DMZ и сегментируется из сети с настройками брандмауэра. Большая часть анализа кода веб-страниц на стороне сервера обрабатывается на веб-сервере среднего уровня.

Переход на бэкэнд означает переход через средний конец, который имеет тщательно разработанный набор правил, разрешающий/запрещающий доступ к жизненно важным номерам, которые хранятся на сервере базы данных (backend).

Ответ 6

Внешний интерфейс относится к клиентской части, тогда как внутренний относится к серверной части приложения. Оба имеют решающее значение для веб-разработки, но их роли, обязанности и среда, в которой они работают, совершенно разные. Фронтенд - это то, что видят пользователи, а бэкэнд - как все работает