【问题标题】:ASP.NET MVC or ASP.NET Web API + AngularJS [closed]ASP.NET MVC 或 ASP.NET Web API + AngularJS [关闭]
【发布时间】:2015-07-17 19:23:20
【问题描述】:

我在 MVC、Web API 和 AngularJS 这三种技术方面都有一定的经验。

但我单独使用 MVC + jQuery,单独使用 Web API + AngularJS。

我发现 some articles 关于混合 MVC + AngularJS,但实际上我没有明白这一点:为什么我需要混合它们?

所以我现在的问题是: - 混合“MVC + AngularJS”而不是“Web API + AngularJS”的优缺点

编辑:如何通过混合 MVC + Angular 获得最好的世界? 或者通过使用 Web API +Angular 我不会错过任何东西(我认为是这种情况)? 或者如果我决定单独使用 Web API + Angular,我会错过 MVC 中的什么,尤其是当我以 SPA 为目标时?

【问题讨论】:

    标签: c# .net asp.net-mvc angularjs asp.net-web-api


    【解决方案1】:

    我不确定这样的问题是否有正确答案,因为大多数时候使用的技术都与特定的业务需求有关。

    如果您正在开发仅注册用户(或少数人)可访问的后台 Web 应用程序,则使用 WebAPI + Angular 可在速度、性能和响应能力方面提高整体用户体验。

    如果您正在开发一个主要针对“访客用户”、需要 SEO、需要索引、具有复杂的可用性要求等的网站,那么您应该忘记与单页应用程序相关的所有很酷的东西(我相信大多数 WebAPI + Angular 应用程序)并切换到使您能够满足特定需求的工具。

    我认为您不应该考虑 MVC + Angular 与 WebAPI + Angular 之间的差异 - 问题是除了 MVC + jQuery 应用程序之外还要使用 Angular。如果您的视图中有很多逻辑(当然不是业务逻辑)并且希望避免将数据绑定到一大堆 jQuery 对象,那么需要 Angular 并让您的生活更轻松。 Angular 核心没有任何路由功能,所以说它只能用于 SPA/SPI 应用程序有点愚蠢。

    对于我的大多数项目,我使用 jQuery 来操作 DOM 和 Angular 来操作数据。

    【讨论】:

      【解决方案2】:

      使用 MVC + Angular 优于 Web API + Angular 的主要优点是,您的服务器可以在将视图发送到客户端之前直接操作视图中的 html 标记。在 Web API 的情况下,服务器只生成一个 json 序列化模型,视图完全是 Angular 的关注点。

      另一个更喜欢 MVC 方法的原因是,如果您不想使用 Angular 的全部功能。例如,您可能会选择使用 MVC 进行路由,而不是 Angular 路由提供程序。

      MVC + Angular 方法的一个缺点是您的 html 标记将包含混合的 Angular 和 Razor 代码。这可能会降低它的可读性,并且任何研究它的人都必须能够使用两种语言。

      另外,如果您最终只使用了一小部分 angular,这可能是一个很好的迹象,表明您可以改用更简单的 javascript 框架。例如,如果你只使用模型绑定,你可以使用Knockout

      最后,您可能会考虑将 MVC 和 Web API 与 Angular 一起使用,以获得两全其美的效果。例如,您可以将 MVC 视图用于与 SEO 相关的标记,并使用 Web API 来公开您的模型。

      【讨论】:

      • 我会说这是一个相当简单的赞成和反对观点?
      • @BenjaminPaul 请随时提供答案来详细说明。
      • 在第一段中您提到 MVC 的主要优点是您的服务器可以在将视图中的 html 标记发送到客户端之前直接对其进行操作,但是您没有提到它的简洁之处那? (除了您在答案末尾已经提到的 SEO 观点)
      • @BornToCode,很好,我想这可能是一个完整的答案,因为在很多情况下服务器端处理优于客户端。其他一些示例包括预渲染 HTML 以加快初始加载时间并且不会向客户端公开关键业务逻辑的能力。
      【解决方案3】:

      您确实可以只使用 WebAPI + AngularJS。如果您从头开始构建,则不需要 MVC。你可以提供一个静态的index.html 来启动你的AngularJS应用程序并从那里获取它。

      我过去做过类似的项目,但也做过项目,我们还决定使用 AngularJS 和 WebAPi 开发一个 MVC 应用程序。有了这个,我们在 webapp 中创建了几个 SPA。我想我可能在 .NET Rocks 的某个地方听说过“SPA 口袋”这个词!

      因此,如果您需要显示静态数据,只需在 MVC 中快速将一些东西放在一起。如果有一个使用大量用户交互的页面,请使用简单的控制器 + 视图来提供它,并通过 AngularJS 和 WebApi 连接所有行为。 简而言之:它允许您使用“两全其美”的方法,您可以使用 MVC 快速显示静态数据,并利用 AngularJS,以防您有一个非常互动的页面。

      【讨论】:

        猜你喜欢
        • 2014-05-27
        • 1970-01-01
        • 2014-03-15
        • 2014-06-02
        • 2015-01-03
        • 2014-05-29
        • 2013-02-15
        • 2016-05-17
        • 1970-01-01
        相关资源
        最近更新 更多