【问题标题】:Doing MVC or not doing it?做MVC还是不做?
【发布时间】:2010-12-29 18:20:27
【问题描述】:

我是 MVC 结构的新手,我觉得做事更难,因为它是一种新的做事方式。有没有人有 MVC 与页面做事方式的经验。 MVC 的方式现在是神圣的,还是仍然有价值进行普通的面向对象开发(甚至是过程页面 webdev)? MVC 是一种时尚吗?

【问题讨论】:

  • 您是指整个 MVC 范式还是特别是 ASP.NET MVC?
  • 实际上更多的是 MVC。我已经完成了一些 Asp.net mvc 和 php codeigniter,甚至非常简单地涉足了 ruby​​ on rails。

标签: model-view-controller oop


【解决方案1】:

在与 MVC 斗争了一段时间后,我不得不说我现在更喜欢 MVP (Model-view-presenter) 架构。使用 MVP 比 MVC 更容易实现关注点分离、解耦和异步,恕我直言,因为每个 MVC 实现不会以相同的方式拆分概念,每个控制器不会处理相同的事情。

【讨论】:

  • 你在用 PHP 做 MVP 吗?我知道 Python 中的 Django 具有 MVP 范式......但在 PHP 中我不知道这样的事情。
【解决方案2】:

MVC 的优缺点简要列表

优点

  • 可测试
  • 关注点分离 - 促进主要组件之间的解耦
  • 帮助您一次专注于一项任务/领域
  • 自然适合 Web 和桌面交互
  • 非常适合其他设计模式,单一职责 原理等

缺点

  • 可能需要更多代码和努力
  • 可能会降低简单页面的清晰度(在这些情况下,请尝试继续使用简单页面)
  • 需要更多学习

MVC 不仅仅是一种时尚。这是一种非常实用的方法,可以将 Web 应用程序的多个关注点分成可管理和可重用的部分。当然,一开始确实需要一些时间来适应,但是通过有意识地努力将应用程序分解为 MVC 样式可能会非常有益。解决方案通常更简洁,因为它们只需要专注于单个操作或任务。

这也不是一个新想法。自 1979 年 (@Sarfraz Ahmed's link) 以来,它一直以一种或另一种形式出现,并已用于各种网络和桌面平台。

如果您发现自己在使用 MVC 样式实现时遇到问题,请尝试将其分解为正在使用的各个部分或操作,以及它们对应的区域、模型视图或控制器。正如您可能预期的那样,随着时间的推移,这会变得更容易。

祝你好运

【讨论】:

    【解决方案3】:

    MVC 的一大优势(通常)是您创建单体应用程序的可能性要小得多。与 ASP.NET webforms 或 JSF(尽管 JSF 不如 webforms 差)相比,您有一个单一的请求-行为-响应路径。 Web 表单中的小站点很容易成为 Web 表单中无法管理的大混乱,然后您必须开始调整自定义控件,您的团队就会迷失方向。如果您了解 Web 的工作原理,那么 MVC 就很容易……尽管管理状态就在您手中。

    【讨论】:

      【解决方案4】:

      是否使用 MVC 主要取决于您项目的需求。有时我有一些不需要模型的简单东西,但仍然可以从控制器/视图安排中受益。在这些情况下,我可能会使用微框架(对于 PHP 来说,那就是 limonade)甚至更少。我的大部分 Web 项目仍然是 MVC 应用程序。

      我在 1996 年至 1997 年左右开始制作网站,一切都是新事物,从长远来看,什么是好主意或坏主意是没有意义的。大约在 2005 年左右,当我离开军队并重新开始 Web 开发时,在有机设计的代码的老鼠窝中战斗并不是那么愉快。所以当我被介绍到 Ruby on Rails 和 MVC 的概念时,我立刻意识到这是一个改变游戏规则的方式。

      随着越来越多的 Web 项目采用 MVC,它通过提供跨公司和项目的共同基础,为下一代开发人员的生活更轻松、更高效铺平了道路。是的,当从协作脚本的前期简单性转变为页面项目时,MVC 有点难以接受,但任何值得做的事情都不会那么容易,对吧?

      话虽如此,如果您在一种语言的 MVC 方面打下了良好的基础,那么它可以为您学习其他语言提供一个心理共同点。至于 MVC 作为主导框架设计模式会持续多久,软件行业就像一片沙漠,每天都在变化,伟大的想法被更好的想法所掩盖(XHR 用于 websockets,嵌入式对象用于原生音频/视频标签),但我认为任何最终取代 MVC 的东西都会有些相似,因为如果只有极少数人理解一个想法,那么它的好坏并不重要。

      【讨论】:

        【解决方案5】:

        这是从 ASP.NET WinForms -> ASP.NET MVC 的角度来看的,但是,ASP.NET MVC 是我第一次听说 MVC 模式(新手程序员),我想如果我以前发现过另一种语言的 MVC ASP.NET MVC,我会离开 ASP.NET/C# 并转到那个框架。

        学习和使用 MVC 让我成为了一个更好的程序员。我一直觉得 ASP.NET 在我和代码(HTML 或 C#)之间设置了一个透明的屏障。

        我一直想突破这个障碍,而 MVC 让我可以完全控制我的应用程序中的所有内容,同时强调关注点的分离(这让编码变得无限有趣,并且不那么令人头疼)。

        对我来说,MVC 是正确的选择。

        【讨论】:

        • 也许你应该试试 Codeigniter - codeigniter.com。这也是我对 PHP 更感兴趣的原因,因为那里的页面可以像网页一样工作。
        • 我最初是一个 ASP.NET 人,所以 ASP.NET MVC 是合乎逻辑的举动。但是,如果我在发现 ASP.NET MVC 之前发现了众多 PHP MVC 框架(Cake、CodeIgniter、Symfony 等)之一,那么我现在肯定会成为一名 PHP 开发人员。 MVC 范式正是我在 Web 开发中一直在寻找的,独立于编程语言。
        【解决方案6】:

        如果我们谈到 ASP.NET MVC,the framework page itself 有一个关于这一点的讨论:

        ASP.NET MVC 框架具有以下优点:

        • 通过将应用程序划分为模型、视图和控制器,可以更轻松地管理复杂性。
        • 它不使用视图状态或基于服务器的表单。这使得 MVC 框架非常适合希望完全控制应用程序行为的开发人员。
        • 它使用前端控制器模式,通过单个控制器处理 Web 应用程序请求。这使您能够设计一个支持丰富路由基础设施的应用程序。有关详细信息,请参阅 MSDN 网站上的前端控制器。
        • 它为测试驱动开发 (TDD) 提供了更好的支持。
        • 它适用于需要对应用程序行为进行高度控制的大型开发人员和 Web 设计人员团队支持的 Web 应用程序。

        基于 Web 表单的框架具有以下优势:

        • 它支持通过 HTTP 保留状态的事件模型,这有利于业务线 Web 应用程序开发。基于 Web 窗体的应用程序提供了数百个服务器控件支持的数十个事件。
        • 它使用页面控制器模式,为各个页面添加功能。有关详细信息,请参阅 MSDN 网站上的页面控制器。
        • 它使用视图状态或基于服务器的表单,可以更轻松地管理状态信息。
        • 它非常适合希望利用大量可用组件进行快速应用程序开发的小型 Web 开发人员和设计人员团队。
        • 一般来说,应用程序开发不太复杂,因为组件(页面类、控件等)是紧密集成的,并且通常比 MVC 模型需要更少的代码。

        【讨论】:

        • 是的,我已经从 ASP.NET 转向 PHP 了。实际上,我在业余时间更多地参与了 codeigniter。
        • 我个人远离 PHP,因为任何大到需要 MVC 的东西。 RoR 或 ASP.NET MVC 都是很好的解决方案,具体取决于您的后端需求,许多 Java MVC 解决方案也是如此。
        【解决方案7】:

        I think this exhaustive list provides answers to all your questions about MVC.

        既然你没有提到语言,如果你的意思是 php 中的 mvc,那么这也是一个很棒的 mvc 新手的资源:

        http://phpro.org/tutorials/Model-View-Controller-MVC.html

        【讨论】:

          猜你喜欢
          • 2012-08-19
          • 1970-01-01
          • 2012-07-03
          • 1970-01-01
          • 2011-11-03
          • 1970-01-01
          • 2011-02-18
          • 2010-10-03
          • 2016-11-10
          相关资源
          最近更新 更多