2015-04-02 66 views
0

第一次使用asp.net webAPI +角度项目。从我在网上看到的很多例子中,我发现基本上有两种处理视图的方法。ASP.NET角色项目结构web api

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

第二种 - 使用控制器生成视图,使用Razor(cshtml文件)和angular(纳入cshtml中单击)。有对角等 示例项目没有特殊的“应用程序”文件夹:https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/CRUDOperations

所以,我想知道什么是每种方法的优点和缺点,并且我什么时候用哪一个。示例项目也很棒。

我只能假设第一种方法是更模块化和区分服务器和客户端。然而,使用它意味着我失去了剃须刀(我是否需要它?)

谢谢!

回答

1

我实际上不得不在几个月前做出这个决定。 这归结于你觉得更舒适。我选择了角度和WebAPI控件。它让我思考问题的真正分离更容易,角度是你的表示层和webapi是你的服务。这也给你自由做压缩/格式化实际的HTML页面(而不是你真正无法控制的cshtml页面)。

一个更亲了WebAPI仅是可扩展性,你真的只需要的网页一个网页服务器,但你可以扩展你的WebAPI,这将允许你WebAPI是你的API,以及你的客户也是如此。

Razor只是一个视图引擎,根据我的经验,角有很好的模板和指令来承担损失剃刀的代价。无论如何,一旦你得到了一堆指令,你可能最终会在你的剃须刀文件中写入纯HTML,这意味着你将有更多的问题添加新的视图。谁想要创建一个新的控制器,新的操作和新的视图,然后必须以角度来实现。它只是让服务器提供html文件变得更容易,更简单,让角度为你做所有的路由和逻辑。

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

0

作为一名在微软商店工作并且几乎所有我的前端都喜欢AngularJS的人,越早离开混合Razor和AngularJS越好,特别是如果您要购买SPA。

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