做MVC还是不做?

时间:2009-12-24 08:15:07

标签: model-view-controller oop

我是MVC结构的新手,觉得完成任务比较困难,因为这是一种新的做事方式。有没有人有MVC与页面做事方式的经验。 MVC的方式是现在这样做的圣洁还是仍然有价值做普通的面向对象开发(甚至是程序页面webdev)? MVC是一种时尚吗?

7 个答案:

答案 0 :(得分:6)

MVC的利弊简要列表

<强>赞成

  • Testablily
  • 分离关注点 - 促进主要组成部分之间的脱钩
  • 帮助您一次专注于一个任务/区域
  • 自然适合网络和桌面互动
  • 适合其他设计模式,单一责任 原则等。

<强>缺点

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

MVC不仅仅是一种时尚。这是一种非常实用的方法,可将Web应用程序的多个关注点分成可管理和可重用的部分。虽然它确实需要一些人习惯,但是有一些有意识的努力打破你的应用程序,MVC风格可能是非常有益的。解决方案通常更简洁,因为它们只需要专注于单一操作或任务。

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

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

祝你好运

答案 1 :(得分:2)

如果我们谈论ASP.NET MVC,the framework page itself就这一点进行了讨论:

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

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

基于Web窗体的框架具有以下优势:

  • 它支持通过HTTP保留状态的事件模型,这有利于业务线Web应用程序开发。基于Web窗体的应用程序提供了数百个服务器控件支持的许多事件。
  • 它使用页面控制器模式,为各个页面添加功能。有关详细信息,请参阅MSDN网站上的页面控制器。
  • 它使用视图状态或基于服务器的表单,这可以使管理状态信息更容易。
  • 适用于希望利用大量可用于快速应用程序开发的组件的Web开发人员和设计人员团队。
  • 通常,应用程序开发的复杂性较低,因为组件(Page类,控件等)紧密集成,通常需要的代码少于MVC模型。

答案 2 :(得分:2)

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

我在1996-1997左右开始制作网站,一切都是新的,从长远来看,没有什么可能是好的或坏的想法。大约在2005年,当我离开军队并重新开始进行网络开发时,通过有机设计代码的老鼠巢进行战斗并不是那么有趣。所以当我介绍Ruby on Rails和MVC的概念时,我立即认识到这是一个改变游戏规则的人。

随着越来越多的网络项目越来越多地采用MVC,它通过提供跨公司和项目的共同点,为下一代开发人员的生活铺平了道路,使其更容易,更高效。是的,从合作脚本的前期简单性到页面项目,MVC有点难以接受,但是任何值得做的事情都不会那么容易吗?

尽管如此,如果你在一种语言中获得MVC的良好基础,它可以为你提供学习其他语言的心理共同点。至于MVC作为主导框架设计模式的持续时间,软件行业就像沙漠一样,日常事物发生变化,好的想法变得更好(XHR用于websockets,嵌入式对象用于原生音频/视频标签),但我认为无论什么最终毁灭者,MVC都会有些相似,因为如果只有很小一部分人理解它,那么一个想法是多么重要并不重要。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

这是来自ASP.NET WinForms - &gt; ASP.NET MVC透视,然而,ASP.NET MVC是我第一次听说MVC模式(noob程序员),我想如果我在ASP.NET MVC之前用另一种语言发现MVC,我会离开ASP.NET / C#并进入该框架。

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

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

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

答案 5 :(得分:0)

MVC(一般情况下)的一大优势是,您创建单片应用程序的可能性要小得多。你有一个请求 - 行为 - 响应途径,而不是ASP.NET webforms或JSF(虽然JSF没有webforms那么糟糕)。对于webforms中的小型站点来说,很容易成为webforms中难以管理的混乱,然后您必须开始剔除自定义控件并且您的团队丢失了。如果您了解网络的运作方式,MVC很容易......虽然您可以随时掌握状态。

答案 6 :(得分:0)

在与MVC斗争了一段时间之后,我不得不说我现在更喜欢MVP(模型 - 视图 - 演示者)架构。使用MVP比使用MVC,IMHO更容易实现关注点分离,解耦和异步,因为每个MVC实现都不会以相同的方式拆分概念,每个控制器都不会处理相同的事情。