Смешивание Angular и ASP.NET MVC/Web api?

Я использую ASP.NET MVC/Web API, и теперь я начинаю использовать Angular, но я не знаю, как правильно их смешивать.

Как только я использую Angular, концепции MVC по-прежнему предоставляют любую ценность? Или я должен строго использовать Web API только для получения данных для HTTP-вызовов Angular?

Любые советы, которые у вас есть для ASP.NET MVC, переход на Angular будут полезны

Ответ 1

Чистый веб-интерфейс

Раньше я был довольно хардкорным с ASP.NET MVC, но так как я встречался с Angular, я не вижу одной причины, почему я буду использовать любую структуру генерации содержимого на стороне сервера. Чистый Angular/REST (WebApi) дает более богатый и более гладкий результат. Это намного быстрее и позволяет создавать сайты, которые приближаются к настольным приложениям, без каких-либо фанковых хаков.

Angular имеет небольшую кривую обучения, но как только ваша команда справится с этим, вы создадите гораздо лучшие сайты за меньшее время. В основном это связано с тем, что у вас нет всех этих состояний (меньше).

Например, представите форму мастера с любой традиционной структурой на стороне сервера. Каждая страница должна быть проверена и отправлена ​​отдельно. Возможно, содержимое страницы зависит от значений с предыдущей страницы. Возможно, пользователь нажал кнопку "Назад" и повторно отправил предыдущую форму. Где мы сохраняем состояние клиента? Все эти осложнения не существуют при использовании Angular и REST.

Итак... подходите к темной стороне... у нас есть куки.

Подобный вопрос

Ответ 2

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

SPA извлекает необходимые ему ресурсы (JS, CSS и HTML) и запускается самостоятельно, обмениваясь данными с службами для отправки или получения данных. Таким образом, серверная технология по-прежнему необходима для предоставления этих услуг (а также других средств, таких как аутентификация и т.п.), но части рендеринга в значительной степени неактуальны и не особенно полезны, поскольку дублирование усилий, за исключением MVC, на стороне сервера и Angular делает это на клиенте. Если вы используете Angular, вы хотите получить его на клиенте для достижения наилучших результатов. Вы можете сделать Angular отправку HTML-форм и получить частичные представления из действий MVC, но вы не сможете использовать самые лучшие и легкие функции Angular и сделать вашу жизнь более трудной.

MVC довольно гибкий, и вы можете использовать его для обслуживания вызовов из приложения SPA. Тем не менее, WebAPI более точно настроен и немного проще в использовании для таких сервисов.

Я написал несколько приложений AngularJS, в том числе пару, которая перенесена из ранее существовавших приложений WebForms и MVC, а аспект ASP.NET развивается в сторону платформы для доставки приложения AngularJS в качестве фактического клиента и для хостинга уровень приложения, с которым клиент связывается через REST (с использованием WebAPI). MVC - прекрасная структура, но обычно она оказывается без работы в таких приложениях.

Приложение ASP.NET становится еще одним слоем инфраструктуры, где его обязанности ограничены:

  • Устанавливает контейнер зависимостей.
  • Подключите реализацию бизнес-логики в контейнер.
  • Настройте пакеты активов для JS и CSS.
  • Услуги хоста WebAPI.
  • Обеспечьте безопасность, выполните протоколирование и диагностику.
  • Взаимодействие с кэшами приложений для производительности.

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

Вам нужно вложить средства вперед на Angular, но он окупается. Поскольку вы уже знакомы с MVC, у вас есть преимущество над некоторыми из основных концепций.

Ответ 3

Это зависит от проекта, над которым вы работаете.

Если angularJS для вас что-то новое, я предпочел бы выбрать небольшой проект с низким уровнем риска/давления, чтобы начать работу и убедиться, что вы научились правильно поступать (я видел много проектов, использующих Angularjs неправильно из-за давления, сроков... нехватка времени, чтобы изучить его надлежащим образом, например, с помощью JQuery или доступа к DOM внутри контроллеров и т.д.).

Если проект является зеленым полем, и у вас есть некоторый опыт работы с AngularJS, имеет смысл отказаться от ASP.net MVC и на стороне сервера пойти на чистый REST/WebAPI.

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