【问题标题】:Is The Web's version of MVC different than traditional MVC?Web 版本的 MVC 与传统的 MVC 有什么不同?
【发布时间】:2010-10-18 16:54:24
【问题描述】:

我已经在 Web 上完成了大量关于 MVC 的工作,我们正在我的 OOP 课程中学习它。我看到了一些差异,但我不知道这是因为 Web 版本的 MVC 模式与传统模式不同,还是我误解了它。

据我了解,模型(您的平面文件、RDBMS 等)是一个通用的数据存储对象。视图(浏览器、HTML 等)是用户与之交互的内容,控制器在用户操作和数据之间进行调解。控制器是最特定领域的部分,它管理视图,告诉模型它需要什么,并告诉视图要显示什么。

在类中,我们有与我刚刚描述的视图相匹配的视图,模型包含视图列表,以便它可以在数据更改时更新它们,控制器只是将用户的操作映射到对模型的调用和特定对象(它们本身可能要求模型更新视图)。最终发生的情况是,大部分业务逻辑都在模型中,并且与正在编写的模拟或应用程序密切相关,而控制器则被简化为命令和方法之间的映射工具。

您对此有何看法?

【问题讨论】:

    标签: model-view-controller oop


    【解决方案1】:

    在我的理解中,Web MVC 模式中的控制器只是模型和视图之间的桥梁,它们只是从模型中获取数据并将其传递给视图。 Model 和 View 相互独立,从不互相交谈。

    【讨论】:

    【解决方案2】:

    在非 Web 界面中,控制器处理来自键盘和鼠标等输入,根据这些输入选择要渲染的视图以及要在模型中进行的更改。视图和模型可以更紧密地联系起来,因为视图可以直接向模型实体注册回调以获取更改通知,从而直接根据模型的更改进行更新,而不是由控制器更新。

    在网络世界中,视图必须与模型更加分离。它必须通过控制器动作进行操作,因为它无法直接访问模型(在呈现并交付给浏览器之后)。尽管控制器必须处理的唯一“输入”是浏览器请求,但控制器在此环境中扮演着更大的角色。从某种意义上说,过去与非 Web MVC 中的视图发生的耦合被转移到了代表它的控制器。由于没有来自模型的回调来响应(让我们暂时忘记“推送”技术),更多的业务代码被合并到控制器中,因为它是对业务流程建模的自然场所,尽管可能不是验证。

    【讨论】:

      猜你喜欢
      • 2016-03-23
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      相关资源
      最近更新 更多