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


86

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


4
好吧...如果您要将AngularJS锚定到ASP.NET ...您实际上并没有给出公平的比较。就像您要从Angular中删除Javascript一样,这并不是它应有的实现方式。Angular是您的客户端框架,当您使用很少的服务器端模板:simple-talk.com/blogs/2013/10/16/…时,效果最佳。诸如身份验证之类的事情很有道理,但不要使用剃刀,而是直接使用.NET并为其创建Angular API层。
Brian Vanderbusch 2014年

3
我认为您真正需要的只是带有ASP.NET WebAPI的AngularJS。我认为这两者兼具。我尝试将MVC与AngularJS混合使用,遇到问题时感觉不是很好,因此建议不要陷入陷阱。我对这种方法怀念的一件事是带有Razor引擎的MVC可以提供的基于设备的视图。必须有一种方法可以克服这个问题,但是我还没有足够的经验。
基兰2014年

与Angular一起工作了短短几个月(尽管似乎永远如此),我再也不会回Razor了。您与Angular的合作越多,对它的了解就越多-灵活性和强大功能,有时感觉就像魔术一样。我应该说,Web API至少在POST形式上不能很好地与Angular一起使用,但是可以解决。对于C#程序员来说,这不是一个容易的过渡,因为javascript不是强类型语言。但是,当您克服这一障碍时,您将欣赏Angular。
佛罗里达G.

即使在模板引擎中,剃刀也是一件可怕的事情。与任何模板引擎(Jade,车把,剃须刀等)相比,使用Angle时,您会注意到生产率的显着提高。使用提供JSON(可以是Web-api,node-express或PHP)和后端的前端的后端。只是要指出的是,淘汰赛远没有棱角
分明

1
@BrianVanderbusch不太确定您在说什么。后端一点都不重要。可能是任何东西。他说他将使用ASP.NET作为后端,并使用angular作为客户端前端。Angular仍然需要调用服务器以获取数据。这与不对Angular进行公平的比较无关。
user441521 '16

Answers:


103

我的2美分。我个人更喜欢纯HTML视图,完全成角度的前端以及Web API / EF / SQL Server后端,基本上没有Razor。Razor是帮助程序员呈现HTML的抽象,如今,每个人都得出结论,删除这些抽象是一个更好的主意,因此ASP.NET从Web窗体到MVC的演变。对于开发人员而言,这并不困难。可以处理HTML并使用有角度的前端,此外,这使UI设计人员的工作变得更加轻松,他们拥有纯HTML和JSON / Javascript,无需了解MVC,Razor,控制器和操作。我们曾经在MVC上完全工作,在我们的最新项目中,我们移到了Web API后端和有角度的前端,并且我们注意到UI设计器的生产率已大大提高。


3
我想补充一点,有了角度,您就可以动态更新模板,这真是太棒了
Willem D'Haeseleer 2014年

4
是的,在开发更具动态性和响应性的前端与开发成本方面,确实没有竞争。
Mohammad Sepahvand 2014年

@ user189756使用Web API方法时如何将HTML页面交付给客户端?
Yoav

@Yoav这是一个旧答案,但当时它是带有Single控制器的MVC主机。
Mohammad Sepahvand '16

1
@Yoav精确地。但我要补充一点,另一个答案也很好,特别是考虑到SEO之类的东西。
Mohammad Sepahvand '16

53

我相信你无法比较。AngularJS是一个单页应用程序(SPA)框架,而ASP.Net MVC使用的是一个在页面之间导航的标准模型。是否要建立SPA由以下因素决定:

  • 你要搜索引擎优化。这些JS富框架中的大多数对有限的支持。
  • 如何将应用程序构造为SPA或多个SPA。
  • 从一种类型安全的语言C#到JavaScript编程是一个挑战。
  • 学习AngularJS并有效地使用它。

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

看到这个答案可以将AngularJS与Parse.com一起使用吗?以获得更多的上下文。


12
“ ...而ASP.Net MVC使用的是在页面之间导航的标准模型。” 这是完全错误的。使用剃刀的MVC应用程序可以很容易地设计为SPA。
2015年

7
AngularJS不限水疗中心,可以很好地构建一个多页的网站具有角与深层链接一起....
Giridhar卡尼克

3
AngularJS不是SPA。您可以像SPA一样使用它,但这不是自动的或不必要的。为了拥有路由,必须添加路由依赖项ng-route。AngularJS令人难以置信,可以成为一个很棒的SPA,但是说AngularJS = SPA只是愚蠢的。
汤姆·斯蒂克

5
TypeScript是类型安全js的不错选择。
凯尔合资公司

9
AngularJS由Google制作。如果缺少SEO,那么他们在做错事。
Worthy7'6
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.