是否必须使用mvp或mvc进行Web开发

时间:2017-04-06 02:37:06

标签: asp.net-web-api

我已经在mvc和mvp上做了一些表面阅读,他们都谈论模型,控制器和演示者。我对这些事情的看法并没有给我足够的理解,所以我想知道使用mvc或mvp对网站开发有多重要,如果必须使用它们中的任何一个,最后是它们的好处。

3 个答案:

答案 0 :(得分:2)

您不能在不使用MVC或MVP 的情况下开发Web应用程序。但他们都在设计模式,并在开发过程中大大有助于维护项目和代码。

MVC的核心是分离演示。分离演示背后的想法是在模拟我们对现实世界的感知的领域对象和我们在屏幕上看到的GUI元素的演示对象之间进行明确划分。域对象应该是完全自包含的,并且在不参考演示文稿的情况下工作,它们也应该能够同时支持多个演示文稿。

主要有3种设计模式:

  1. MVC(模型视图控制器)
  2. MVP(模型视图模式)
  3. MVVM(模型视图模型)
  4. MVC(模型视图控制器)

    MVC模式是一种UI表示模式,侧重于将UI(View)与其业务层(Model)分离。该模式将职责分为三个组成部分:视图负责重新映射UI元素,控制器负责响应UI操作,模型负责业务行为和状态管理。在大多数实现中,所有三个组件都可以直接相互交互,在某些实现中,控制器负责确定要显示的视图。

    模型视图演示者(MVP)

    MVP模式是基于MVC模式的概念的UI呈现模式。该模式将职责分为四个组成部分:视图负责重新呈现UI元素,视图界面用于将演示者与其视图松散耦合,演示者负责视图/模型之间的交互,模型负责业务行为和国家管理。在一些实现中,演示者与服务(控制器)层交互以检索/持久化模型。视图界面和服务层通常用于使演示者和模型的写入单元测试更容易。

    主要优点

    在使用任何模式之前,开发人员需要考虑使用它的优缺点。使用MVC或MVP模式有许多关键的好处(参见下面的列表)。但是,还有一些需要考虑的缺点。最大的缺点是额外的复杂性和学习曲线。虽然这些模式可能不适合简单的解决方案;使用该模式可以大大提高先进的解决方案。我是我的经验,已经看到一些解决方案消除了大量的复杂性,但重新考虑使用任何一种模式。

    • 松散耦合 - 演示者/控制器是UI代码和模型之间的中介。这允许视图和模型彼此独立地发展。

    • 明确分离关注点/责任

      UI(表单或页面) - 负责重新呈现UI元素

      Presenter / controller - 负责响应UI事件并与模型交互

      模型 - 负责商业行为和国家管理 测试驱动 - 通过隔离每个主要组件(UI,Presenter / controller和模型),可以更轻松地编写单元测试。当使用仅使用接口与视图交互的MVP模式时尤其如此。

    • 代码重用 - 通过使用关注点分离/负责任的设计方法,您将增加代码重用。在使用完整的域模型并将所有业务/状态管理逻辑保留在其所属的位置时尤其如此。

    • 隐藏数据访问 - 使用这些模式会强制您将数据访问代码放在数据访问层中。还有许多其他模式通常与MVP / MVC模式一起用于数据访问。其中两个最常见的是存储库和工作单元。 (有关详细信息,请参阅Martin Fowler - 企业应用程序架构模式)

    • 灵活性/适应性 - 通过将大部分代码隔离到演示者/控制器和模型组件中,您的代码库更适合更改。例如,考虑多年来UI和数据访问技术的变化以及我们现有的选择数量。使用MVC或MVP的正确设计解决方案可以同时支持多UI和数据访问技术。

    主要差异 那么MVC和MVP模式之间究竟有什么区别呢。实际上它们之间没有太多差异。这两种模式都侧重于在多个组件之间分离责任,并促进将UI(视图)与业务层(模型)松散耦合。主要区别在于如何实现模式,在某些高级方案中,您需要演示者和控制器。

    以下是模式之间的主要区别:

    1. MVP模式

      • 视图与模型的耦合程度更高。演示者负责将模型绑定到视图。

      • 更容易进行单元测试,因为与视图的交互是通过界面进行的

      • 通常一对一地查看演示者地图。复杂的观点可能有多个演示者。

    2. MVC模式

      • ontroller基于行为,可以跨视图共享

      • 可以负责确定要显示的视图

    3.   

      进一步研究选择最佳模式的主题

      进一步研究并使用术语"扭曲三合会"将导致一些有趣的文章阅读,总是解决你的问题。

      最常听到的结果是:

      1. 您是否开发了 Web应用程序?了解 MVC
      2. 您是否开发了 winform应用程序?了解 MVP
      3. 您是否开发了 WPF应用?了解 MVVM
      4. 您可以在MVC, MVP and MVM Architectures for web development

        上关注它

答案 1 :(得分:1)

在编写Web应用程序时,您绝对不需要使用MVC或MVP框架。人们仍然使用jQuery编写应用程序。然而,许多流行的框架,如角度1,主干和淘汰赛确实使用了模型,视图和/或控制器或它们的某些子集,所以它可能很有用。

至于好处,它归结为可维护性。随着应用程序变得越来越大,如果没有某种总体结构来保持一致性并确保使用良好实践,则很难成功修改。像angular这样的框架通过使用经过验证且易于理解的概念(如MVC)为您提供了开箱即用的功能。如果没有这个,你最终必须提出自己的模式和子系统,虽然可行,但可能需要花费大量的时间和精力。要么是这样,要么你的应用程序在自身重量下屈服。

如果您不熟悉开发,如果没有大型项目的工作,并且看到没有某些结构的事情会变得多么疯狂,那么很难对此有所了解。我不确定你可以在真空中学到什么,或者你现在需要过多地关注自己。最终,你会明白为什么它很重要。

答案 2 :(得分:0)

如上所述,它与代码的易用性有很大关系,但不是全部。

AngularJS等框架允许您通过应用MVC方法来更改构建网站的方式。使用AngularJS时,重要的是将范式从操纵DOM转移到描述所需效果并观察它发生。

使用MVC,每个组件都保持独立,这使得测试它们变得更加容易。这种模式的分离和模块化特性允许更大的灵活性,允许更大的应用程序以更快的速度增长而不会降低质量。

有关AngularJS的精彩教程,请访问:https://m.youtube.com/playlist?list=PLYxzS__5yYQmX2bItSRCqwiQZn5dIL1gt