行业中使用的MVC模式是否很多?什么都是炒作?[关闭]


16

我是一名学生,但希望很快能进入软件行业。关于MVC软件模式,似乎有很多炒作。我注意到PHP框架通常是MVC,那么非Web语言又如何呢?对于我的硕士论文(C ++),我选择了MVC模式,因为它很好地将逻辑和用户界面分开了。

在工业上使用很多吗?如果是这样,主要原因是什么?还有哪些其他竞争性的流行设计?


13
MVC只是关注点分离的流行实现。SoC是重要的,而不是MVC本身。
雷诺斯2011年

1
您可能需要查看Martin Fowler的“企业应用程序体系结构目录”,以查找可能适合更特定应用程序的MVC的一些替代方案/变体:martinfowler.com/eaaCatalog/index.html
Mchl 2011年

3
还要注意,许多标记为“ MVC”的东西实际上并不是真正的MVC,而是遵循(较新的)多层应用程序模型:数据存储-逻辑-表示(无论如何,恕我直言,更有意义)。
tdammers 2011年

如果MVC可以告诉您任何信息,那么它早于Web编程。
杰里米(Jeremy)

Answers:


6

MVC得到了很多炒作和使用,因为它是其领域非常有用的模式。

MVC鼓励分离关注点。如果操作正确,可以简化开发。显示和/或修改数据存储中包含的数据的任何应用程序都将具有MVC功能,但不能分开。不拆分组件可能会在关注点之间引入不良耦合。

使用MVC,在不修改控制器或模型的情况下更改应用程序的前端接口(视图)应该相对容易。如果您需要允许从智能手机,Web和一个或多个应用程序进行访问,则可能需要这样做。

对于大型团队,MVC可以更好地利用资源,因为开发人员可以在一个层中承担任务,而在其他层中可能不需要很多技能。根据协调资源的开销,这可能更有效。


12

是的,它经常使用。iPhone / iPad应用程序都设置为MVC。最近,我看过很多asp.net MVC应用程序。

MVC可以提供更大的灵活性,并真正鼓励开发人员为每个功能编写单独的代码。使维护更加容易。


苹果公司的Cocoa框架(在MacOS X上使用)是NextStep的演进,可追溯到1980年代后期。NextStep,Cocoa和Cocoa Touch(在iOS中使用)都广泛使用MVC。
Caleb 2012年

4

目前正在流行。

永远不要低估炒作的力量。很快,有人会提出一些更新,更新颖,更易于理解的东西,每个人都将MVC视为一切邪恶的根源(发生在Web表单上),或者会有太多人使用它,以至于资深的老手们将其谴责为“管理公牛* * ”(发生在XML上)。否则将转向其他模式,因为MVC“对于我需要解决的超难问题​​还不够灵活”(静态类型语言与动态语言)。

归根结底,MVC是一种框架方法,适用于Web编程引发的许多问题。它会存在一段时间,但我想大多数人使用它的原因是要符合流行语。

编辑

请注意:我很清楚MVC模式已经存在多年了,并且已经在asp.net MVC之前的框架上使用。我只是说目前很流行,因此它比其他方法更具吸引力。我将MVC用于我的所有个人项目,并且也一直在商业项目中使用它(我是.net开发人员)。

这不是咆哮。


7
-1表示:“当下”,除非您考虑将Smalltalk或Java / Swing的开始视为当下的一种技术,否则MVC太老了。
keppla 2011年

4
除了“此刻”是相当准确的;直到最近我才意识到MVC几乎没有用完,除了Java世界。直到Rails流行起来时,其他地方才使用它。
韦恩·莫利纳

4
我遇到的大多数GUI-Frameworks(非html)都使用MVC,在过去的十年中,它似乎并没有“几乎不使用”。
keppla 2011年

1
实际上,MVC已经在整个宇宙的某些地方被MVP炒作了。
汤姆·安德森

3
就个人而言,在ASP.NET MVC还未成为概念之前,我就很讨厌Webforms。有时,事物之所以流行,是因为它们实际上在大多数情况下是最好的选择-是的,它们可能会被更新,功能更强大的事物所替代,但是那又如何呢?那是进步,不是炒作。
亚伦诺特,2011年

3

根据我的经验,它没有得到应有的使用。与某些替代方案相比,它是一种更好的模型,但是在最近几年中,它只是获得了很多宣传。因此,存在很多遗留问题,人们害怕转换为MVC或害怕将MVC用于将来的工作,因为它不在他们的舒适范围内。


1

我认为您会发现Stack Exchange系列都在MVC上运行


太棒了,不知道+1
ale

1

由于.NET在行业中被广泛使用,因此ASP.NET MVC在Web应用程序中赢得了很多关注。

Microsoft Web应用程序从经典ASP演变为基于Web窗体的ASP.NET(以使VB6 Win Forms开发人员已经可以轻松地将其技能转换为Web的新领域)。

不幸的是,Web表单是基于状态的,而HTTP(基于Web的表单)是无状态的,因此由于需要诸如视图状态之类的东西,因此存在许多讨厌的解决方法。

ASP.NET MVC允许将WebForms开发人员的技能转换为具有良好SoC并已投入大量精力进行可测试的Web框架(由于WebForms并不是非常可测试的,因此MVC团队投入了大量精力努力进入框架)。

就是说,这不是万能药/银子弹,并且像任何框架一样,有很多时候使用它,有些时候不使用它。希望人们毕竟不会使用它来尝试解决所有问题:当您唯一的工具是锤子时,每个问题都像钉子。


1

这只是历史上的片刻,因为MVC是几个非常非常简单的概念,而恰好是从几个特定的​​框架中大肆宣传的,这些框架在其营销资料中都突出体现了它。它还碰巧吸收了软件开发中出现的许多良好实践。这适用于伪状态开发(例如HTTP);如此之多,以至于我只知道Web世界中使用的另一种真正不同的“模式”-千差万别的ASP.Net WebForms基于事件的模型。

老实说,我很惊讶这里有足够的论文。

但是要回答你的问题。WebForms是Web-pie的一小部分,主要在Intranet业务应用程序中使用。没有实际模式的意大利面条编码页面可能构成了相当数量的维恩图,但是几乎所有框架结构都至少受到MVC的影响,因此您的简短回答将是肯定的


@geroge:谢谢您的回答。哈..不用担心,我论文中包含的软件使用MVC ..它实际上不在MVC上!
ale
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.