我来自使用ASP.NET MVC / Web API,现在我开始使用Angular,但不清楚混合它们的正确方法。
一旦我使用Angular,MVC服务器端概念是否仍然具有任何价值?还是应该严格使用Web API来纯粹获取角度HTTP调用的数据?
对于将ASP.NET MVC转换为Angular的人员,任何提示都将有所帮助
我来自使用ASP.NET MVC / Web API,现在我开始使用Angular,但不清楚混合它们的正确方法。
一旦我使用Angular,MVC服务器端概念是否仍然具有任何价值?还是应该严格使用Web API来纯粹获取角度HTTP调用的数据?
对于将ASP.NET MVC转换为Angular的人员,任何提示都将有所帮助
Answers:
纯Web API
我曾经是ASP.NET MVC的核心人物,但是自从遇到Angular以来,我看不到使用任何服务器端内容生成框架的原因。纯角度/ REST(WebApi)可以提供更丰富,更平滑的结果。它速度更快,可让您建立与桌面应用程序非常接近的网站,而无需任何时髦的骇客。
Angular确实有一些学习曲线,但是一旦您的团队掌握了它,您将在更短的时间内构建更好的网站。主要是因为您不再具有所有这些状态(较少)问题。
例如,想象一下具有任何传统服务器端框架的向导形式。每个页面需要分别进行验证和提交。也许页面的内容取决于上一页的值。也许用户按下了“后退”按钮并正在重新提交以前的表格。我们在哪里存储客户端状态?使用Angular和REST时不存在所有这些复杂情况。
所以...走到黑暗的一面...我们有饼干。
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应用程序成为基础结构的另一层,其职责仅限于:
SPA的另一个好处是,它可以增加团队的带宽。一组可以分解服务,而另一组可以放置在客户端应用程序中。由于您可以轻松地对REST服务进行存根或模拟,因此您可以在模拟服务上拥有一个可以正常运行的客户端应用程序,并在完成后将其替换为真实的服务。
您的确需要在Angular上进行预先投资,但这样做的回报很大。既然您已经熟悉MVC,那么您将了解一些核心概念。
这取决于您正在处理的项目。
如果angularJS对您来说是新事物,我宁愿选择一个低风险/低压力的小型项目开始,并确保您以正确的方式学习如何做事(由于压力,截止日期,我看到许多使用Angularjs的项目都是错误的...缺乏时间以适当的方式来学习它,例如使用JQuery或访问控制器内部的DOM等)。
如果该项目是一个绿色领域,并且您对AngularJS有所了解,那么放弃ASP.net MVC并在服务器端使用纯REST / WebAPI是有意义的。
如果是现有项目,则可以选择一个复杂的功能子集,并将该页面作为单独的angularJS应用构建(例如,您的应用由一大堆基于标准简单/中等复杂性Razor的页面组成,但是您需要高级编辑器/页,这可能是使用AngularJS构建的目标)。
您可以使用Angular框架进行前端开发,即构造视图。它为您提供了一个健壮的体系结构,一旦您学会了它,就会发现它比Asp.net MVC的剃刀视图引擎更具优势。要获取数据,您必须使用WebAPI,现在ASP.Net MVC项目支持即用的WebAPI和MVC控制器。您可以在下面的链接中参考Angular和ASP.Net MVC应用程序开发。
http://hive.rinoy.in/angular4-and-asp-net-mvc-hybrid-application/
当前有两个框架可用于开发角度应用程序的UI组件。我在我工作的一个有角度的项目中都使用了这两个框架。