【问题标题】:Difference between asp.net MVC and MVP? are they both same?asp.net MVC 和 MVP 的区别?他们都一样吗?
【发布时间】:2013-11-28 14:28:39
【问题描述】:

我想知道 asp.NET MVC 和 MVP 之间的区别,它们都是一样的吗? 下面是我参考的架构图。

(图片网址:http://msdn.microsoft.com/en-us/library/ff647859.aspx

我从图中了解到 MVC 和 MVP 之间的主要区别是,在 MVC 中,模型更新视图,而在 MVP 中,演示者更新视图。

但这是我的困惑。下面是一个 asp.net MVC 代码示例。

public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            return View();
        }

    }

这里控制器返回/更新视图,所以现在根据图表它是 MVP

asp.net mvc 和 MVP 类似吗?如果不是有什么区别?有人可以指导我。

【问题讨论】:

  • 那个 MVC 图看起来对我有误导性。
  • 您的问题令人困惑 ASP.Net MVC 是基于 MVC 模式的 frameworkMVP 是一种模式.那么你真的打算把它放在 ASP.Net 的上下文中吗?
  • 我在学习 Asp.net mvc,所以我把它这样说......而不是只有 MVC。
  • 该 MSDN 页面早于 Asp.Net MVC。它来自 2005,适用于 复合 UI 应用程序块,不管是什么...msdn.microsoft.com/en-us/library/ff648900.aspx

标签: asp.net-mvc mvp


【解决方案1】:

实际上 MVP 是 MVC 模式的一个子集。

在您的 asp.net mvc 示例中,控制器不会更新视图,而只是将模型传递给视图,然后视图会根据模型进行更新。

但在 MVP(通常与 Microsoft stack 中的 winforms 和 webforms 一起使用)中,演示者从视图中获取数据,更新模型,当模型更改时,演示者将读取模型并更新视图。

【讨论】:

    【解决方案2】:

    那个 MVC 图看起来对我有误导性。我认为这是一个更生动的架构图:

    这是来自一个 PHP 站点,但在这里您可以清楚地看到视图和控制器之间的关系。

    MVC 和 MVP 之间的区别是微妙的,this question(如上所述)阐明了这些区别。


    那个MSDN page也清楚的说

    此内容已过时,不再维护。它是 提供给仍在使用这些的个人的礼貌 技术......

    我认为这个资源早于 Asp.Net MVC。

    文章本身的名称为 Composite UI Application Block,来自 2005 年。我会去 http://www.asp.net/mvc/ 了解有关 MVC 的更多最新和准确信息。

    【讨论】:

    • 我只将该页面用于图表(它同时具有 MVP 和 MVC)....许多其他页面也显示了类似的图表....顺便说一句,我参考 Pro ASP.NET MVC 4 : 亚当弗里曼的 mvc 书...
    【解决方案3】:

    尝试在不涉及任何技术的情况下理解 MVC 和 MVP 概念。

    ASP.NET MVC 控制器中的操作方法返回ActionResult with View 方法不会破坏任何模式。它只是说控制器功能已经完成,让我们使用 Razor/ASP.NET 语法从标记渲染视图。

    在 ASP.NET 世界中 - ASP.NET MVC 是 MVC 模式的实现。忘记了 Web Client Software factory 是 MVP 实现

    【讨论】:

      【解决方案4】:

      不,它们不一样。它们是用于用户交互的两种不同范式(设计模式)。基于这些范例,ASP.NET 团队开发了两种不同的框架来编写 Web 应用程序。第一个是基于事件的表单编程的ASP.NET Web Forms。第二个是ASP.NET MVC,它基于使用模型视图和控制器(MVC)。

      我想你可以开始阅读here,它是由 ASP.NET 开发团队的一位成员编写的。

      关于具体问题。我认为控制器使用模型更新视图来做到这一点。模型不做任何事情。或者这就是我的理解方式,反正......

      希望我能帮上忙!

      【讨论】:

      • ASP.Net 没有开发这些模式。早在微软接触它们之前,它们就已经存在了。
      • 你是对的。我说“ASP.NET 团队开发了两种不同的框架来编写 Web 应用程序”。我希望我没有暗示微软开发的设计模式。谢谢你的澄清。
      • 但我的困惑是在 MVC 和 MVP 之间,而不是在 asp.net webforms 和 MVC 之间。
      • 是的,这根本不能回答问题。
      • 现在也不准确了模型什么也没做。。是的,模型确实做了一些事情,它保存了数据。
      猜你喜欢
      • 2011-10-20
      • 2012-07-09
      • 1970-01-01
      • 2011-03-14
      • 2011-09-10
      • 1970-01-01
      • 2010-09-05
      相关资源
      最近更新 更多