8

我一直在阅读这里的几个问题和有关 MVC 的各种文章,并且可以看到它甚至可以如何应用于 GUI 事件密集型应用程序,例如绘图应用程序。

任何人都可以举出 MVC 可能是一件坏事并且不明智地使用它的情况吗?

编辑:我在这里专门谈论 GUI 应用程序!

4

8 回答 8

27

我在我的网络内核驱动程序中尝试了 MVC。补丁被拒绝。

于 2009-05-25T14:56:51.377 回答
11

我认为你在看它有点倒退。重点不是看你可以在哪里应用 MVC 之类的模式,重点是学习模式并识别何时可以通过应用模式自然地解决你试图解决的问题。因此,如果您的问题空间可以自然地分为模型、视图和控制器,那么它是 MVC 的一个很好的候选者。如果您不能轻易看出您的设计中的哪些部分属于这三类,那么它可能不是合适的模式。

于 2009-05-25T15:13:25.167 回答
4

MVC 对 Web 应用程序很有意义。在 Web 应用程序中,你处理一些数据(在 SA 上:写问题、添加评论、更改用户信息),你有状态(登录用户),你没有很多不同的页面,但有很多不同的内容可以放入那些页面。一个问题页面与一百万个问题。

例如,对于制作 CMS,MVC 是无用的。你没有任何模型,没有控制器,只有一页带有装饰和菜单的文本。问题不再是处理数据 - 现在的问题是正确地提供文本内容。

Tho,CMS Admin可以很好地建立在 MVC 之上,这只是用户部分不会。

对于 Web 服务,您最好使用 REST,我相信它是一种独特的范式。

WebDAV 应用程序也不会从 MVC 中受益匪浅。

Ruby 用于Web 编程的警告是Rails 更适合构建Web 应用程序。我见过许多项目尝试使用 Rails 创建 WebDAV 服务器或内容管理系统 CMS,但都失败了。虽然您可以在 Rails 中创建 CMS,但有更高效的技术可以完成这项任务,例如 Drupal 和 Django。事实上,我想说,如果您正在研究 Java Portal 开发工作,您应该评估 Drupal 和 Django 来代替该任务。

于 2009-05-25T14:58:46.943 回答
2

任何你想加入 3rd 方组件的地方都会使在 MVC 模式中工作变得困难。CMS 就是一个很好的例子。

您获得的每个组件都将具有其“自己的”控制器对象,并且您将无法共享模型的“控制”-> ui 传递。

于 2009-05-25T15:04:23.437 回答
1

我不一定知道 MVC 对于 GUI 应用程序来说真的是个主意。但是有一些替代方案可以说更好(也可以说更糟,这取决于你问谁的意见)。最常见的是MVP。请参阅此处以获取解释: 关于 MVC 和 MVP 但不敢问的所有信息。

尽管我认为如果您正在使用框架或与未考虑 MVC 设计的软件进行交互,则使用 MVC 可能是一个坏主意。

换句话说,这很像比较编程语言。通常没有多少任务可以说一个比另一个更好。它通常归结为程序员的偏好、库的可用性和团队的经验。

于 2009-05-25T15:27:53.060 回答
1

MVC 不应该用于性能至关重要的应用程序中。我不知道随着计算能力的提高这是否仍然适用,但一个例子是呼叫中心应用程序。如果您可以在每次呼叫输入和更新信息时节省 0.5 秒,那么这些节省会随着时间的推移而累积。要从应用程序中获得最后一点性能,您应该使用桌面应用程序而不是 Web 应用程序,并让它直接与数据库对话。

于 2009-05-25T17:06:58.650 回答
0

什么时候是坏事?哪里有另一种更适合您的项目的代码结构。

有无数的项目 MVC 不“适合”,但我看不出它们的列表会有什么好处..

如果 MVC 适合,请使用它,如果不适合,请使用其他东西..

于 2009-05-25T15:05:19.347 回答
-7

MVC 和 ORM 是个笑话……它们仅适用于您的应用程序不是数据库应用程序,或者您希望保持应用程序数据库不可知的情况。如果您使用的是支持存储过程的 RDBMS,那么这是唯一的方法。存储过程是经验丰富的应用程序开发人员的首选方法。MVC 和 ORM 仅由试图销售与这些技术相关的产品或服务的公司推广(例如,微软试图销售 VS)。不要再浪费时间学习 Java 和 C#,而是专注于真正重要的事情,Javascript 和 SQL。

于 2010-08-25T17:13:58.110 回答