我正在学习Zend及其MVC应用程序结构以适应我的新工作,但我发现使用它让我感到困扰,原因我无法具体说出。在学习过程中,我发现了一些文章,例如MVC: No Silver Bullet和这个播客,关于MVC和Web应用程序的主题。播客中的人很好地反驳了MVC作为Web应用程序架构的优点,并且切中了我所纠结的问题。
然而,问题仍然存在:如果MVC并不是Web应用程序的好选择,那么什么是好的选择呢?
我正在学习Zend及其MVC应用程序结构以适应我的新工作,但我发现使用它让我感到困扰,原因我无法具体说出。在学习过程中,我发现了一些文章,例如MVC: No Silver Bullet和这个播客,关于MVC和Web应用程序的主题。播客中的人很好地反驳了MVC作为Web应用程序架构的优点,并且切中了我所纠结的问题。
然而,问题仍然存在:如果MVC并不是Web应用程序的好选择,那么什么是好的选择呢?
Model2 MVC: 视图从模型请求数据,然后决定如何呈现它以及使用哪些模板。控制器负责更改视图和模型的状态。
MVVM: 控制器被 ViewModel 替换,ViewModel 负责在视图期望和模型逻辑之间进行翻译。视图请求控制器的数据,控制器将请求翻译成模型可以理解的形式。
通常情况下,当您对视图或模型层都没有控制权时,会使用此方法。
MVP(PHP 框架称之为“MVC”):Presenter 从模型请求信息,收集、修改并将其传递给被动视图。
要了解这种模式,我建议您先阅读 this publication。它会详细解释。
HMVC(或 PAC):与 Model2 不同,控制器具有执行子控制器的能力。每个子控制器都有自己的 M、V 和 C 三元组。您可以获得模块化和可维护性,但需要付出一些性能代价。
无论如何,最重要的是:您实际上并没有使用 MVC。
但是,如果您已经厌倦了所有类似于 MVC 的结构,可以尝试以下内容:
然后,总会有DCI范例,但在应用于PHP时存在一些问题(你不能将PHP转换为类..除非使用丑陋的黑客手段)。
这完全是个人喜好。我曾经使用过像XTemplates和Smarty这样的旧结构,现在转向了Codeigniter和Kohona。我非常喜欢它们,并且它们对我在Web上所做的一切都非常有效。对于手机应用程序,我可以为需要执行其数据提取的功能设置控制器。在Linux世界和Windows世界中工作,对于构建ASP.NET网站,我认为除了使用MVC之外别无选择。Visual Studio中的Web应用程序项目仍在使用,但我不再喜欢使用它们。通过Visual Studio的MVC项目非常易于使用和设置。您可以右键单击控制器方法并自动创建视图。在每个结构中都有好坏之分,但开发人员可以根据自己的需求使用任何东西。
我认为这取决于你个人想要做什么。Magenta相当成功地使用了MVC,这使得添加新功能或修改现有功能变得相当容易。
当然,如果你想要制作一些相对简单的东西,采用MVC架构可能会过度设计。
:)
- halfer