Одностраничное приложение (угловое 2) для бизнес-приложений
В эти дни я сталкиваюсь с фундаментальной проблемой - назовем это архитектурным решением.
Поэтому мы с моей командой создаем типичные бизнес-приложения (lob)-web-приложения для своей компании. Для меня lob означает особенно это:
- Много взаимодействия с пользователем (ввод данных, объекты CRUD, отображение данных, агрегирование данных, статистика и отчеты, проверка и т. Д.)
- Очень ограниченный (пользователи должны входить в систему, пользователи имеют разные уровни разрешений, они могут вносить различные изменения в разные объекты, отображать различные отчеты и т. Д.)
Для примера, давайте возьмем обычный процесс утверждения: мне нужен новый ноутбук, поэтому я перехожу в "ressources-webApp" и создаю новую заявку на покупку. Мой босс получает уведомление и должен подтвердить мой запрос. На следующем этапе соответствующий отдел должен купить ноутбук и закончить мою заявку.
Я знаю, что это простой пример "Привет, мир", и в реальной жизни вы использовали бы для этой цели существующее программное обеспечение (SAP или что-то в этом роде), но оно довольно хорошо описывает мой вариант использования: управляемый данными и очень строгий (Я вижу все заявки моего отдела, но только изменяю или удаляю свои, я не должен видеть страницу для утверждения или вызывать api для утверждения, мой начальник должен видеть только запросы своих сотрудников, но не для сотрудников другого отдела, ни мой начальник, ни я не должны видеть страницу или быть в состоянии закончить заявку и так далее).
В настоящее время мы используем ASP.NET MVC и WebAPI в сочетании с angularjs 1. Для каждого "действия" (страницы или представления) существует mvc-контроллер, который прослушивает определенный маршрут и возвращает соответствующее представление. Каждый вид ссылается на определенный угловой контроллер. Также каждый вид может состоять из разных "частичных видов" (компонентов или элементов управления). Для обработки данных angular-controller вызывает webAPI-контроллеры, которые также прослушивают определенные маршруты и обрабатывают запрос (GET/POST/PUT/DELETE). Каждый контроллер (mvc и webAPI) проверяет токен авторизации каждого http-запроса, который приходит в cookie, если пользователю разрешено открывать страницу или вызывать действие.
Теперь мне интересно, как это сделать в SPA-приложении с Angular 2. Angular 2 звучит для меня довольно интересно и имеет некоторые преимущества по сравнению с Angular 1, поэтому я хочу попробовать Angular 2. Кажется, что с Angular 2 вы только может создать SPA-приложение (по сравнению с "классическим" MPA-приложением, о котором я упоминал выше, где каждая страница поступает с сервера и содержит угловой контроллер).
Вообще я не склонен к SPA, но я не уверен, как обращаться с вопросами безопасности, упомянутыми выше.
Кроме того, существуют и другие распространенные проблемы со SPA: не работают кнопки возврата из браузера, нет возможности ввести определенный URL-адрес непосредственно в браузер, нет закладки и т. Д.
Итак, есть ли у вас какие-либо советы, советы или лучшие практики для меня? Считаете ли вы, что SPA - это хороший "шаблон" для веб-приложений? И если да, как бы вы справились с проблемами безопасности, а также с другими общими проблемами SPA?
С наилучшими пожеланиями, Алекс