架构比MVC更适合networking应用程序?

我一直在学习Zend和我的新工作的MVC应用程序结构,并发现使用它只是困扰我的原因,我不能把我的手指。 然后,在我的学习过程中,我遇到了MVC:No Silver Bullet以及MVC和Web应用程序这个主题的播客 。 播客中的这个人对MVC作为一个Web应用程序架构提出了很好的build议,并且钉了很多让我头疼的东西。

然而,问题仍然存在,如果MVC不适合Web应用程序,那么是什么?

这一切都取决于你的编码风格。 这就是秘密: 在PHP中编写经典的MVC是不可能的。

任何声称你可以欺骗你的框架。 事实上,框架本身甚至不能实现MVC – 你的代码可以。 但是,我猜这不是一个好的营销宣传。

要实现一个经典的MVC,它需要你有持续的模型开始。 此外,模型应该告知查看有关更改(观察者模式),这在您的香草PHP页面也是不可能的(如果您使用套接字,您可以做一些接近古典MVC的东西,但这对于真实的网站是不切实际的)。

在Web开发中,你实际上有4个其他的MVC解决scheme:

  • Model2 MVC :View从模型中请求数据,然后决定如何渲染它以及使用哪些模板。 控制器负责改变视图和模型的状态。

  • MVVM :控制器被换出一个ViewModel,它负责View的期望和模型的逻辑之间的转换。 查看来自控制器的请求数据,该数据转换请求以便Model可以理解。

    大多数情况下,当你无法控制视图或模型图层时,可以使用它。

  • MVP (什么PHP框架调用“MVC”):演示者从模型请求信息,收集它,修改它,并将其传递到被动视图。

    为了探索这种模式,我会build议你从这本出版物开始。 这将详细解释它。

  • HMVC (或PAC):与Model2不同,具有控制器执行子控制器的能力。 每个人都有自己的M,V和C三人组合。你可以获得模块化和可维护性,但在性能上有一定的打击。

无论如何。 底线是:你还没有真正使用过MVC。

但是如果你对所有的MVC结构感到厌倦,你可以看看:

  • 事件驱动架构
  • n层架构

然后总是有DCI的范例,但是它在应用到PHP时有一些问题(你不能用类似PHP的类来强制转换)。

根据我的经验,从MVC体系结构获得的好处远远超过了开发Web时的成本和明显的开销。

对于从一个复杂的MVC框架开始的人来说,做出分离三层的额外努力,以及对于什么属于哪个层次(有些事情是显而易见的,其他人可能是相当边界的并倾向于讨论的好话题)。 我认为,从长远来看,这个成本是值得的,尤其是如果您希望您的应用程序在合理的时间内保持增长或维持。

我曾经有过这样的情况:创build一个新的API以允许其他客户端连接到一个现有的Web应用程序的代价非常低,因为这些层是很好的分离的:业务逻辑并没有连接到这个表示,这是蛋糕。

在目前的MVC框架生态系统中,我相信你们的里程可能差别很大,因为这些原则是常见的,但是Zend,Django,RoR和SpringMVC之间还是有很多不同之处的。

如果真的有其他好的替代scheme,那么我对这个答案很感兴趣。

对不起,轻微的文字墙!

我认为这将取决于你想要做什么,亲自。 品红使用MVC相当成功,它使得添加新function或修改现有的相当容易。

当然,如果你正在试图做一些相当简单的事情,那么使用MVC体系结构可能会过度。

这是所有的偏好。 我曾与XTemplates和Smarty等老结构合作过,现在转向Codeigniter和Kohona。 我非常喜欢他们,他们在网上所做的一切都很好。 对于手机应用程序,我可以设置控制器来执行数据拉取所需的function。 在Linux世界和Windows World中工作,用于构buildASP.NET网站我没有看到使用MVC旁边build立网站的其他方式。 在Visual Studio中的Web应用程序项目仍在使用,但我不喜欢。 通过Visual Studio的MVC项目非常易于使用和设置。 你可以右键点击你的控制器方法并自动创build视图。 在每个结构中都有一个好的和坏的,但是开发人员可以使用任何符合他们需要的东西。