【问题标题】:What is the difference between MVC in Angular JS and MVC in ASP.NET or Spring MVC?Angular JS 中的 MVC 和 ASP.NET 或 Spring MVC 中的 MVC 有什么区别?
【发布时间】:2015-09-25 04:46:47
【问题描述】:

我正在尝试了解现代 Web 应用程序架构。在 ASP.NET MVC 中,所有业务逻辑类都在 Model 中,Controller 接受并引导用户请求。如果我使用它,是否可以使用本身是 MVC 架构但所有业务逻辑都在控制器中的 Angular JS 和模型只是 POJO。 Angular JS 能否仅与 Web API 2 一起使用,它从 RESTful 服务获取数据并在客户端进行所有操作?哪种架构最常用?

【问题讨论】:

  • 你会发现this question很有用。总结一下:有很多可能的组合,选择适合你需要的。
  • 在我看来,ASP.net 关注管理与应用程序业务逻辑的交互,Angular 关注管理用户体验(UI)。这些不是相互竞争的目标,Angular 可以用作支持服务器的 SPA,或用作每个页面上的新应用程序,为服务器繁重的工作流程提供支持。

标签: asp.net-mvc angularjs asp.net-mvc-4 asp.net-web-api


【解决方案1】:

和其他设计模式一样(单例、工厂、工厂方法)MVC 也是一种设计模式,我们可以在任何技术中使用,例如(Java、 .net、PHP)或任何客户端站点脚本。 Angular JS 中的 MVC 与 ASP.NET 和 Spring MVc 中的 MVC 没有区别

【讨论】:

    【解决方案2】:

    在 ASP.NET MVC 中,所有的业务逻辑类都在 Model 中,Controller 接受并引导用户请求

    这不是真的。模型(又名 ViewModel)应该是 ASP.NET MVC 中的普通(“POCO”)数据容器。业务逻辑应该来自控制器使用的层,但在较小的应用程序或重构之前,控制器是比(视图)模型更合适的选择。

    Angular JS 能否仅与 Web API 2 一起使用,它从 RESTful 服务获取数据并在客户端进行所有操作?哪种架构最常用?

    不,您可以通过从控制器操作返回 JsonResults 来将 ASP.NET MVC 与 Angular JS 一起使用。也就是说,WebAPI 是一个更好/更合适的选择。当然,您也可以将 Angular 与许多其他通过 http(s) 返回 JSON 的非 Microsoft 工具一起使用(例如 node、ruby、java 等)。

    为了更直接地回答您的实际问题,两者的主要区别在于一个是用于服务器的 MVC 模式,另一个是用于浏览器的 MVC 模式。 Angular 实际上喜欢称其为“MVW”模式,其中“W”代表“Whatever”。

    【讨论】:

    • 这是一个非常笼统的陈述“这不是真的。模型应该是 ASP.NET MVC 中的普通(“POCO”)数据容器。业务逻辑应该出现在控制器操作中,或者在另一层中控制器消耗的。” ...在我看来,控制器不应该包含业务逻辑,“模型”不应该总是简单的 poco 对象......
    • “在 ASP.NET MVC 中,所有的业务逻辑类都在 Model 中,而 Controller 接受并引导用户请求”
    • @BenjaminPaul 我同意控制器不应该包含业务逻辑,并且逻辑更合适地属于控制器使用的层。然而,在面向 Web 的 MVC 模式(如 ASP.NET MVC)的上下文中,“模型”实际上也应该是“视图模型”,用于将数据从控制器传递到视图。所以真的,M、V 和 C 层都不应该包含任何业务逻辑,只应该包含表示数据和逻辑。
    • 感谢@danludwig 澄清...我只是指出您的陈述可能具有误导性。
    【解决方案3】:

    在我看来,您混淆了两种截然不同的技术;一种是服务器端(ASP.NET MVC),一种是客户端(AngularJS)。

    两者当然可以同时使用,因为两者都不依赖于另一个存在。而且,IIRC,NuGet 上有一个脚手架模块,可以帮助从一个到另一个绑定(从您的 ASP.NET POCO 对象创建 JS 对象)。

    话虽如此,您没有理由需要同时使用两者。您可以其中一种或另一种,两者兼而有之,或者完全引入一种不同的技术(KnockoutJS 等)?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2011-01-03
      • 2011-05-06
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多