我正在考虑在我的新项目中使用MVC模式,我可以清楚地看到能够将数据层(模型)放置得更接近演示层(视图)的主要优点,这将允许增加一点在应用速度中。但是,除了性能方面,MVC比视图逻辑数据层类型模式还有其他优势吗?

编辑:对于那些感兴趣的人,我刚刚上传了我为测试MVC使用的样本PHP代码。我故意省略了所有安全检查,以使代码更易于阅读。请不要使它变性太多,因为我知道它可能会更加精致和先进,但仍然可以使用!!!我欢迎您的问题和建议:这是链接: http://www.sourcecodester.com/sites/default/files/download/techexpert/test_mvc.zip

有帮助吗?

解决方案

实际上,被引用为MVC优势的问题的分离实际上也是3层/3层系统的进步。在那里,业务逻辑是独立的,可以从不同的演示层中使用。

一个主要区别是,在经典MVC中,该模型可以回到视图中。这意味着,当数据更新时,模型可以将此数据推回可能的多个视图。主要示例是一个桌面应用程序,其中数据以多种方式可视化。这可以像表格和图形一样简单。首先通过控制器将表中的更改(这是一个视图中的更改)推向模型,然后将其推回图(另一个视图)。然后该图自身更新。

由于台式机开发正在下降,因此许多程序员仅在某些网络版本中与MVC取得了联系,例如通过Java EE中的JSF与MVC保持联系。

在那些情况下,模型几乎从未参考过观点。这是因为Web主要基于请求/响应,并且在向请求提供后,服务器无法发送其他信息。即从模型推向客户端的更新将是毫无意义的。使用反向Ajax/Comet,这正在发生变化,但是许多基于Web的MVC框架仍然无法完全利用它。

因此,在基于Web的MVC的情况下,M,V和C之间的典型“三角形”在那里较少,并且MVC变体实际上比'true'MVC更接近n层模型。

另请注意,某些Web MVC框架在M,V和C之间具有中间管道零件,称为Backing Bean(Java/jsf)或后面的代码(ASP.NET)。在JSF中,控制器是由框架提供的,并且该视图通常不会直接与模型结合,而是将此备用BEAN用作中介。背bean非常苗条,基本上只是将模型的数据预先提取,并将模型特定消息(例如异常)转换为视图特定消息(例如某些人类可读文本)。

其他提示

  • 代码重复使用,
  • 分开关注
  • 层之间的耦合较少,

@bakoyaro和@arjan已经提到

我认为MVC与 “构型”模式. 。 (即“ Ruby on Rails”或Microsofts“ for ASP.NET”)。

我认为这种组合导致 更好,更轻松的代码维护.

首先,它使学习MVC-Framework的学习变得更加困难,因为您必须学习惯例(LA控制器进入控制器文件夹,必须命名为XXXXXXController)

但是,在您了解了惯例之后,维护自己和外国代码更容易。

忘记通过移动到MVC来提高应用速度。我发现最大的好处可以轻松重复使用。一旦移至MVC,就不会依赖数据或实际数据存储。

例如,您有一天可以编写一个servlet,该servlet作为您的演示层,第二天将Web服务写为现有模型和控制器的另一个演示层。如果您想或需要切换DBM,请像明智的一样。由于访问模型与其他所有内容完全分开,因此您只需要重写数据访问对象即可以您的控制器可以处理的方式返回数据。

通过将关注点分为3个不同的部分,您还可以促进真正的单位测试。可以免费测试您的演示层,并反之亦然。

从附带说明,我经常觉得MVC缩写不准确。每当我看到它时,我都会认为 查看 - >控制器 - >模型. 。演示层永远不会有DAO代码,并且该模型将永远不会具有演示逻辑。控制器被迫充当介于两者之间。

在3层将演示文稿与业务和数据访问分开的地方,MVC是一种演示层模式,将模型(数据)与视图(屏幕)和控制器(输入)(输入)进一步分开。

在3层/3层上没有选择MVC。使用它们两个。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top