ASP.NET MVC 5与AngularJS/ASP.NET WebAPI的比较

87

我目前正在评估公司未来创建Web应用程序的编程模型。因此,我将在ASP.NET MVC 5(使用Razor视图)和AngularJS与ASP.NET WebAPI之间做出决定。这两种编程模型的优缺点是什么?

我目前正在评估编写公司未来Web应用程序的编程模型。所以我需要在ASP.NET MVC 5 (使用Razor视图) 和 AngularJS with ASP.NET WebAPI之间进行选择。这两种编程模型各有优劣,你能告诉我它们分别是什么吗?

4
如果你打算将AngularJS与ASP.NET集成在一起,那么这并不是一个公正的比较。这就好像你要将Angular中的JavaScript拿出来一样,这并不是它被设计的方式。Angular旨在成为客户端的框架,在很少使用服务器端模板的情况下发挥最佳作用:https://www.simple-talk.com/blogs/2013/10/16/angularjs-on-top-of-asp-net-moving-the-mvc-framework-out-to-the-browser/。像认证之类的东西是有意义的,但是请将Razor留出,并直接使用.NET为Angular创建API层。 - Brian Vanderbusch
3
我认为你真正需要的只是AngularJS和ASP.NET WebAPI,这两个结合起来最好。我曾尝试将MVC与AngularJS混合使用,但在遇到问题时体验并不好,因此建议不要陷入这种困境。这种方法让我想念设备基础视图(device based views)在MVC中使用Razor引擎提供的功能。肯定有一种方法可以克服这个问题,但我还没有做足实验。 - Kiran
在使用Angular仅短短几个月后(尽管似乎已经很长时间了),我再也不会回到Razor了。你越是使用Angular,就越能欣赏它的灵活性和强大性,有时候感觉就像魔法一样。我应该说Web API与Angular不太兼容,至少在表单提交方面如此,但这可以解决。对于C#程序员来说,语法上的转换并不容易,因为javascript不是一种强类型语言。但是当你克服这个障碍时,你会更加欣赏Angular。 - Florida G.
Razor即使在模板引擎中也是一件可怕的事情。当使用Angular而不是任何模板引擎(Jade、Handlebar、Razor等)时,您会注意到生产力的显着增加。使用一个服务于JSON的后端(可以是Web-API、Node-Express或PHP)和一个Angular前端。还要注意,Knockout远不如Angular好...祝一切顺利... - Giridhar Karnik
1
@BrianVanderbusch 不太确定你在说什么。后端根本不重要,可以是任何东西。他说他将使用ASP.NET作为后端,使用Angular作为客户端前端。Angular仍然需要向服务器发出数据调用。这与不公平地比较Angular无关。 - user441521
@BrianVanderbusch - 这就是问题所在。Angular与.NET API,而不是Angular与.NET WebForms或MVC。 - Don Cheadle
2个回答

102

我的看法是,我个人更喜欢纯HTML视图,完全采用Angular作为前端,Web API / EF / SQL Server作为后端,基本上没有Razor。 Razor是一种帮助程序员呈现HTML的抽象概念,现在每个人都得出结论,去除这些抽象概念是更好的想法,因此ASP.NET从Web Forms到MVC等的发展。 开发人员掌握HTML并使用Angular作为前端并不困难,而且这使UI设计师的工作更容易,他们拥有纯HTML和JSON / Javascript,无需了解MVC,Razor,控制器和操作。 我们曾经完全依赖MVC进行开发,在我们最新的项目中,我们转向了Web API后端和Angular前端,我们注意到我们的UI设计师的生产力大大提高了。


3
我想补充一点,使用Angular可以动态更新模板,这显然是非常棒的。 - Willem D'Haeseleer
4
是的,当涉及到开发更具动态响应性的前端与开发成本之间的比较时,确实不存在竞争。 - Mohammad Sepahvand
@Yoav 这是一个旧答案,但当时它是一个带有单个控制器的MVC主机。 - Mohammad Sepahvand
@user189756 的回答非常有用 :). 所以基本上你使用了MVC引擎来提供布局页面,其余的站点导航则是使用angular路由和ng-view指令在布局页面中处理的?还是我完全偏离了轨道? - Yoav
1
@Yoav 确切地说。但我要补充的是,另一个答案也非常出色,特别是考虑到 SEO 等因素。 - Mohammad Sepahvand
显示剩余2条评论

54

我认为你不能进行比较。AngularJS是单页应用程序(SPA)框架,而ASP.Net MVC使用标准模型,在其中一个页面之间导航。是否要构建SPA取决于因素,例如

  • 您是否需要SEO,大多数这些JS框架都有受限的支持。
  • 如何将应用程序结构化为SPA或多个SPA。
  • 从类型安全语言C#到JavaScript编程是一项挑战。
  • 学习AngularJS并有效地使用它。

我们使用标准的MVC 5 Razor视图设置初始的AngularJS视图,因此如果需要,您甚至可以将它们组合在一起。

请参见此答案Can you use AngularJS with Parse.com?以获得更多上下文。


12
“…而ASP.Net MVC使用标准模型,在其中一个可以在页面之间导航。”这是不正确的。使用Razor的MVC应用程序可以很容易地被设计成单页应用程序(SPA)。 - user3230660
7
AngularJS不仅适用于单页应用程序,您也可以使用它来构建具有深度链接的多页网站。请注意,这里涉及翻译成中文。 - Giridhar Karnik
3
AngularJS不是单页应用程序(SPA)。您可以像使用SPA一样使用它,但这不是自动的也不是必需的。必须添加路由依赖项ng-route才能进行路由。AngularJS非常棒,并且可以成为出色的SPA,但是把AngularJS等同于SPA是很愚蠢的。 - Tom Stickel
5
TypeScript是安全的JavaScript类型选择。 - Kyle J V
9
AngularJS 是由 Google 开发的。如果它在搜索引擎优化方面有缺陷,那么他们就做错了什么。 - Worthy7
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接