In the Model-View-Controller principle, what is the Frontend and what is the Backend?

后端 未结 5 451
陌清茗
陌清茗 2020-12-23 17:43

Wikipedia says:

MVC provides front and back ends for the database, the user, and the data processing components. The separation of software systems

相关标签:
5条回答
  • 2020-12-23 18:04
    • views = frontend
    • models = backend
    • controllers = glue between frontend and backend
    0 讨论(0)
  • 2020-12-23 18:05

    Maybe the figure below can help..

    MVC               Human language    backend/frontend
    ---------------   ---------------   ---------------
    model          -> data           -> backend
    controllers    -> actions        -> backend/frontend (depends on implementation)
    views          -> GUI            -> frontend
    
    0 讨论(0)
  • 2020-12-23 18:15

    OK.. first the terms:

    • Frontend - are the parts, which are visible to users: HTML, CSS, client-side Javascript. It all is basically "frontend". In a desktop application frontend would be the GUI.
    • Backend - is the invisible part. In web applications that is your java, ruby, php or any other serverside code. It can be either interpreted or compiled, because "how" it works has no impact on "what" it is.

    If you read GUI Architectures and research the MVC pattern in general, you will understand that MVC is not about separation of backend and frontend. Especially when it comes to MVC-inspired patterns, that we use for web applications.

    The goal of MVC and related patterns is to separate presentation from domain business logic.

    Here are the basic responsibilities of MVC parts:

    • Model - business logic
    • View - presentation logic
    • Controller - changing state of model and view (based on user input)

    Let's take an example:

    • alternative client application for twitter
    • uses OAuth for authentication
    • user can input different search phrases
    • takes information via Twitter's REST API
    • validates data
    • parses the JSON responses
    • manipulates DOM to present the information

    This all can be done with client-side JavaScript. You can have MVC triad running "frontend"! At the same time, the "backend" which provides REST API is an MVC-like structure. Only this time the View is generating JSON responses, instead of HTML.

    *Conclusion: You can use MVC pattern both on backend and frontend.**

    Post Scriptum

    Since you have been building some applications with Rails, your understanding of MVC might be a but distorted. The reason I say this is because, since RoR was initially made as a prototyping framework (notice all the scaffolding and other features for generating throw-away code), and because of its origin, Rails is actually implementing a very anemic version of MVP.

    I call it "anemic", because they nerfed both View (it should be a passive object in MVP, not a simple template) and Model Layer (yes, it is supposed to be a complicated layer, not a collection of ORM instances).

    I would recommend for you to read two publications to get a much better grasp on the subject:

    • Patterns of Enterprise Application Architecture.. mandatory reading for serious developers
    • A Description of the Model-View-Controller User Interface Paradigm in the Smalltalk-80 System

    The second one is as close as you can get to initial definition of pattern. That, together with "GUI Architectures" article, should provide you a solid footing on the subject. And the PoEAA book (hard read, btw) would give you context in which to expand it.

    0 讨论(0)
  • 2020-12-23 18:16

    The front end is what the user sees which are the views. The back end are the controllers and the model.

    0 讨论(0)
  • 2020-12-23 18:21

    In this case, backend traditionally means the deeper OS code or even your code that is not being seen/controlled by the user.

    The frontend is the actual view being seen by the user.

    0 讨论(0)
提交回复
热议问题