Spring Boot REST архитектура - PullRequest
0 голосов
/ 12 мая 2018

В последнее время я разрабатываю загрузочное приложение Spring с интерфейсом Angular 5, и я немного запутался в его архитектуре. Меня учили писать репозитории, сервисы и контроллеры весной и следовать шаблону MVC. Я начал писать документацию для приложения, и я пытаюсь описать архитектуру. Так как я думаю, что View является приложением Angular, C состоит из классов контроллера, и я описал третий уровень как логику buisniss, которая состоит из сущности и классов обслуживания. Но что такое модель на самом деле? Удалось ли мне следовать шаблону MVC? Кроме того, у меня есть controlleradvice, классы исключений и классы безопасности, которые выполняют аутентификацию и авторизацию с использованием jwts, но я думаю, что эти классы полностью исключены из MVC.

Я искал объяснение, но, похоже, не нашел его. Может ли кто-нибудь объяснить это мне? Спасибо!

UPDATE

В общем, я не понимаю, как пружинные классы + угловые соответствуют требованиям шаблона MVC

Например, это одна из первых диаграмм в интернете при поиске пружинных слоев, но, как я вижу, они отличаются от MVC

введите описание изображения здесь

Ответы [ 3 ]

0 голосов
/ 12 мая 2018

Я работаю над тем же проектом с angular в качестве внешнего интерфейса и весенней загрузкой в ​​качестве бэкэнда, и я все еще немного запутался в его архитектуре, как и вы, но мне, наконец, пришлось принять модель MVC, так как я на самом делеиспользование контроллеров, определение моделей и видов рендеринга (результаты json).

Очевидно, что ваш интерфейс использует CBA (компонентную архитектуру, а ваш бэкэнд использует шаблон MVC, поскольку Spring MVC встроен в загрузочную пружину, поэтому он фактическииспользует ту же логику. Вот краткое изображение того, как пружинная загрузка отправляет между контроллерами и обрабатывает запросы, вы можете рассматривать ваш сервлет-диспетчер как промежуточное ПО между вашим интерфейсом и вашим бэкэндом (но имейте в виду, что он встроен в загрузочный контейнер пружины).) enter image description here

0 голосов
/ 13 мая 2018

Как уже упоминалось в комментариях, и ваш сервер с Spring boot, и ваш интерфейс с Angular можно рассматривать как разные приложения, каждое из которых следует шаблону проектирования Model-View-Controller.

Вы также опубликовали скриншот трехуровневая архитектура .Этот тип архитектуры говорит вам только о том, как структурировать ваш код.Как правило, MVC-часть вашего приложения находится в пределах уровня представления (на вашем скриншоте это называется веб-уровнем).

Итак, если вы посмотрите на свое бэкэнд-приложение, вы можетеопределить следующие части:

  • Уровень данных / Уровень репозитория: Репозитории
  • Уровень бизнеса / Уровень обслуживания: Услуги
  • Уровень представления / Веб-уровень: модель-представление-контроллер + диспетчер
    • модель : все, что вы предоставляете в своих услугах (может быть DTO)
    • Вид : структура / отображение JSON
    • Контроллер : Контроллеры пружины

И для вашего интерфейса выможет также идентифицировать их:

  • Уровень данных : HTTP-вызовы
  • Бизнес-уровень : Услуги Angular
  • Уровень представления : Компоненты + Маршрутизатор
    • Модель : Все, что вы предоставляете в своих услугах (вероятно,структура, аналогичная той, которую вы выставляете в своем бэкэнде)
    • Вид : шаблоны
    • Контроллер : Компоненты

Overview

Это немного упрощено и, вероятно, не то, с чем все согласятся.

0 голосов
/ 12 мая 2018

Angular - это SPA, одностраничное приложение.Он содержит все: модель (изменение бизнес-данных), представление (шаблоны с HTML) и контроллер (ваши обработчики кликов и других событий в ваших компонентах).

Серверная часть Spring является расширением модели,для выполнения дальнейшего преобразования данных и их хранения в базе данных.

Model-View-Something (есть также MVVM и деривации) - это паттерн, исходящий из настольных приложений, но на самом деле он не подходитМир SPA.А контроллер в MVC часто рассматривается как избыточный даже в настольных приложениях (потому что он просто делегирует вещи и не играет такой большой роли, как View и Model).

Важно знать, когда вы работаете с Angular.скорее Компонент-образец.Он действителен в Angular, React, Vue и даже на SSR-фреймворках, таких как Vaadim.Компонент состоит из фрагмента кода HTML и скрипта, манипулирующих этим HTML.И компоненты могут вкладываться друг в друга, обеспечивая иерархическую архитектуру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...