带有角项目结构的ASP.NET web api

时间:2015-04-02 21:59:55

标签: asp.net angularjs razor asp.net-web-api

第一次使用asp.net webAPI +角项目。从我在网上看过的很多例子中我发现基本上有两种处理视图的方法。

第一个(我在许多教程和课程中看到过) - 仅使用API​​控制器,以便视图由angular生成。这意味着我的项目结构将有一个文件夹'app',它将包含html文件(可能在'view'文件夹中)。路由将使用角度路由完成。我只在项目中有APIControllers(没有常规的Controller对象)。 示例项目:https://github.com/DanWahlin/CustomerManagerStandard

第二种 - 使用控制器生成视图,使用Razor(cshtml文件),并将角度合并到那些(即在cshtml中点击)。角度等没有特殊的“app”文件夹。 示例项目:https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/CRUDOperations

所以,我想知道每种方法的优缺点是什么,何时使用哪种方法。示例项目也很棒。

我只能假设第一种方法更模块化,区分服务器和客户端。然而,使用它意味着我正在丢失剃刀(我甚至需要它吗?)

谢谢!

2 个答案:

答案 0 :(得分:1)

我实际上不得不在几个月前做出这个决定。 这归结为你觉得更舒服的东西。我选择仅进行角度和WebAPI控制。它让我认为真正的关注点分离更容易,角度是你的表示层,webapi是你的服务。这也让您可以自由地对实际的html页面进行压缩/格式化(而不是您真正无法控制的cshtml页面)。

WebAPI的专业版只有可扩展性,您实际上只需要一个网页服务器用于网页,但您可以扩展您的WebAPI,这将允许您WebAPI成为您的api以及你的客户也是如此。

Razor只是一个视图引擎,根据我的经验,角度很好的模板和指令承担丢失剃刀的成本。一旦你掌握了指令,你可能最终会在你的剃刀文件中编写纯HTML,这意味着你会在添加新视图时遇到更多问题。谁想要创建一个新的控制器,新的动作和一个新的视图,然后必须以角度来做。它让服务器提供html文件变得更容易,也更简单,让angular为你做所有的路由和逻辑。

我也相信html文件也会被缓存,所以当您以页面角度导航页面时,您会看到更少的往返行程。

答案 1 :(得分:0)

作为一个在微软商店工作并且几乎所有人都喜欢AngularJS的人,越早离开混合Razor和AngularJS,就越好,特别是如果你想去SPA。

我唯一推荐使用Razor的方法是生成登录页面(可能还有登录页面/管理区域)。它提供了一种很好的方式来提供访问应用程序的身份验证,然后使用Web Api Authorization属性来执行其余的身份验证。