Трехуровневая архитектура, Spring и Angular

У меня вопрос по трехуровневой архитектуре.

У меня есть приложение, использующее Spring Boot и Angular. Интересно, если:

  • Презентационный слой = угловой
  • Прикладной уровень = весенняя загрузка

Или, если есть ДВУХ трехуровневая архитектура: угловая - одна, а пружинная - тоже.

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

1 ответ

Краткий ответ: это зависит от качества вашей реализации.

Для более длинного ответа я хотел бы вначале подвести итог цели архитектуры программного обеспечения. Разделение проекта на несколько уровней в разработке программного обеспечения служит для разделения вашего кода "физически" до того, как вы и ваша команда начнете писать код. Процесс определения вашей архитектуры заранее может дать вам представление о том, как именно весь ваш проект будет структурирован и какие языки или структуры могут / должны использоваться.

Пример для трехуровневой архитектуры:

  • Уровень представления: интерфейс вашего приложения. Может быть в HTML/CSS или в веб-фреймворке, таком как Angular или React. Вы хотите, чтобы этот слой отображал данные, которые он извлекает, и выполнял как можно меньше "размышлений".
  • Уровень приложений: это промежуточное программное обеспечение вашего приложения. Может быть реализован на любом языке, который вам нравится, например, PHP, Java, C#, Python и т. Д. Этот уровень является "движком" вашего программного обеспечения и соединяет уровень представления с уровнем данных. Вам не нужны никакие виды или пользовательский интерфейс в этом слое, так как это "великий мыслитель" отряда.
  • Уровень данных: ваша база данных или система хранения. Может быть в MySQL, PostgreSQL, MongoDB и т. Д. Уровень данных будет доступен для прикладного уровня через вызовы API (примечание: сам вызов API инициируется уровнем представления, но уровень представления не знает, что будет прикладным уровнем). сделать с этим вызовом, это черный ящик между двумя).

По семантическим причинам я не могу сказать, что Angular/Spring "является трехуровневой архитектурой", поскольку это полностью зависит от вашей реализации. Оба могут быть трехуровневыми, если вы этого хотите. Однако в вашем случае правильно заявить, что Angular должен быть уровнем представления, а Spring Boot - прикладным уровнем.

Использование Angular в качестве уровня презентации (и только уровня презентации) имеет большой смысл. Ваше приложение Angular не должно заботиться о данных, которые оно получает, оно должно только отображать их. Поэтому Spring Boot будет компонентом, который доставляет данные из уровня данных на уровень представления.

Хорошая реализация делает трехуровневую архитектуру взаимозаменяемой. Не хотите больше использовать Angular? Просто перейдите на другую платформу, и данные, которые увидят ваши клиенты, останутся прежними. В этом сила хорошо продуманной архитектуры и того, чего вы хотите достичь с ее помощью.

Википедия описывает архитектуру программного обеспечения следующим образом:

"Архитектура программного обеспечения относится к структурам высокого уровня системы программного обеспечения и дисциплине создания таких структур и систем. Каждая структура включает в себя элементы программного обеспечения, отношения между ними и свойства как элементов, так и отношений. Архитектура системы программного обеспечения является метафорой По аналогии с архитектурой здания. Он функционирует как проект системы и развивающегося проекта, излагая задачи, необходимые для выполнения командами разработчиков ".

Поэтому, наконец, чтобы ответить на ваш вопрос: ваша установка определяет вашу архитектуру. Если вы используете Angular в качестве своего пользовательского интерфейса, Spring Boot в качестве набора сервисов и базу данных для хранения ваших данных, у вас будет трехуровневая архитектура. Если вы решите создать свой веб-интерфейс в Spring Boot без Angular, у вас все равно будет трехуровневая архитектура, но Spring Boot использует два из этих уровней (именно поэтому Spring точно следует шаблону MVC).

Архитектура одностраничного веб-приложения Spring MVC + Angular
Приложения корпоративного класса с интенсивной формой идеально подходят для создания одностраничных веб-приложений. Основная идея по сравнению с другими более традиционными серверными архитектурами состоит в том, чтобы создать сервер как набор повторно используемых служб REST без сохранения состояния и с точки зрения MVC вынуть контроллер из серверной части и перенести его в браузер:

Клиент поддерживает MVC и содержит всю логику представления, которая разделена на уровне представления, уровне контроллера и уровне служб внешнего интерфейса. После первоначального запуска приложения только данные JSON передаются по проводам между клиентом и сервером.

источник: https://blog.angular-university.io/developing-a-modern-java-8-web-app-with-spring-mvc-and-angularjs/

Другие вопросы по тегам