【问题标题】:In the Model-View-Controller principle, what is the Frontend and what is the Backend?在 Model-View-Controller 原则中,什么是 Frontend,什么是 Backend?
【发布时间】:2012-06-19 11:38:14
【问题描述】:

维基百科说:

MVC 为数据库、用户和 数据处理组件。软件系统的分离 前端和后端简化了开发并分离了维护。

我仍然没有看到模型-视图-控制器原理与前端和后端概念之间的联系。可以将访问数据库的模型视为后端,将视图视为前端吗?

【问题讨论】:

    标签: model-view-controller


    【解决方案1】:

    好的..首先是条款:

    • 前端 - 是对用户可见的部分:HTML、CSS、客户端 Javascript。这一切基本上都是“前端”。在桌面应用程序前端将是 GUI。
    • Backend - 是 invisible 部分。在您的 java、ruby、php 或任何其他服务器端代码的 Web 应用程序中。它可以被解释或编译,因为它的“如何”工作对它的“什么”没有影响。

    如果您阅读GUI Architectures 并总体研究MVC 模式,您就会明白MVC 并不是后端和前端的分离。尤其是涉及到我们用于 Web 应用程序的 MVC-inspired patterns

    MVC 和相关模式的目标是将表示与领域业务逻辑分开。

    以下是 MVC 部分的基本职责:

    • 模型 - 业务逻辑
    • 视图 - 表示逻辑
    • 控制器 - 改变模型和视图的状态(基于用户输入)

    举个例子:

    • twitter 的替代客户端应用程序
    • 使用 OAuth 进行身份验证
    • 用户可以输入不同的搜索词组
    • 通过 Twitter 的 REST API 获取信息
    • 验证数据
    • 解析 JSON 响应
    • 操纵 DOM 来呈现信息

    这一切都可以通过客户端 JavaScript 完成。 你可以让MVC三元组运行“前端”同时,提供REST API的“后端”是一个类似MVC的结构。只有这一次 View 正在生成 JSON 响应,而不是 HTML。

    *结论:您可以在后端和前端使用 MVC 模式。**

    后记

    由于您一直在使用 Rails 构建一些应用程序,因此您对 MVC 的理解可能有些曲解。我之所以这么说是因为,由于 RoR 最初是作为原型框架制作的(请注意所有用于生成一次性代码的脚手架和其他功能),并且由于它的起源,Rails 实际上是在实现一个非常贫乏的 MVP 版本。

    我称之为“贫血”,因为他们削弱了 View (它应该是 MVP 中的被动对象,而不是简单的模板) 和模型层 (是的,它应该是一个复杂的层,而不是 ORM 实例的集合).

    我建议您阅读两篇出版物以更好地掌握该主题:

    第二个是尽可能接近模式的初始定义。这与“GUI 架构”文章一起,应该为您提供一个坚实的基础。而 PoEAA 书(硬读,顺便说一句)会给你扩展它的上下文。

    【讨论】:

    • 太好了,这是一个非常有用的答案!感谢您的链接,它有助于我更深入地了解。这就是重点,我开始使用 Rails 构建应用程序,并继续使用 Rails 作为后端为 iOS 设备构建应用程序。所以我试图了解 Rails 应用程序在 iOS-App 的 Model-View-Controller 模式中所处的位置。
    • 很好的答案,但模型与业务逻辑无关。这只是数据。业务逻辑意味着模型执行的操作并非如此。
    • @Pithikos 模型是一个层。您所说的是 Active Record 实例。那些不是“模型”。它们只是 DB 表抽象。
    【解决方案2】:

    也许下图可以帮到你..

    MVC               Human language    backend/frontend
    ---------------   ---------------   ---------------
    model          -> data           -> backend
    controllers    -> actions        -> backend/frontend (depends on implementation)
    views          -> GUI            -> frontend
    

    【讨论】:

      【解决方案3】:
      • 视图 = 前端
      • 模型 = 后端
      • 控制器 = 前端和后端之间的粘合剂

      【讨论】:

      • 这并不能解释控制器的位置。
      【解决方案4】:

      前端是用户看到的,哪些是视图。后端是控制器和模型。

      【讨论】:

        【解决方案5】:

        在这种情况下,后端传统上是指更深层次的操作系统代码,甚至是用户无法看到/控制的代码。

        前端是用户看到的实际视图。

        【讨论】:

          猜你喜欢
          • 2012-02-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多