混合Angular和ASP.NET MVC / Web API?

我来自使用ASP.NET MVC / Web API,现在我开始使用Angular,但我不清楚正确的方式来混合它们。

一旦我使用Angular,MVC服务器端的概念仍然提供任何价值? 还是应该严格使用Web API来获取angular度HTTP调用的数据?

任何提示你有一个ASP.NET MVC的家伙过渡到Angular会有所帮助

纯Web API

我曾经是ASP.NET MVC的核心,但自从我遇到Angular以来,我没有看到为什么我会使用任何服务器端内容生成框架的原因。 纯粹的Angular / REST(WebApi)给出了一个更加丰富和平滑的结果。 它速度更快,可以让您创build与桌面应用程序非常接近的网站,而不会有任何时髦的黑客入侵。

angular度确实有一点点的学习曲线,但是一旦你的团队掌握了它,你就会在更短的时间内build立更好的网站。 这主要是因为你没有所有这些状态(更less)的问题。

例如,想象一下具有任何传统服务器端框架的向导forms 。 每个页面都需要validation并单独提交。 也许页面的内容依赖于前一页的值。 也许用户按下后退button并重新提交以前的表单。 我们在哪里存储客户的状态? 使用Angular和REST时,所有这些并发症都不存在。

所以…走到黑暗的一边…我们有cookies。

类似的问题

AngularJS与单页面应用程序范例更相关,因此,不会从渲染标记的服务器端技术中受益。 没有任何技术上的理由阻止你一起使用它们,但从实际意义上来说,你为什么要这么做呢?

一个SPA检索它需要的资源(JS,CSS和HTML视图)并自行运行,传回服务以发送或检索数据。 所以,服务器端技术仍然是提供这些服务(以及其他方式,如authentication等)的必要条件,但是渲染部分在很大程度上是不相关的,并不是特别有用,因为这是一个重复的工作,除了MVC在服务器端和Angular在客户端上。 如果您使用的是Angular,那么您需要在客户端上获得最佳结果。 你可以制作Angular post HTML表单,并从MVC操作中检索部分视图,但是你会错过Angular的最好和最简单的function,让你的生活变得更加困难。

MVC非常灵活,您可以使用它来处理来自SPA应用程序的呼叫。 但是,WebAPI更加精细,对于这些服务更容易使用。

我已经编写了许多AngularJS应用程序,其中包括从已经存在的WebForms和MVC应用程序中迁移出来的应用程序,而ASP.NET方面则演变为一个将AngularJS应用程序作为实际客户端来交付的平台,以及托pipe应用程序层客户端通过REST(使用WebAPI)进行通信。 MVC是一个很好的框架,但是它通常在这些应用程序中找不到工作。

ASP.NET应用程序成为基础架构的另一层,其职责限于:

  • 托pipe依赖容器。
  • 将业务逻辑实现连接到容器中。
  • 为JS和CSS设置资产包。
  • 主持WebAPI服务。
  • 强化安全性,执行日志logging和诊断。
  • 与应用程序caching进行性能接口。

另一个关于SPA的好处是它可以增加你的团队的带宽。 一个组可以爆发的服务,而另一个放置在客户端的应用程序。 由于您可以轻松地存根或模拟REST服务,因此您可以在模拟服务上拥有一个完全可行的客户端应用程序,并在完成后换出真正的客户端应用程序。

你不得不在Angular上投资,但是它的收益很大。 由于您已经熟悉MVC,因此您有一些核心概念。

这取决于你正在从事的项目。

如果angularJS是你的新东西,我宁愿select一个小的低风险/压力项目开始,并确保你学习如何以正确的方式做事情(我已经看到许多项目使用Angularjs错误,因为压力,截止date…没有时间以适当的方式学习它,例如使用JQuery或访问控制器内的DOM等)。

如果这个项目是一个绿色的领域,并且你已经有了AngularJS的一些经验,放弃ASP.net MVC和在服务器端去纯粹的REST / WebAPI是有意义的。

如果它是一个现有的项目,你可以select一个复杂的function子集,并构build该页面作为一个单独的angularJS应用程序(例如,你的应用程序是由一大堆标准的简单/中等复杂的基于Razor的页面,但你需要和先进的编辑器/页面,这可能是与AngularJS构build的目标)。