ASP.NET MVC 5 против AngularJS / ASP.NET WebAPI [закрыто]

86

В настоящее время я оцениваю модель программирования для создания будущих веб-приложений в моей компании. Поэтому я буду выбирать между ASP.NET MVC 5 (с Razor Views) и AngularJS с ASP.NET WebAPI. Каковы преимущества / недостатки этих двух моделей программирования?

битмаглер
источник
4
Что ж ... если вы собираетесь привязать AngularJS к ASP.NET ... вы не совсем честно сравниваете его. Это похоже на то, что вы хотите убрать Javascript из Angular, а это просто не так, как должно было случиться. Angular предназначен для использования в качестве фреймворка для клиента и лучше всего работает, когда вы используете очень мало шаблонов на стороне сервера: simple-talk.com/blogs/2013/10/16/… . Такие вещи, как аутентификация и тому подобное, имеют смысл, но оставьте без внимания и просто перейдите к .NET и создайте с его помощью уровень API для Angular.
Брайан Вандербуш
3
Я думаю, что вам действительно нужен просто AngularJS с ASP.NET WebAPI. Я думаю, что в нем есть лучшее из обоих миров. Я пробовал смешивать MVC с AngularJS, и это было не очень приятно, когда я столкнулся с проблемами, поэтому я бы посоветовал не попадать в эту ловушку. Одна вещь, которую мне не хватает в этом подходе, - это представления на основе устройств, которые может предоставить MVC с движком Razor. Должен быть способ преодолеть это, но у меня еще недостаточно опыта.
Kiran
Проработав с Angular всего несколько коротких месяцев (хотя кажется, что это навсегда), я никогда не вернусь к Razor. Чем больше вы работаете с Angular, тем больше цените его - гибкость и мощь, иногда это кажется волшебством. Я должен сказать, что веб-API не очень хорошо работает с Angular, по крайней мере, в форме POST, но это можно решить. Это непростой переход для программиста на C # с точки зрения синтаксиса, поскольку javascript не является строго типизированным языком. Но когда вы преодолеете это препятствие, вы по достоинству оцените Angular.
Флорида Дж.
Razor - ужасная вещь даже среди движков шаблонов. Вы заметите резкое увеличение производительности при использовании angular над любым движком шаблонов (Jade, руль, бритва и т. Д.). Используйте бэкэнд, который обслуживает JSON (может быть web-api, node-express или PHP) и угловой интерфейс.
Кстати
1
@BrianVanderbusch Не совсем понимаю, о чем вы говорите. Бэкэнд вообще не имеет значения. Это могло быть что угодно. Он говорит, что будет использовать ASP.NET в качестве бэкэнда и angular в качестве клиентского интерфейса. Angular по-прежнему нужно обращаться к серверу за данными. Это не имеет ничего общего с тем, что Angular не дает справедливого сравнения.
user441521

Ответы:

103

Мои 2 цента. Я лично предпочитаю чистые HTML-представления, полностью угловатый интерфейс вместе с серверной частью Web API / EF / SQL Server, в основном без Razor. Razor - это абстракция, помогающая программистам обрабатывать HTML, в наши дни все приходят к выводу, что удаление этих абстракций - лучшая идея, отсюда и эволюция ASP.NET от веб-форм к MVC и т. Д. Разработчикам не так уж сложно добраться до справляется с HTML и использует угловой интерфейс, кроме того, это упрощает работу дизайнеров пользовательского интерфейса, у них есть чистый HTML и JSON / Javascript, им не нужно разбираться в MVC, Razor, контроллерах и действиях. Раньше мы полностью работали над MVC, в нашем последнем проекте мы перешли на серверную часть веб-API и интерфейс angular, и мы заметили, что производительность нашего дизайнера пользовательского интерфейса значительно улучшилась.

Мохаммад Сепахванд
источник
3
И я хотел бы добавить к этому, с angular вы можете динамически обновлять свои шаблоны, что, очевидно, здорово,
Виллем Д'Хазелер
4
Да, когда дело доходит до разработки более динамичного и отзывчивого интерфейса по сравнению со стоимостью разработки, конкуренции действительно нет.
Мохаммад Сепахванд
@ user189756 как вы доставляете HTML-страницы клиенту при использовании подхода веб-API?
Yoav
@Yoav Это старый ответ, но в то время это был хост MVC с одним контроллером.
Мохаммад Сепахванд
1
@ Йоав Точно. Но я добавлю, что другой ответ тоже отличный, особенно с учетом таких вещей, как SEO.
Мохаммад Сепахванд
53

Я считаю, что сравнивать нельзя. AngularJS - это структура одностраничного приложения (SPA), тогда как ASP.Net MVC использует стандартную модель, в которой можно перемещаться между страницами. Хотите ли вы построить СПА, решают такие факторы, как

  • Вы хотите SEO. Большинство из этих JS-фреймворков имеют ограниченную поддержку.
  • Как вы можете структурировать свое приложение как SPA или несколько SPA?
  • Переход от типобезопасного языка C # к программированию на JavaScript является сложной задачей.
  • Изучение AngularJS и эффективное его использование.

Мы используем стандартное представление бритвы MVC 5 для настройки начальных представлений AngularJS, поэтому вы даже можете объединить их вместе, если это необходимо.

Смотрите этот ответ. Можете ли вы использовать AngularJS с Parse.com? чтобы получить больше контекста.

Чандермани
источник
12
«... тогда как ASP.Net MVC использует стандартную модель, в которой можно перемещаться между страницами». Это просто ложь. Приложения MVC - используя бритву - могут быть очень легко разработаны как SPA.
Сэм,
7
AngularJS не ограничивается SPA, вы вполне можете создать многостраничный веб-сайт с angular вместе с глубокими
ссылками
3
AngularJS - это не SPA. Вы можете использовать его как SPA, но это не является автоматическим или необходимым. Придется добавить в зависимость маршрутизации ng-route, чтобы даже иметь маршрутизацию. AngularJS невероятен и может быть отличным SPA, но просто глупо говорить, что AngularJS = SPA.
Том Стикель
5
TypeScript - хороший вариант для безопасного типа js.
Kyle JV
9
AngularJS был разработан Google. Если ему не хватает SEO, они делают что-то не так.
Worthy7 09