ASP.NET MVC和Angularjs一起+ ASP.NET Web API

Dan*_*eda 10 c# asp.net-mvc asp.net-web-api angularjs single-page-application

我想知道使用这两个世界的优点和缺点:

  • ASP.NET MVC和Angularjs在一起(没有剃刀,Angularjs会完成这项工作).
  • AngularJS(前端)+ ASP.NET Web API(后端).

我们专注于SPA/Mini-SPA,适用于具有大量服务器端业务规则和计算的中型/大型企业项目.我也专注于安全性.

优点和缺点意见将帮助我在脑海中找到这个问题的依据:

将ASP.NET Web API(后端),ASP.NET MVC和Angularjs一起使用是一个明智的决定吗?

Roh*_*ner 9

是的,将两者结合起来是明智的.显然,根据具体项目,您需要调整最终解决方案中的一些变量.

您所建议的实际上是我们最近2或3个项目的堆栈,根据具体要求提供了一些变体.我们使用过WebAPI + DurandalJS,WebAPI + Knockout ...一切都很好:) AngularJS似乎已经停留在我们公司内部以及社区其他部门(这是决定性的)内部的最长时间.我的因素)

当前的技术堆栈.

                            +------------------------------------+
                            |               Usage                |
  +-------------------------+------------------------------------+
  | AngularJS               | The client app web, or mobile      |
  +-------------------------+------------------------------------+    
  | WebAPI                  | For all your data access needs     |
  +-------------------------+------------------------------------+
  | OAuth & Bearer Tokens   | For Authentication & Authorization |
  +-------------------------+------------------------------------+
  | SQL Server & EF / any   |  Persistence                       |
  | any other noSQL variant |  & Storage                         |
  +-------------------------+------------------------------------+
  | Angular-UI /            |                                    |
  | Angular-Material        | Base UI components                 |
  +-------------------------+------------------------------------+
  | Katana                  | Collection of projects for         |
  |                         | supporting OWIN on MS-Stack        |
  +-------------------------+------------------------------------+
  | CORS                    | Standard for implementing          |
  |                         | cross domain requests              |
  +-------------------------+------------------------------------+
Run Code Online (Sandbox Code Playgroud)

优点:

  • Web App可以很容易地移植到移动设备上(如果以你知道你可能会移动的方式编写)

  • 如果您选择使用其他服务/应用程序,您可以轻松访问API ...而且API很酷(与传统访问机制相比)

  • AngularJS允许强大但结构化的客户端代码(不是没有Angular你不能这样做,但根据我的经验,如果你正确地遵守它们,框架会执行更好的实践)

  • 开始听起来像一个破纪录,但众所周知,AngularJS是超级可测试的

  • 如果你害怕NodeJS和grunt/gulp之类的东西,你可以使用.Net捆绑

    • 不是你必须害怕它(但熟悉>不熟悉)
    • 只需确保客户端代码以Minsafe方式编写
  • Visual Studio实际上非常酷,特别是他们最近专注于开源支持.AngularJS,Node(你可能会在某些时候使用)的很多集成点,显然ASP.Net MVC

缺点:

  • 如果您不熟悉Angular,那么学习曲线会很好

  • 可能重复验证

    • 为了减少往返/回调,显然最好先发送正确的数据.因此,在一些(或大多数)实例中,我们需要在JavaScript中复制一些数据级验证
  • 虽然它可能不适用,并且有点长镜头...我一直在客户端,他们严格要使用所有MS,因为opensource"不太安全",因为人们可以访问框架代码. .. 去搞清楚.因此,请确保他们愿意使用开放源代码的SPA框架(这可能适用于任何其他框架或工具)(以及随之而来的所有内容)

  • 安全性重复.您需要确保保护API和应用程序.(因为两层之间存在脱节)

  • 您需要了解CORS的工作原理,以及如何正确地理解它,因为您的API和Web应用可能不在同一个域/来源上

也.值得一读:

  1. 宁静建筑的利弊

  2. Restful WebAPI与常规控制器(我在设计/理解WebAPI和REST设计时提出的上一个问题)